• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

Session Problem bei 1&1

John

Macoun
Registriert
08.06.09
Beiträge
119
Guten Tag,
und zwar habe ein Problem mit meinem Login-Script. Ich hatte zunächst ein ähnliches Script auf einem kostenlosen Server (funpic) getestet, dort hat soweit auch alles funktioniert.
Heute habe ich dann dasselbe auf einem 1&1 Server versucht, doch klaptt es nicht so wie ich möchte.

#1: Die Daten werden in ein Formular eingegeben und an die 2. Seite mittels "$_POST" weitergeschickt. (klappt)
#2: Die eingegebenen Daten werden mit den Daten in der Datenbank vergleicht (klappt)
#3: Sind die Daten gleich wird einen der Session ein username zugeordnet und man wird auf einen 3. Seite weitergeleitet (klappt)
#4: Hier liegt dann mein Problem. $_SESSION['user'] ist leer obwohl es im 3. Schritt zugeordnet wurde. Auf der 2. Seite kann ich $_SESSION['user'] auch ausgeben.

Hier der zugehörige Code:

Login.php
Code:
session_start();

include('config/config.php');

$user = $_POST['user'];
$password = $_POST['pass'];

$pass = md5($password);

$sql = "SELECT user, password FROM login WHERE user = '$user'";
$login = mysql_query($sql);	
$daten = mysql_fetch_array($login);

if ($daten == "") {
	echo "Login failed!";
	echo "<a href=''>Zurück zum Login</a>";
}
else if ($daten['password'] == $pass AND $daten['user'] == $user) {
	$_SESSION['user'] = $user; 
   	echo "Login war erfolgreich - <a href='home.php'>weiter</a>";
}
else {
	echo "Login failed!";
}

home.php (auszug)
Code:
session_start();

include('config/config.php');

$action = $_GET["action"];

// Session überprüfen

if (!isset($_SESSION['user'])) {
	echo "<div class='login' align='center'>";
	echo "Bitte erst einloggen<br>";
	echo "<a href=''>ZurŸck zum Login</a>";
	echo "</div>";
	exit;
}

Ich habe den gleichen Code noch einmal auf meinem Funpic-Server getestet und dort funktionierte es. Nun komme ich nicht weiter :-/

so far
John
 
Mal geschaut, ob die Session korrekt übernommen wird? Dh. ob der Session Cockie gesetzt ist, und oder der Link die SESSION ID enthält?

Ich hoffe aber, dass du den finalen Code dann noch von der Sicherheit her optimieren wirst. Denn das direkt mit POST übergebene $user hat so nix in einer SQL-Abfrage zu suchen (SQL-Injection-Gefahr!!).
 
  • Like
Reaktionen: John
Okay,
dann werd ich das erstmal ändern, solang ich bei meinem anderen Problem nicht weiter komme.
Danke für den Hinweis
 
Kann geschlossen werden. Problem gelöst, lag daran dass ich vor dem PHP-Teil noch ein HTML-Teil hatte. Den sollte ich nach Meinung von 1&1 weglassen. Gesagt, getan und es funktioniert :-/
 
Hehe, dann ist das kein Wunder.
session_start() muss vor jeglicher Ausgabe aufgerufen werden, sonst kann der Header nicht für das erzeugen des Cookies angepasst werden.