[PHP] sessions



  • hi!
    hab n Prob mit ner session. Und zwar werden keine Variablen übergeben, obwohl die Session gestartet wurde und die Variablen eingegeben werden. in der verlinkten Datei ist ein Session_start, damit der die auch hat, aber tut's halt nicht...

    hier mal der Source:

    <?php
     session_start();
     $db = mysql_connect();
     $sql="SELECT passwort, name, stat FROM user WHERE id='$id';";
     $res=mysql_query($sql, $db);
     if($user = mysql_fetch_row($res))
     {
      if ($passwort == $user[0])
      {
       $add="UPDATE user SET stat='1' WHERE id='$id';";
       mysql_query($add, $db);
       print ("Sie sind eingeloggt!<br><br>");
       session_register('id');
       print ("<a href=forum.php>Zum Forum</a></form>");
      }
      else {
       print ("Passwort falsch!<br><br><a href=login.htm>Zurück</a>");
      }
     }
     else {
      print ("Benutzername existiert nicht!<br><br><a href=login.htm>Zurück</a>");
     }
    ?>
    

  • Mod

    benutze statt session_register lieber das super globale array $_SESSION

    ansonsten sieht der code korrekt aus.
    wird die session ID auf die neue seite uebergeben?



  • Wie sieht denn dein Code zum auslesen aus? Und wie schon gesagt: zum Speichern und Auslesen von Session-Variablen die $_SESSION Super-Global verwenden



  • Das hat mal funktioniert, aber auf einmal war das dann weg...
    Die session ID wird ja nicht übertragen und das empfangsscript sieht so aus:

    <?php
     session_start();
     $db = mysql_connect();
     $sql="SELECT name FROM user WHERE id='$id'";
     $res=mysql_query($sql, $db);
     $user = mysql_fetch_row($res);
     if ($id == "")
     {
      print ("<a href=forum.php>Forum</a> ::|:: <a href=login.htm>Login</a> ::|:: <a href=member.php>Member</a> ::|:: <a href=reg.htm>Registrieren</a> </td></tr>");
      print ("<tr><td align=left colspan=3>Sie sind noch nicht eingeloggt!");
     }
     else
     {
      print ("<a href=forum.php>Forum</a> ::|:: <a href=logout.php>Logout</a> ::|:: <a href=member.php>Member</a> ::|:: <a href=profil.php>Profil</a>");
      print ("</td></tr>");
      print ("<tr><td align=left colspan=3>Sie sind als $user[0] eingeloggt!");
     }
     print ("<tr><td colspan=3>User online:<br>");
     $on="SELECT name FROM user WHERE stat='1' ORDER BY name";
     $on1=mysql_query($on, $db);
     while ($on2 = mysql_fetch_row($on1))
     {
      print ("$on2[0] ");
     }
     print ("<tr><td align=left colspan=3><font size=4><a href=uforum.php>Hobby, Freizeit</a></font><br>");
     print ("Hier könnt ihr alles posten, was zu DSA, Freizeit und anderen Hobbies wie Pfadfinder ect. gehört!");
     print ("</td></tr>");
     $forum="SELECT name, date, author, id FROM forum ORDER BY date LIMIT 3";
     $foruma=mysql_query($forum, $db);
     while ($posts = mysql_fetch_row($foruma))
     {
      $fid = $posts[3];
      print ("<tr><td>Last Post:</td><td>Von:</td><td>Datum:</td></tr>");
      print ("<tr><td><a href=\"post.php?fid=$fid\">$posts[0]</a></td><td>$posts[2]</td><td>$posts[1]</td></tr>");
     }
    ?>
    


  • Du solltest auf die Session-Variablen nicht einfach per $id zugreifen (funktioniert zumindest ohne register_globals nicht), sondern mit $_SESSION['id'] (vorausgesetzt, du hast PHP >= 4.1.0)



  • wie sieht das denn aus mit $_SESSION die Variable zu speichern? auch $_SESSION['id'] ?


  • Mod

    jo, alles was in $_SESSION steht, wird gespeichert.

    ist vielleicht trans-id deaktiviert und das cookie konnte nicht gesetzt werden (oder wurde ausgeschaltet)?

    gib die session id mal haendisch weiter.



  • Oder lass sie dir einfach ausgeben und schau, ob's die gleiche ist!

    <?
     session_start();
     $_SESSION['var1'] = 'text';
     $_SESSION['var2'] = 25;
     echo session_id();
    ?>
    

    Das in die erste Datei

    <?
     session_start();
     echo $_SESSION['var1'].'<br>';
     echo $_SESSION['var2'].'<br>';
     echo session_id();
    ?>
    

    ... und das in die Zweite


Anmelden zum Antworten