Hai Leute auf meiner Test-Homepage Frame-Test könnt ihr es mal
Testen: „Username: 1“ „Passwort: 1“
so bald man auf „Geschützer Bereich“ drückt kommt „Bitte erst einloggen“.
Hier ist der Code.
login.php
[PHP]<?php
session_start();
?>
<?php
$verbindung = mysql_connect("****", "*****" , "****")
or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
mysql_select_db("*****") or die ("Datenbank konnte nicht ausgewählt werden");
$username = $_POST["username"];
$passwort = md5($_POST["password"]);
$abfrage = "SELECT username, password FROM *** WHERE username LIKE '$username' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);
if($row->password == $password)
{
$_SESSION["username"] = $username;
echo "Login erfolgreich.
Geschützer Bereich";
}
else
{
echo "Benutzername und/oder Passwort waren falsch.
Login";
}
?>
[/PHP]geheim.php
[PHP]<?php
session_start();
?>
<?php
if(!isset($_SESSION["username"]))
{
echo "Bitte erst
einloggen";
exit;
}
?> [/PHP]
Achte auf deine Variablennamen.
Vor session_start() mal das eingeben:
[PHP]error_reporting(E_STRICT);[/PHP]
Außerdem wirst du ein paar andere Fehler haben:
Du überprüfst nicht, ob es den Benutzer in $username auch wirklich gibt.
Du solltest daher
[PHP]
$sql = „SELECT username, password FROM *** WHERE username = ‚$username‘ LIMIT 1“; // Hier = statt like.
// Wenn du sauber arbeiten würdest, bräuchstest du das limit gar nicht.
$result = mysql_query($sql);
if ($row = mysql_fetch_assoc($result) /* Warum benutzt du object? /) {
/ HIer kannst du dann mit $row vergleichen. /
} else {
/ Username gibt es gar nicht. */
}
[/PHP]
Außerdem überprüfst du nicht, ob das Formular wirklich gesendet wurde.
Schau dir mal das an:
mysql_fetch_assoc()
isset()
error_reporting()
Ein letzter Tipp:
[PHP]<?php
session_start();
?>
<?php
$verbindung = mysql_connect("****", "*****" , "****")[/PHP]
Geht auch kürzer:
[PHP]<?php
session_start();
$verbindung = mysql_connect("****", "*****" , "****")[/PHP]
Danke für die Antworten!!
aber ich blick das noch nicht mit [PHP]$result = mysql_query($sql);
if ($row = mysql_fetch_assoc($result) /* Warum benutzt du object? /) {
/ HIer kannst du dann mit $row vergleichen. /
} else {
/ Username gibt es gar nicht. */
} [/PHP][PHP]<?php
error_reporting(E_STRICT);
session_start();
?>
<?php
<?php
session_start();
$verbindung = mysql_connect("****", "*****" , "****")
or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
mysql_select_db("****") or die ("Datenbank konnte nicht ausgewählt werden");
$username = $_POST["username"];
$passwort = md5($_POST["password"]);
$abfrage = "SELECT username, password FROM login WHERE username = '$username' LIMIT 1";
$ergebnis = mysql_query($abfrage);
if($row->password == $password)
{
$_SESSION["username"] = $username;
echo "Login erfolgreich.
Geschützer Bereich";
}
else
{
echo "Benutzername und/oder Passwort waren falsch.
Login";
}
?>
[/PHP]
Wenn du
[PHP]$res = mysql_query(‚select … where username = '‘.$username.‚'‘);
$row = mysql_fetch_assoc($res);
echo $row[‚username‘];[/PHP]
hast.
Gehst du davon aus, dass es den User aus $username wirklich in der Datenbank gibt.
Aber was wenn es den Benutzernamen nicht gibt? Dann kannst du es nicht ausgeben.
Das if ($row = mysql_fetch_assoc($res)) {} überprüft OB es auch einen Eintrag in der Datenbank gibt. Wenn nicht, dann wird das if() eben nicht ausgeführt.