[PHP] $_SESSION bekommt mysteriösen Wert

Dieses Thema im Forum "Webentwicklung" wurde erstellt von GaYlORd, 4. Januar 2012 .

Schlagworte:
  1. 4. Januar 2012
    $_SESSION bekommt mysteriösen Wert

    Hallo,

    habe einen sehr merkwürdigen Fehler, der nur online, aber nicht lokal, auftritt.

    Ich setze so die Variable $gruppe und die entsrpechende Session $_SESSION["gruppe"]:
    PHP:
    if(isset( $_GET [ "gruppe" ]) AND !empty( $_GET [ "gruppe" ])){
            
    $gruppe  $_GET [ "gruppe" ];
            
    $_SESSION [ "gruppe" ] =  $gruppe ;
        }else{
            
    $gruppe  $_SESSION [ "gruppe" ];
    }
    Sobald die Session einen Wert hat (ID eines DB-Eintrags) werden bestimmte Einträge angezeigt. Diese Einträge kann man löschen. Das geht so:
    PHP:
    function  deleteTodo ( $db $id ){
        
    $sql  'DELETE FROM
                    todo
                WHERE
                    id = ?'
    ;
        
    $stmt  $db -> prepare ( $sql );
        if (!
    $stmt  $db -> prepare ( $sql )) {
                return 
    $db -> error ;
            }
        
        
    $stmt -> bind_param ( 'i' $id ); 
        
    $stmt -> execute ();
        
    $stmt -> close ();
    }
    Sobald ich jetzt einen Eintrag lösche, funktioniert es. Will ich einen zweiten Eintrag löschen, kommt diese Fehlermeldung:
    In Zeile 356 ist diese Funktion:
    PHP:
    function  gruppenname ( $db $gruppe ){
        if(empty(
    $gruppe ))
            return 
    "-" ;
        
    $sql  'SELECT
                 name
              FROM
                  gruppe
              WHERE
                  hash = ?'
    ;
      
    $stmt  $db -> prepare ( $sql );
      if (!
    $stmt ) {
          return 
    0 ;
      }
      
    $stmt -> bind_param ( 's' $gruppe );
      if (!
    $stmt -> execute ()) {      // Zeile 356
          
    return  0 ;
      }
      
    $stmt -> bind_result ( $name );
      if (!
    $stmt -> fetch ()) {
          return 
    0 ;
      }
      
    $stmt -> fetch ();
      
    $stmt -> close ();
      return 
    $name ;
    }
    Das liegt daran, dass $_SESSION["gruppe"] diesen Inhalt hat:
    Anstelle von beispielsweise
    An was kann das liegen? Es wird im ganzen Programm keine andere Session als gruppe erstellt. Und die wird nur in dem obigen Teil definiert, sonst nie wieder.
    Was macht mein Server da?^^
    Lokal läuft alles einwandfrei...

    Danke schonmal!

    Gruß
    gl
     
  2. 4. Januar 2012
    AW: $_SESSION bekommt mysteriösen Wert

    mysql_stmt_fetch erzeugt ein MySQLi_Result objekt.

    PHP:
    return  $name -> fetch_object ()-> name ;
    oder
    PHP:
    $name  $name -> fetch_assoc ();
    return 
    $name [ 'name' ];
    was dir lieber is.

    -> kann aber auch sein, dass ich grade sch**ss erzähle. ich arbeite generell lieber mit PDO
     
  3. 4. Januar 2012
    AW: $_SESSION bekommt mysteriösen Wert

    Ne, das geht nicht.

    Der return-Wert passt ja.
    Irgendwas passiert mit der $_SESSION. Die wird nur mit dem GET-Parameter definiert und sonst nirgends. Da kann kein mysqli_result drin stehen. Irgendwas "zerstört" mir die $_SESSION["gruppe"].

    Hat noch wer irgendeine Idee an was das liegen könnte?
     
  4. 5. Januar 2012
    AW: $_SESSION bekommt mysteriösen Wert

    dann such mal in deinen quelltexten nach $_SESSION, weil du dem anschein nach irgendwo im code den wert überschreibst.

    zudem musst du aufpassen, weil mysqli mit unmengen an referenzen arbeitet und gesetzte werte sich so auch mal ändern können wenn du die variablen weiterverwendest.
     
  5. 6. Januar 2012
    AW: $_SESSION bekommt mysteriösen Wert

    Tu ich leider nicht. Beim ausloggen wird die $_SESSION["gruppe"] geleert mit unset(..).
    Und beim Registrieren erstell ich drei neue $_SESSION name, vorname, email die aber auch mit unset() geleert werden, sobald die registrierung erfolgreich war.

    Was genau meinst du damit? Wie kann ich das denn nachvollziehen / prüfen?

    Danke bis hierhin schonmal! =)

    Edit:
    Oh Mann! Hab den Fehler gefunden -.-
    Hab $gruppe mit einem mysqli_result gefüllt... Hab da nicht mehr daran gedacht, weil ich die $_SESSION["gruppe"] erst später erstellt habe.

    So, jetzt gehts auf jeden Fall^^
     
  6. 6. Januar 2012
    AW: $_SESSION bekommt mysteriösen Wert

    PHP: mysql_real_escape_string - Manual
    Weiß nicht genau, ob das die stmt Klasse für dich übernimmt, aber du solltest trotzdem daran denken!

    Falls die Gruppe nur eine Zahl ist, reicht auch intval
     
  7. 7. Januar 2012
    AW: $_SESSION bekommt mysteriösen Wert

    Danke. Das escapen macht die stmt-klasse.

    Gruß
    gl
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.