Login Problem

Meine Ausgangslage:
formular.php
PHP:
<?php session_start (); ?> 
<html>  
<head>  
  <title>Login</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>

login.php
PHP:
<?php  
// Session starten 
session_start (); 

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

$sql = "SELECT ".  
    "userid, username, vorname, nachname, geld, stufeg1, tstamp".  
  "FROM ".  
    "users ".  
  "WHERE ".  
    "(username like '".$_REQUEST["name"]."') AND ".  
    "(userpass = '".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["userid"];  
  $_SESSION["user_nickname"] = $data["username"];  
  $_SESSION["user_nachname"] = $data["nachname"];  
  $_SESSION["user_vorname"] = $data["vorname"];
  $_SESSION["user_geld"] = $data["geld"];
  $_SESSION["user_stufeg1"] = $data["stufeg1"];

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

Wenn ich nun beim Formular Passwort und Name eines in der Datenbank eingetragenen users eingebe, kommt die Meldung "Die Zugangsdaten waren ungültig". Daraus schliesse ich, dass "mysql_num_rows ($result) > 0" nicht erfüllt ist, also kein Datensatz die Bedingungen erfüllt. Ich hab aber Passwort und Benutzername mehrmals überprüft...

Ich hab auch mal noch die Bedingung mysql_num_rows ($result) > 0 gelöscht und dazu natürlich auch den header zu formular.php. Als ich mich dann einloggen wollte, geschah gar nichts, bzw. ich blieb ganz einfach auf der formularseite.

Findet jemand den Fehler?

mfg frankenstein
 
Hi,

sag doch einfach mal
PHP:
$result = mysql_query ($sql) OR die(mysql_error());

und ich glaube du wirst ein Fehler bekommen ;)

Und man verwendet kein $_REQUEST mehr sondern entweder $_POST oder $_GET!
 
da kommt folgende Fehlermeldung:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE (username like 'frankenstein') AND (userpass = '098f6bcd4621d373cade4e8326' at line 1

ich werde daraus trotzdem nich schlau.... Ich find den Fehler in der Syntax nich...
 
PHP:
$sql = "SELECT ".  
    "userid, username, vorname, nachname, geld, stufeg1, tstamp".  
  "FROM ".  
    "users ".  
  "WHERE ".  
    "(username like '".$_REQUEST["name"]."') AND ".  
    "(userpass = '".md5 ($_REQUEST["pwd"])."')";

Hinter 'tstamp' fehlt ein Leerzeichen.

Weiterhin solltest du dringend [phpf]mysql_real_escape_string[/phpf] verwenden, um SQL Injektionen vorzubeugen.
 
Ich nehme an, dass ein Leerzeichen am Ende von Zeile 2 in deinem Query fehlt.

P.S.: Vielleicht schaust du dir mal PDO und Parambinding an.Und ich würde die Formular Daten prüfen bevor ich sie ans Query übergebe.

Greetz

Shrink
 

Neue Beiträge

Zurück