Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] session.use_cookies ohne root abschalten!

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] session.use_cookies ohne root abschalten!

    Moin,

    also, ich habe folgende Einstellungen in der PHP.ini:

    Code:
    session.use_cookies----------------On--------On
    session.use_only_cookies----------Off--------Off
    Das Problem, die Sessionweitergabe funktioniert nicht, wenn man Cookies deaktiviert hat.
    Gibt es eine Möglichkeit, wenn Cookies deaktiviert sind, session.use_cookies abzuschalten?
    Ich würde es ja generell abschalten, aber leider habe ich kein Rootzugriff.
    session.use_only_cookies ist ja aus, also müsste es doch auch irgendwie anders gehen, oder?

    wilko

  • #2
    http://de.php.net/manual/de/function.ini-set.php

    Kommentar


    • #3
      Re: session.use_cookies ohne root abschalten!

      Zitat von wilko
      Das Problem, die Sessionweitergabe funktioniert nicht, wenn man Cookies deaktiviert hat.
      Das funktioniert prächtig:
      Code:
      printf ('klick', SID);
      In der Konstante SID steht genau das drin, was Du brauchst:
      entweder session_name().'='.session_id(), wenn der Client keinen Keks wollte, oder die Konstante ist leer.

      Kommentar


      • #4
        Ja, die Weitergabe funktioniert nicht, wenn der Link die SessionID nicht enthält!

        Wenn man die SessionID mit dransetzt, funktioniert das naturlich!

        wilko

        Kommentar


        • #5
          Beim 1. aufruf der Seite wird die Session ID von PHP automatisch angehängt. Nachdem man auf einen Link geklickt hat und auf der nächsten Seite ist, ist die SessionID nicht mehr dran...warum??

          wilko

          Kommentar


          • #6
            Zitat von wilko
            Beim 1. aufruf der Seite wird die Session ID von PHP automatisch angehängt. Nachdem man auf einen Link geklickt hat und auf der nächsten Seite ist, ist die SessionID nicht mehr dran...warum??
            Die fehlt nur dann, wenn der Client keinen Keks will und Du die Session nicht weitergibst.

            Beispiel zum Spielen:
            http://test.php-help.info/session-3/

            Kommentar


            • #7
              Oh....jetzt verstehe ich den Fehler...ich habe bei dem Login dann eine Automatische weiterleitung, da sollte ich die Sessionid noch dranhängen!

              Wird die Sessionid dann überall mitübergeben, wenn Cookies aus sind?
              Bei Formularen habe ich es getestet, bei Links auch....habe ich noch etwas übersehen?

              wilko

              Kommentar


              • #8
                Zitat von wilko
                Wird die Sessionid dann überall mitübergeben, wenn Cookies aus sind?
                Formulieren wir das mal anders:
                session.use_cookies = 1
                session.use_only_cookies = 0
                session.use_trans_sid = 0/1

                Dann steht in der Konstante SID genau dann was drin, wenn die Session sonst nicht automatisch weitergegeben wird:
                client wollte keinen Keks und session.use_trans_sid = 0

                Bei Formularen kannst Du es entweder so wie ich in dem Beispiel machen oder Du hängst SID ganz brutal an das Action Attribut dran.

                Sollte das trotzdem nicht klappen, ist wahrscheinlich die PHP Config fehlerhaft (Confixx baut da nämlich Mist).

                Kommentar


                • #9
                  Zusatz:
                  Zitat von wilko
                  ich habe bei dem Login dann eine Automatische weiterleitung, da sollte ich die Sessionid noch dranhängen!
                  Mit header()? Dann mußt Du dafür sorgen, daß das Sessionfile vor dem header() geschrieben wird. Sonst ist der Client weg und PHP beendet das Script vorzeitig. Leider eben ohne $_SESSION ins File zu schreiben.

                  Zusatz 2:
                  Das Beispiel kannste Dir auch mal angucken:
                  http://test.php-help.info/auth-1/

                  Kommentar


                  • #10
                    Also, ich leite mit einem JavaScript weiter!

                    Zum Formular! PHP fügt ein Formularfeld mit der SessionID automatisch hinzu bei mir!

                    wilko

                    Kommentar


                    • #11
                      Zitat von wilko
                      Also, ich leite mit einem JavaScript weiter!
                      Geschmacksache.

                      Guck Dir meine Beispiele an.

                      btw: in den Folgescripten machst Du doch hoffentlich fleißig auch ein session_start() und prüfst danach den Loginstatus?

                      Kommentar


                      • #12
                        Ja, ich habe eine index.php, wo der ganze Sessionkrams drin ist, darin werden dann die Logindaten überprüft....

                        wilko

                        Kommentar


                        • #13
                          Also, das funktioniert jetzt bei mir, aber ich habe noch eine Frage!
                          Ich poste ma den Code, eventuell schaust du mal, ob das so OK ist...bin mir irgendwie unsicher!

                          Code:
                          if(!$login)
                          {
                          session_start();
                          $userend = $_SESSION["usersend"];
                          $passend = $_SESSION["passsend"];
                          	if(!$userend AND !$passend AND $ptwserverloginusername AND $ptwserverloginpwd)
                          	{
                          	$userend = $ptwserverloginusername;
                          	$passend = $ptwserverloginpwd;
                          	$_SESSION["usersend"] = $ptwserverloginusername;
                          	$_SESSION["passsend"] = $ptwserverloginpwd;
                          	}
                          }
                          else
                          {
                          // Session wird erstellt
                          session_start();
                          $_SESSION["usersend"] = $username;
                          $_SESSION["passsend"] = $passwort;
                          	if(!$ptwserverloginusername AND !$ptwserverloginpwd)
                          	{
                          	setcookie("ptwserverloginusername",$username, time()+(3600*24*365), "", "ptw-server.de");
                          	setcookie("ptwserverloginpwd",$passwort, time()+(3600*24*365), "", "ptw-server.de");
                          	}
                          }
                          if($seite == "logout" AND $ptwserverloginusername AND $ptwserverloginpwd)
                          {
                          	setcookie("ptwserverloginusername","", 0, "", "ptw-server.de");
                          	setcookie("ptwserverloginpwd","", 0, "", "ptw-server.de");
                          }
                          Wäre nett, wenn du ma durchschaust!
                          Ob man eingeloggt ist, wird nicht da überprüft, weil man nur bestimmte Seiten nur eingeloggt sehen darf!

                          wilko

                          Kommentar


                          • #14
                            Zitat von wilko
                            Ja, ich habe eine index.php, wo der ganze Sessionkrams drin ist, darin werden dann die Logindaten überprüft....
                            Das ist ja löblich. Die Frage ist nur: verwendest Du index.php dann auch als "zentralen Knoten", in dem Du je nach Menüauswahl spezielle Teilscripte einfügst. PHP reagiert auf eine Session_id vom Client nämlich nur nach dem session_start(). Und damit die Authentifizierung auch Sinn macht, muß jedes mal in $_SESSION nachgeguckt werden, ob der Userstatus noch gültig ist.

                            ### EDIT:
                            Deine Kekszusätze gefallen mir nicht.
                            Logindaten im Klartext gehören weder ins Sessionfile noch in den Keks.
                            Es nutzt nicht viel, wenn Du die Lebenszeit des Kekses verlängerst, weil das Sessionfile nach einer Idletime > session.gc_maxlifetime zum Löschen vorgemerkt wird.

                            Dein Logout ist ebenfalls nicht korrekt. Dort muß sicher sein, daß $_SESSION keine Daten mehr enthält: $_SESSION = array();
                            session_writ_close()
                            header ('....'); # Startseite ohne Session_id im Link.

                            Kommentar


                            • #15
                              Die Kekse sollen nur gesezt werden, wenn sie noch nicht gesetzt sind. Also, die Kekse sollen völlig unabhängig von den Sessions sein und dienen nur dazu, das man sich nicht bei jedem Aufruf der Seite neueinloggen muss.

                              Die Daten, die in den Cookie geschrieben werden, werden vorher mit einem, von mir geschriebenen System verschlüsselt. Das habe ich nur hier rausgenommen. Gibt es eine in PHP integrierte Funktion das zu verschlüsseln? So, das man es auch wieder entschlüsseln kann?
                              Die Passwörter werden zwar nach md5 verschlüsselt gespeichert, aber ist es klug die auch so zu übergeben?

                              Zum logout, die Session wird mit session_destroy verwendet. Das steht aber in der logout.php die weiter unten dann includet wird.

                              wilko

                              Kommentar

                              Lädt...
                              X