Problem mit Sessions
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anfragen
beitrag
eingeben
ergebnis
error
fehler
formen
gel
login
mache
pa
pionier
schleifen
script
session
tue
tutorial
unsicher mache
user
verstehe
-
Moin moin!
Ich habe ein Login-Script programmiert, das bestimme Variablen ?ber Sessions weitergibt. Nur da wo was hinsollte, kommt nix an. Da ich erst seit ein paar Tagen mit Sessions arbeiten kann, somit noch "Pionier" bin und ich vergeblich im Web nach L?sungen gesucht hab, bitte euch mir zu helfen. Unten sind 2 Scripts, das eine das den Loginvorgang ?berpr?ft und die Session startet, das andere wo theoretisch die Sessionvariablen ankommen sollten.
login_friend.php (?berpr?fung des Logins:
session_start(); include ("connect_db.php"); $anfrage="SELECT * FROM users WHERE (user_nick LIKE '".$_POST["name"]."') AND (user_psswd = '".md5 ($_POST["pass"])."')"; $ergebnis=mysql_query($anfrage); echo mysql_error(); if (mysql_num_rows ($ergebnis) > 0) { $data = mysql_fetch_array ($anfrage); $_SESSION["user_id"] = $data["user_id"]; $_SESSION["user_psswd"] = $data["user_psswd"]; $_SESSION["user_nick"] = $data["user_nick"]; header ("Location: bla.php?=SID"); } else { header("Location: form.php?error=Eingaben incorrekt"); }
bla.php (Da sollten die Sessionvariablen ankommen):
include("connect_db.php"); session_start(); echo "Hallo".$_SESSION['user_nick'];
Danke im Vorraus
LG nesciturus
Beitrag ge?ndert am 23.12.2005 00:23 von nesciturus -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Huhu,
also ich sch?tze mal da fehlt die while-Schleife
$data = mysql_fetch_array ($anfrage); $_SESSION["user_id"] = $data["user_id"]; $_SESSION["user_psswd"] = $data["user_psswd"]; $_SESSION["user_nick"] = $data["user_nick"];
durch den zu ersetzen
while ($data = mysql_fetch_array ($anfrage)) { $_SESSION["user_id"] = $data["user_id"]; $_SESSION["user_psswd"] = $data["user_psswd"]; $_SESSION["user_nick"] = $data["user_nick"]; }
-
Check doch erstmal was ?berhaupt in der Variablen ist und poste das hier mal
echo $data;
Beitrag ge?ndert am 23.12.2005 01:29 von neo1000 -
und dann w?rde ich in deiner DB Abfrage nicht LIKE schreiben ist zu unsicher mache ein = raus.
Du hast den Code von tutorials.de und in diesem Code gibt es einen Fehler mache es mal so:
$anfrage="SELECT user_nick, user_psswd, user_id FROM users WHERE user_nick = '".$_POST["name"]."' AND user_psswd = '".$_POST["pass"]."')";
Beitrag ge?ndert am 23.12.2005 04:42 von newwarrior
Beitrag ge?ndert am 23.12.2005 04:43 von newwarrior -
neo1000 schrieb:
Check doch erstmal was ?berhaupt in der Variablen ist und poste das hier mal
echo $data;
Da kommt gar nix....
newwarrior schrieb:
und dann w?rde ich in deiner DB Abfrage nicht LIKE schreiben ist zu unsicher mache ein = raus.
Du hast den Code von tutorials.de und in diesem Code gibt es einen Fehler mache es mal so:
$anfrage='SELECT user_nick, user_psswd, user_id FROM users WHERE user_nick = ''.$_POST['name'].'' AND user_psswd = ''.$_POST['pass'].'')';
Hab ich probiert, aber es kommt da nur einen Fehlermeldung, dass das angeforderte Script nicht verf?gbar ist (Error 404). -
Ich weis nicht genau, aber ich hab die Vermutung, dass die Session gar net ?bergeben wird. Cookies hab ich aktiviert, kommt aber trotzdem nix an.
Wie kann ich die Session-ID via Link ?bergeben??? -
Wie kann ich die Session-ID via Link ?bergeben???
<a href="<?php echo $PHP_SELF; ?>">Link</a>
Versuchs mal so, dann m?sste die Session-ID automatisch angeh?ngt werden.
Beitrag ge?ndert am 23.12.2005 10:49 von ou -
So weil mir dein Script keine Ruhe gelassen hat, habe ich mich hingesetzt es vereinfacht und das Problem gel?st.
login.php
session_start(); include ("connect_db.php"); $anfrage="SELECT * FROM users WHERE user_nick LIKE '".$_POST["name"]."' AND user_psswd = '".md5 ($_POST["pass"])."'"; $ergebnis=mysql_query($anfrage) or die (mysql_error()); $abfrage = mysql_fetch_object($ergebnis); $password = md5($_POST["pass"]); if ($abfrage->user_psswd==$password) { $data = $abfrage or die(mysql_error()); $_SESSION["user_id"] = $data->user_id; $_SESSION["user_psswd"] = $data->user_psswd; $_SESSION["user_nick"] = $data->user_nick; header ("Location: hello.php?=SID"); } else { header("Location: form.php?error=Eingaben incorrekt"); }
login.html
<form action="login2.php" method="post"> Dein Username:<br> <input type="text" size="24" maxlength="50" name="name"><br><br> Dein Passwort:<br> <input type="password" size="24" maxlength="50" name="pass"><br> <input type="submit" value="Login"> </form>
hello.php
include("connect_db.php"); session_start(); echo "Hallo ".$_SESSION['user_nick'];
Beitrag ge?ndert am 23.12.2005 12:31 von neo1000 -
Ein Dank an Neo1000!
Es klappt, danke!
Nur noch eine Frage: das ganze basiert nun ja auf cookies. Wie kann es schaffen, dass auch, wenn keine Cookies angenommen werden, die Session-ID ?bertragen wird? Ich weis, dass man die ID an den URL anh?ngt, aber wie das genau geht, hab ich nie kapiert! -
Also was ich meinte:
bei dem da
sollte theoretisch die Session-ID (in der ungef?hren Gestalt von dem: V0cf18ce30575c86194392be38991) zu sehen sein. Soweit die Theorie. Die Praxis sieht so aus: hello.php?=SID Was ist daran das Problem(-chen)??header ("Location: hello.php?=SID");
-
header("Location: hello.php?" . SID);
w?re richtig.
SID ist nur gesetzt, wenn kein cookie gesetzt wurde (zB weil der user keine annimmt)
na ja, net ganz... SID enth?lt einen strig aus "name=sess_id" oder "" wenn ein cookie mit diesen infos vorhanden ist
Beitrag ge?ndert am 23.12.2005 21:18 von kirschbluete -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage