Ankündigung

Einklappen
Keine Ankündigung bisher.

session_regenerate_id() liefert FALSE zurück

Einklappen

Neue Werbung 2019

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

  • session_regenerate_id() liefert FALSE zurück

    Hallo,

    ich möchte die Session-ID bei jedem Aufruf der Seite neu generieren lassen. Allerdings scheint dies mit session_regenerate_id() nicht zu funktionieren. Wenn ich mir die alte und 'neue' ID ausgeben lasse, sind sie immer gleich.

    Jetzt habe ich die Zeile so eingebaut:
    if (session_regenerate_id()) echo 'true';
    else echo 'false';

    und es wird immer 'false' zurückgeliefert.

    Ich habe im Netz leider nichts dazu gefunden woran es scheitert.

    Danke
    Matthias

  • #2
    Hast du die Session vorher schon gestartet? Kann mir sonst nur vorstellen, dass die Session-Pfade nicht stimmen. Einfach mal phpinfo() aufrufen und die unter Session gelisteten Werte überprüfen (Pfadexistenz, Schreib-/Leserechte etc.) Wann rufst du die Funktion auf? Teste mal den Parameter von session_regenerate_id() mit TRUE oder FALSE.
    "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

    Kommentar


    • #3
      Ja, die Session habe ich ganz zu Beginn gestartet. Ich arbeite ja auch mit den Parametern aus der Session. Es wird eben nur keine neue ID generiert.

      Das mit der phpinfo() werde ich gleich mal einbauen und mich zurückmelden.

      Kommentar


      • #4
        Zitat von Tensin Beitrag anzeigen
        Ich arbeite ja auch mit den Parametern aus der Session.
        Nein ich meinte:
        Teste mal den Parameter von session_regenerate_id() mit TRUE oder FALSE.
        "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

        Kommentar


        • #5
          Weder mit TRUE, noch mit FALSE in der Funktion hat sich irgendwas verändert.

          Mit phpinfo(); habe ich das ausgegeben bekommen. Leider kann ich damit nur wenig anfangen. Wenn jemand den 'fehlenden Haken' findet?

          session
          Session Support enabled
          Registered save handlers files user

          Directive Local Value Master Value
          session.auto_start Off Off
          session.bug_compat_42 On On
          session.bug_compat_warn On On
          session.cache_expire 180 180
          session.cache_limiter nocache nocache
          session.cookie_domain no value no value
          session.cookie_lifetime 0 0
          session.cookie_path / /
          session.cookie_secure Off Off
          session.entropy_file no value no value
          session.entropy_length 0 0
          session.gc_divisor 100 100
          session.gc_maxlifetime 1440 1440
          session.gc_probability 1 1
          session.name PHPSESSID PHPSESSID
          session.referer_check no value no value
          session.save_handler files files
          session.save_path /tmp /tmp
          session.serialize_handler php php
          session.use_cookies On On
          session.use_only_cookies Off Off
          session.use_trans_sid Off Off

          Kommentar


          • #6
            Was gibt dir var_dump(is_dir("/tmp"), is_readable("/tmp"), is_writable("/tmp"), sessioh_regenerate_id()); aus?
            "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

            Kommentar


            • #7
              das liefert mir folgendes:

              bool(true) bool(true) bool(true) bool(false)

              Kommentar


              • #8
                Sollte eigentlich funktionieren.
                Kannste mal deinen Code posten? Ansonsten können wir wie bisher nur planlos in Dunkle raten...
                "My software never has bugs, it just develops random features."
                "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                Kommentar


                • #9
                  Also der Code ist etwas länger und auf mehrere Dateien verteilt. Ich versuche mal die wichtigsten Teile zu posten:

                  index.php:
                  PHP-Code:
                  <script language="php">
                      
                  session_start();

                  ...

                  include 
                  'includes/activity.php';

                  ... 
                  activity.php:
                  PHP-Code:
                  ...
                    
                  $sicher=true;

                    
                  //mit der Datenbank verbinden
                    
                  connect();
                    
                    
                  //URL checken
                    
                  if (URL_check()!=true$sicher=false;
                    
                    
                  //Session kontrollieren und ID neu vergeben
                    
                  if ($_SESSION['status']>0)
                      {
                        if (
                  Session_save()!=true$sicher=false;
                      }
                  ... 
                  die Funktion ist hier definiert:
                  PHP-Code:
                  <?php
                  //function Session_save()
                      
                  $correct true;
                      
                  $SID session_id();
                      
                  $user_IP=$_SERVER['REMOTE_ADDR'];
                      
                  $query "SELECT ID,IP FROM user_logged_in WHERE SID='".$SID."'";
                      
                  $result mysql_query($query);
                      
                  $data mysql_fetch_row($result);
                      if (
                  $data[1]!=$user_IP$correct=false;
                      else
                        {
                          if (
                  session_regenerate_id(true)) echo 'true';
                          else echo 
                  'false';
                          
                  $SID session_id();
                          
                  $eintrag "UPDATE user_logged_in SET SID='".$SID."' WHERE ID='".$data[0]."'";
                          
                  $eintragen mysql_query($eintrag);
                        }
                  ?>
                  Es wird eben immer 'false' ausgegeben.

                  Kommentar


                  • #10
                    Zitat von Tensin Beitrag anzeigen
                    index.php:
                    PHP-Code:
                    <script language="php">
                        
                    session_start();

                    ...

                    include 
                    'includes/activity.php';

                    ... 
                    WTF ist das denn?
                    PHP-Code:
                    <?php 
                    session_start
                    ();
                    ...
                    include 
                    'includes/activity.php';
                    Ist ein wenig einfacher...
                    Ich les mal noch schnell den Rest...

                    Nachtrag:
                    Poste mal bitte die kompletten Funktionsrümpfe von
                    URL_check()
                    Session_save()


                    Und wo wird
                    $_SESSION['status'] gesetzt?
                    "My software never has bugs, it just develops random features."
                    "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                    Kommentar


                    • #11
                      Die URL_check kann vernachlaässigt werden, die funktioniert und da gibt es keine Session-parameter.

                      PHP-Code:
                      function URL_check()
                          {
                             include 
                      'secure/URL_check.php';
                             return 
                      $correct;
                          }
                      function 
                      Session_save()
                          {
                             include 
                      'secure/session.php';
                             return 
                      $correct;
                          } 
                      Den Code der session.php habe ich oben gepostet.

                      Also für mich sieht alles korrekt aus.

                      Kommentar

                      Lädt...
                      X