Login-Skript funktioniert nicht richtig
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
angepasst code
anhieb
auslese
benutzerdaten
code
datenbank
datum
dokument
fehler
formular
header
http
kennwort
login
meldung
problem
tabelle
url
weben
-
Salvete omnes!
Ich habe mir heute mittels diesem Tutorial http://www.tutorials.de/forum/php-tutorials/9684-php-mysql-login-system-mit-sessions.html ein Login-Script erstellt.
Ich habe auch 2 Testbenutzer angelegt (benutzer: test, passwort: 1234), allerdings bekomme ich bei jedem Versuch mich anmelden zu wollen die Meldung: "Die Zugangsdaten waren ungültig. "
Gibt es dafür irgendeinen ersichtlichen Grund...?
Ich habe im Grunde 1:1 das Tut. befolgt.
Geändert habe ich nur, dass ich die Felder "Nachname" und "Vorname" weglasse...
Vielen Dank im Voraus für eure Hilfe!
mfg
Cdot -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hi.
Poste mal genau, was du geschrieben hast.
Vielleicht ist ja ein Tipp-Fehler oder ein anderer Fehler drin.
LG
Play5 -
intern.php:
<?php
include ("checkuser.php");
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
</head>
<body>
BenutzerId: <?php echo $_SESSION["user_id"]; ?><br>
Nickname: <?php echo $_SESSION["user_nickname"]; ?><br>
<hr>
<a href="logout.php">Ausloggen</a>
</body>
</html>
login.php:
<?php
session_start ();
$connectionid = mysql_connect ("mysql.lima-city.de", "USER*****", "********");
if (!mysql_select_db ("db_92657_1", $connectionid))
{
die ("Keine Verbindung zur Datenbank");
}
$sql = "SELECT ".
"Id, Nickname ".
"FROM ".
"benutzerdaten ".
"WHERE ".
"(Nickname like '".$_REQUEST["name"]."') AND ".
"(Kennwort = '".md5 ($_REQUEST["pwd"])."')";
$result = mysql_query ($sql);
if (mysql_num_rows ($result) > 0)
{
$data = mysql_fetch_array ($result);
$_SESSION["user_id"] = $data["Id"];
$_SESSION["user_nickname"] = $data["Nickname"];
header ("Location: intern.php");
}
else
{
header ("Location: formular.php?fehler=1");
}
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
</head>
<body>
</body>
</html>
logout.php:
<?php
ob_start ();
session_start ();
session_unset ();
session_destroy ();
header ("Location: formular.php");
ob_end_flush ();
?>
checkuser.php:
<?php
session_start ();
if (!isset ($_SESSION["user_id"]))
{
header ("Location: formular.php");
}
?>
formular.php:
<?php session_start (); ?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
</head>
<body>
<?php
if (isset ($_REQUEST["fehler"]))
{
echo "Die Zugangsdaten waren ungültig.";
}
?>
<form action="login.php" method="post">
Name: <input type="text" name="name" size="20"><br>
Kennwort: <input type="password" name="pwd" size="20"><br>
<input type="submit" value="Login">
</form>
</body>
</html>
-
Es gab schon rechlich user die diesen Ligin Script benutzt haben und Probleme gemeldet haben.
Es gibt 100 andere die Funktionieren.
Zum Beispiel auf Web Banana -
$sql = "SELECT ".
"Id, Nickname ".
"FROM ".
"benutzerdaten ".
"WHERE ".
"(Nickname like '".$_REQUEST["name"]."') AND ".
"(Kennwort = '".md5 ($_REQUEST["pwd"])."')";
$result = mysql_query ($sql);
es schaut vorallem hier richtig hässlich aus...
ich würde es eifnach so lösen:
$name = $_POST["name"]; $kennwort = md5($_POST["pwd"]); $result = mysql_query("SELECT Id, Nickname FROM benutzerdaten WHERE Nickname = $name AND Kennwort = $kennwort") or die (mysql_error());
-
Vielen Dank erstmal für die posts!
Ich werde zuerst einmal versuchen, den Code etwas zu verändern... Wenn das alles nichts hilft werde ich mich "web-banana" widmen...
mfg Cdot
habe mir jetzt das Skript von web-banana geholt. Nun hat sich lediglich mein Problem geändert: und zwar bekomme ich jedesmal die meldung: falsche Passwort!
ich habe wieder 2 Testbenutzer in der Tabelle angelegt und bekomme trotzdem nur diese Meldung...
Beitrag zuletzt geändert: 31.1.2010 15:36:14 von cdot -
Ist das Passwort in der Datenbank denn auch md5-verschlüsselt? bei der abfrage ist es das zumindest...müsstest du mal überprüfen.
-
hi
ich habe mal dein kode angesehen und minimal an meine tabelle angepasst:
weil es eben so ist und sehe da, auf anhieb hat es funktioniert.... mysql_connect ... mysql_select_db ... $_SESSION["user_id"] = $data["id"]; $_SESSION["user_nickname"] = $data["username"];
demnach was mir da einfällt: du hast unsaubere daten in der db. bei "insert ..." würde ich mir angewöhnen trim zu verwenden. user haben unheimliche methoden mit der tasteneingabe umzugehen (*zehnfingerchenbrech* :o)). (oder zumindest beim auslesen, was mir aber als datenverfälschung zumutet).
sehe dir deine daten in der db an (trailing spaces??). das programm rennt ;o)
==== edit
ja was vergessen! das ist schon auch deshalb so, weil 'like' in der query nicht funktioniert. um das mal zu ändern muss die query wie folgt modifiziert werden:
(also die zwei '%' zeichen!)$sql = "SELECT Id, Nickname ". "FROM benutzerdaten ". "WHERE (Nickname like '%".$_REQUEST["name"]."%') AND ". " (Kennwort = '".md5 ($_REQUEST["pwd"])."')";
das halte ich allerdings auch nicht unproblematisch! die menge wird mal hie und da eine mehr als nur einermenge!! dagegen ist der skript nicht gewappnet!
Beitrag zuletzt geändert: 23.2.2010 19:15:52 von czibere -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage