Ich versuche mich gerade an diesem Beispiel hier:
http://www.php-kurs.info/tutorial-lo...datenbank.html
Komme aber irgendwie nicht weiter.
Welche Datei muss ich aufrufen, um das ganze zu starten? Doch sicher die html-Datei?
Ich bin soweit, dass ich den Kontakt zur Datenbank bekomme, wenn ich die php-Datei starte.
Was aber nicht klappt, ist, wenn ich die html-Datei starte und Name und Passwort eingabe. Es passiert gar nichts weiter. Es scheint, als ob die php-Datei gar nicht aufgerufen wird.
Hier mein Code:
Einmal die html-Datei:
HTML-Code:
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
</head>
<body>
<form action="LogIn.php" method="post">
Username:<br>
<input type="text" size="24" maxlength="50"
name="username"><br><br>
Ihr Passwort:<br>
<input type="password" size="24" maxlength="50"
name="passwort"><br>
<input type=submit name=submit value="Einloggen"> //das verstehe ich überhaupt nicht
</form>
</body>
</html>
Einmal die php-Datei
PHP-Code:
<?php
SESSION_START();
?>
<?php
$_db_host = "xxxxxxx"; # kd
$_db_datenbank = "xxxxxxxx";
$_db_username = "xxxxxxxx";
$_db_passwort = "xxxxxxxx";
# Datenbankverbindung herstellen
$link = mysql_connect($_db_host, $_db_username, $_db_passwort);
# Hat die Verbindung geklappt ?
if (!$link)
{
die("Keine Datenbankverbindung möglich: " . mysql_error());
}
# Verbindung zur richtigen Datenbank herstellen
$datenbank = mysql_select_db($_db_datenbank, $link);
if (!$datenbank)
{
echo "Kann die Datenbank nicht benutzen: " . mysql_error();
mysql_close($link); # Datenbank schliessen
exit; # Programm beenden !
}
echo "bin hier"; #erreiche ich nicht, wenn ich die html-seite aufrufe
# Ist die $_POST Variable submit nicht leer ???
# dann wurden Logindaten eingegeben, die müssen wir überprüfen !
if (!empty($_POST["submit"]))
{
# Die Werte die im Loginformular eingegeben wurden "escapen",
# damit keine Hackangriffe über den Login erfolgen können !
# Mysql_real... ist auf jedenfall dem Befehle addslashes()
# vorzuziehen !!! Ohne sind mysql injections möglich !!!!
$_username = mysql_real_escape_string($_POST["username"]);
$_passwort = mysql_real_escape_string($_POST["passwort"]);
# Befehl für die MySQL Datenbank
# Wichtig ist, die Variablen von $_username und $_passwort
# zu umklammern. Da wir mit Anführungszeichen den SQL String
# angeben, nehmen wir dafür die einfachen Anführungszeichen
# die man neben der Enter Taste auf der # findet !
$_sql = "SELECT * FROM login_username WHERE
username='$_username' AND
passwort='$_passwort' AND
usergeloescht=0
LIMIT 1";
# Prüfen, ob der User in der Datenbank existiert !
$_res = mysql_query($_sql, $link);
$_anzahl = @mysql_num_rows($_res);
# Die Anzahl der gefundenen Einträge überprüfen. Maximal
# wird 1 Eintrag rausgefiltert (LIMIT 1). Wenn 0 Einträge
# gefunden wurden, dann gibt es keinen Usereintrag, der
# gültig ist. Keinen wo der Username und das Passwort stimmt
# und user_geloescht auch gleich 0 ist !
if ($_anzahl > 0)
{
echo "Der Login war erfolgreich.<br>";
# In der Session merken, dass der User eingeloggt ist !
$_SESSION["login"] = 1;
# Den Eintrag vom User in der Session speichern !
$_SESSION["user"] = mysql_fetch_array($_res, MYSQL_ASSOC);
# Das Einlogdatum in der Tabelle setzen !
$_sql = "UPDATE login_username SET letzterlogin=NOW()
WHERE id=".$_SESSION["user"]["id"];
mysql_query($_sql);
}
else
{
echo "Die Logindaten sind nicht korrekt.<br>";
}
}
# Ist der User eingeloggt ???
if ($_SESSION["login"] == 0)
{
# ist nicht eingeloggt, also Formular anzeigen, die Datenbank
# schliessen und das Programm beenden
include("loginformular.html");
mysql_close($link);
echo "<br><br> iss ja blöd<br><br>";
exit;
}
# Hier wäre der User jetzt gültig angemeldet ! Hier kann
# Programmcode stehen, den nur eingeloggte User sehen sollen !!
echo "<br> <br>Hallo, Sie sind erfolgreich eingeloggt !<br>";
# Datenbank wieder schliessen
mysql_close($link);
?>
Was mache ich falsch?
Dann das nächste.
In der php-Datei muss ich ja das Passwort meiner Datenbank eintragen. Das kommt mir reichlich unsicher vor. Geht das irgendwie auch anders. Oder ist es unproblematisch?