[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>"); } ?>
-
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'] ?
-
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