User ID in Session speichern

Dr_McKay

Grünschnabel
Hallo, ich wollte beim einloggen eines Users in der Session gleich seine Id speichern, ich hab dafür eine Seite:
login.php:
PHP:
<?php

require_once ("include/datenbank_connect.inc.php");
require_once ("include/links.inc.php");

session_start();

$name = $_POST["name"];
$passwort = md5($_POST["passwort"]);

$abfrage = "SELECT name, passwort FROM user WHERE name LIKE '$name'";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);

if ($row->passwort == $passwort) {
    $_SESSION["name"] = $name;

    $abfrage = "SELECT id FROM user WHERE name = '" . $name . "';";
    $ergebnis = mysql_query($abfrage);

    while ($user_id = mysql_fetch_assoc($ergebnis)) {
        $_SESSION["user_id"] = $user_id;
    }
    header("Location: $spiel");
} else {
    header("Location: $index");
}
?>

Diese Seite wird einmalig, beim einlogen aufgerufen und überprüft auch, ob der Name und das Passwort überinstimmen.
Das Einlogen funktioniert, jedoch wird die user_id leider nicht in $_SESSION["user_id"] gespeicher nur der Name in $_SESSION["name"].
 
Zuletzt bearbeitet:
Erstmal musst du $name unbedingt vor Injections schützen... sonst fällt dein Spiel irgendnem Scriptkiddie zum Opfer.

Und warum fragst du die ID in einer zweiten Abfrage ab, wenn es auch in der ersten geht?

PHP:
<?php

require_once ("include/datenbank_connect.inc.php");
require_once ("include/links.inc.php");

session_start();

$name = $_POST["name"];
$passwort = md5($_POST["passwort"]);

$name = mysql_real_escape_string($name);

$abfrage = "SELECT id, passwort FROM user WHERE name = '$name'";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);

if ($row->passwort == $passwort) {
    $_SESSION["name"] = $name;
	$_SESSION["user_id"] = $row->id;
    header("Location: $spiel");
} else {
    header("Location: $index");
}
?>

(Ungetestet, wie immer :))
 
Zurück