Problem mit Login-Skript

userjules

Mitglied
Hallo zusammen, ich bin ganz neu hier und war noch nie in irgendeinem Forum angemeldet geschweige denn, dass ich Beiträge verfasst hätte. Also bitte nicht gleich schlagen wenn ich hier irgenwelche Anfängerfehler mache !
Zu meinem Problem:
Ich hab mir dieses echt tolle Tutorial von Karl Förster vorgenommen (http://www.tutorials.de/forum/php-tutorials/9684-php-mysql-login-system-mit-sessions.html) um ein Login System für eine Webseite zu basteln.
Ohne das ich irgendwelche Vorkentnisse von SQL und PHP habe, hab ich's hingekriegt. Echt klasse ! Aber...
Das Tutorial beschränkt sich auf ein Login-System, dass alle erfolgreichen Logins auf eine gemeinsame intern.php weiterleitet. Ich möchte gerne, das jeder User seine "eigene" Seite bekommt.
Folgendes hab ich getan (Bitte das genannte Forum als Referenz nutzen!!):

Erstmal den SQL Befehl erweitert um den Befehl: Ziel VarChar(50) NOT NULL default '',
... anschließend auf dem Server augeführt. Hat funktioniert ! Ich hab also die Tabelle um die Spalte "Ziel" erweitert.

Ich hab's auch geschafft den PHP Code zum erstellen der Benutzer so umzufrickeln, dass das Skript mir die Benutzer angelegt hat mit dem jeweiligen Ziel in der neuen Spalte.
$benutzer[0]["Ziel"] = "seite.php";

Jetzt muss aber noch die login.php umgebaut werden und da hört's bei mir auf !
Ich denke mal ich bin auf einem guten Weg, aber da ich keine Ahnung von der PHP Syntax habe komme ich hier ohne eure Hilfe nicht weiter.

Meine neue login.php sieht bisher folgendermaßen aus:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
</head>

<body>

<?php
// Session starten
session_start ();

// Datenbankverbindung aufbauen
$connectionid = mysql_connect ("localhost", "user", "passwort");
if (!mysql_select_db ("database", $connectionid))
{
die ("Keine Verbindung zur Datenbank");
}

$sql = "SELECT ".
"Id, Nickname, Nachname, Vorname, Ziel ".
"FROM ".
"benutzerdaten ".
"WHERE ".
"(Nickname like '".$_REQUEST["name"]."') AND ".
"(Kennwort = '".md5 ($_REQUEST["pwd"])."')";
$result = mysql_query ($sql);

if (mysql_num_rows ($result) > 0)
{
// Benutzerdaten in ein Array auslesen.
$data = mysql_fetch_array ($result);

// Sessionvariablen erstellen und registrieren
$_SESSION["user_id"] = $data["Id"];
$_SESSION["user_nickname"] = $data["Nickname"];
$_SESSION["user_nachname"] = $data["Nachname"];
$_SESSION["user_vorname"] = $data["Vorname"];

header ("Location: intern.php");
}
else
{
header ("Location: index.php?fehler=1");
}
?>

</body>
</html>

Also eigentlich alles beim Alten, bis auf den neuen Eintag , Ziel unter SELECT.
Wie muß ich jetzt weiter vorgehen um die Zielseite aus der Spalte "Ziel" abzurufen ?
Der Schlüssel ist sicher die Zeile

header ("Location: intern.php");

...aber wie muss der Eintrag aussehen ?
Ich habs probiert mit sowas wie

header ("Location: $data["Ziel"]);

...aber das t net ! Ich bedanke mich im Voraus schon einmal bei euch und bin gespannt auf eure Antworten !
 
Ich würde einfach eine Datenbank Abfrage machen, und das Ergebnis dann in die Header funktion schreiben.

Also folgendermaßen:

<?php

$data2 = mysql_fetch_array(mysql_query("SELECT * FROM `benutzerdaten` WHERE `Id` = ' ".$_SESSION["user_id"]." ' "));

header ("Location: $data2["Ziel"]);

?>
 
Ey Cordula, hast du nicht gelesen ? Ich hab keinen Plan ! Also bitte nochmal langsam !
Sieht gut aus, aber ich verstehs nicht. An welcher Stelle muss ich das einfügen ?
So in etwa ?


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
</head>

<body>

<?php
// Session starten
session_start ();

// Datenbankverbindung aufbauen
$connectionid = mysql_connect ("localhost", "user", "passwort");
if (!mysql_select_db ("database", $connectionid))
{
die ("Keine Verbindung zur Datenbank");
}

$sql = "SELECT ".
"Id, Nickname, Nachname, Vorname, Ziel ".
"FROM ".
"benutzerdaten ".
"WHERE ".
"(Nickname like '".$_REQUEST["name"]."') AND ".
"(Kennwort = '".md5 ($_REQUEST["pwd"])."')";
$result = mysql_query ($sql);

if (mysql_num_rows ($result) > 0)
{
// Benutzerdaten in ein Array auslesen.
$data = mysql_fetch_array ($result);
$data2 = mysql_fetch_array(mysql_query("SELECT * FROM `benutzerdaten` WHERE `Id` = ' ".$_SESSION["user_id"]." ' "));


// Sessionvariablen erstellen und registrieren
$_SESSION["user_id"] = $data["Id"];
$_SESSION["user_nickname"] = $data["Nickname"];
$_SESSION["user_nachname"] = $data["Nachname"];
$_SESSION["user_vorname"] = $data["Vorname"];

header ("Location: $data2["Ziel"]);
}
else
{
header ("Location: index.php?fehler=1");
}
?>

</body>
</html>



Ich bin ein wenig verwirrt wegen dem $data2 !
Heisst das ich brauche ne zweite Datenbank ? Nee oder ?
Bitte erklär's nochmal für doofe !

Danke vielmals !
 
Okay kein Problem !

Du benötigst keine 2. Datenbank. Ich habe diese Abfrage $data2 genannt, da in deinem Code ja bereits eine Abfrage mit $data besteht. Da wir jetzt aber eine andere Abfrage als bei $data brauchen, habe ich eine neue Abfrage erstellt, und diese $data2 genannt.

Setz die Abfrage am besten unter den Block "Sessionvariablen registrieren..." also in etwa so:

hier steht noch der restliche Code davor! [...]
...
...
...

// Sessionvariablen erstellen und registrieren
$_SESSION["user_id"] = $data["Id"];
$_SESSION["user_nickname"] = $data["Nickname"];
$_SESSION["user_nachname"] = $data["Nachname"];
$_SESSION["user_vorname"] = $data["Vorname"];

header ("Location: $data2["Ziel"]);
$data2 = mysql_fetch_array(mysql_query("SELECT * FROM `benutzerdaten` WHERE `Id` = ' ".$_SESSION["user_id"]." ' "));


header ("Location: $data2["Ziel"]);


...
...
...
hier jetzt der restliche Code!
[...]

und dann müsste es gehen!
 
Sorry hab nen Fehler gemacht !

hier steht noch der restliche Code davor! [...]
...
...
...

// Sessionvariablen erstellen und registrieren
$_SESSION["user_id"] = $data["Id"];
$_SESSION["user_nickname"] = $data["Nickname"];
$_SESSION["user_nachname"] = $data["Nachname"];
$_SESSION["user_vorname"] = $data["Vorname"];

$data2 = mysql_fetch_array(mysql_query("SELECT * FROM `benutzerdaten` WHERE `Id` = ' ".$_SESSION["user_id"]." ' "));


header ("Location: $data2["Ziel"]);
}
else
{
header ("Location: index.php?fehler=1");
}

?>

So müsste es jetzt gehen!
 
Hier also nochmal der komplette Code damit es verständlicher ist:

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
</head>

<body>

<?php
// Session starten
session_start ();

// Datenbankverbindung aufbauen
$connectionid = mysql_connect ("localhost", "user", "passwort");
if (!mysql_select_db ("database", $connectionid))
{
die ("Keine Verbindung zur Datenbank");
}

$sql = "SELECT ".
"Id, Nickname, Nachname, Vorname, Ziel ".
"FROM ".
"benutzerdaten ".
"WHERE ".
"(Nickname like '".$_REQUEST["name"]."') AND ".
"(Kennwort = '".md5 ($_REQUEST["pwd"])."')";
$result = mysql_query ($sql);

if (mysql_num_rows ($result) > 0)
{
// Benutzerdaten in ein Array auslesen.
$data = mysql_fetch_array ($result);


// Sessionvariablen erstellen und registrieren
$_SESSION["user_id"] = $data["Id"];
$_SESSION["user_nickname"] = $data["Nickname"];
$_SESSION["user_nachname"] = $data["Nachname"];
$_SESSION["user_vorname"] = $data["Vorname"];

$data2 = mysql_fetch_array(mysql_query("SELECT * FROM `benutzerdaten` WHERE `Id` = ' ".$_SESSION["user_id"]." ' "));


header ("Location: $data2['Ziel']");
}
else
{
header ("Location: index.php?fehler=1");
} 

?>

</body>
</html>
 
Vielen Dank soweit !
Mein Skrip sieht jetzt so aus:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
</head>

<body>

<?php
// Session starten
session_start ();

// Datenbankverbindung aufbauen
$connectionid = mysql_connect ("localhost", "user", "passwort");
if (!mysql_select_db ("database", $connectionid))
{
die ("Keine Verbindung zur Datenbank");
}

$sql = "SELECT ".
"Id, Nickname, Nachname, Vorname, Ziel ".
"FROM ".
"benutzerdaten ".
"WHERE ".
"(Nickname like '".$_REQUEST["name"]."') AND ".
"(Kennwort = '".md5 ($_REQUEST["pwd"])."')";
$result = mysql_query ($sql);

if (mysql_num_rows ($result) > 0)
{
// Benutzerdaten in ein Array auslesen.
$data = mysql_fetch_array ($result);

// Sessionvariablen erstellen und registrieren
$_SESSION["user_id"] = $data["Id"];
$_SESSION["user_nickname"] = $data["Nickname"];
$_SESSION["user_nachname"] = $data["Nachname"];
$_SESSION["user_vorname"] = $data["Vorname"];

header ("Location: $data2["Ziel"]);
$data2 = mysql_fetch_array(mysql_query("SELECT * FROM `benutzerdaten` WHERE `Id` = ' ".$_SESSION["user_id"]." ' "));


header ("Location: $data2["Ziel"]);

}
else
{
header ("Location: index.php?fehler=1");
}
?>

</body>
</html>



Ich bekomme jetzt folgende Fehlermeldung:
Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/web319/html/bob/login.php on line 41

Irgendwo ist also noch der Wurm drin !

Cordula ! Könntest du noch mal eben ?

Zeile 41 ist übrigens folgende:
header ("Location: $data2["Ziel"]);

Ist die evtl. einfach zuviel ? Da sie ja unten nochmal auftaucht ?
 
Nee, das ist es auch nicht ! Wenn ich Zeile 41 lösche, krieg ich den selben ERROR in Zeile 44, also beim zweiten header ("Location: $data2["Ziel"]);
 
Nee ! Ich hab deinen Code 1:1 übernommen und meine Benutzerdaten eingetragen. Immer noch ERROR !

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/web319/html/bob/login.php on line 45

Zeile 45:

header ("Location: $data2['Ziel']");

Ist doch sicher nur noch ne klitzekleine Kleinigkeit. Aber was ?
 
Warum verwendet hier eigentlich keiner Code-Tags? Kann doch nicht so schwer sein, auf "PHP" zu klicken und den Code da rein zu pasten... :confused:

Außerdem den Frage: Steht in $data2 überhaupt was drinne? Warum wird nirgends mysql_error() verwendet, um evtl. Fehler finden zu können?
 

Neue Beiträge

Zurück