Hallo.
Habe ein sehr sehr sehr einfaches Login-Skript in PHP/MySQL programmiert. Dazu 2 Fragen:
1. Wenn man sich registriert, wird der Datensatz nicht in die DB eingetragen. Warum?
2. Wie kann ich mein Skript sicherer machen? Welche PW Verschlüsselung am besten? Mehr Sicherheit insgesamt?
Danke
Habe ein sehr sehr sehr einfaches Login-Skript in PHP/MySQL programmiert. Dazu 2 Fragen:
1. Wenn man sich registriert, wird der Datensatz nicht in die DB eingetragen. Warum?
2. Wie kann ich mein Skript sicherer machen? Welche PW Verschlüsselung am besten? Mehr Sicherheit insgesamt?
Danke
PHP:
login.html
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
</head>
<body>
<form action="login.php" method="post">
<h1>Login</h1>
Benutzername:<br />
<input type="text" name="username" /><br /><br />
Passwort:<br />
<input type="password" name="pw" /><br /><br />
<input type="submit" value="Login" /><br /><br /><br />
<a href="register.html">Registrieren</a>
</form>
</body>
</html>
PHP:
login.php
<?php
//Session starten
session_start();
//Datei einbinden (MySQL-Verbindung)
include("mysql_connect.php");
$username = $_POST["username"];
$pw = md5($_POST["pw"]);
//Überprüfung, ob Felder leer sind
if($username == "" OR $pw == "")
{
echo "Sie haben nicht alle Felder ausgefüllt. <a href=\"login.html\">Zurück</a>";
}
//Datenbankabfrage, ob dieser Benutzer vorhanden ist
$abfrage = "SELECT * FROM Profil WHERE username like '$username' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);
//Wenn Passwörter übereinstimmen, wird ein Session erstellt und weitergeleitet nach index.php
if($row->pw != $pw)
{
echo "Das Passwort stimmt nicht. <a href=\"login.html\">Zurück</a>";
}
else
{
//MySQL-Verbindung schließen
mysql_close();
$_SESSION["username"] = $username;
header("Location: index.php");
}
?>
PHP:
index.php
<?php
//Session starten
session_start();
//Session vorhanden?
if(isset($_SESSION["username"]))
{
?>
<!DOCTYPE html>
<html>
<head>
<title>Index</title>
</head>
<body>
<h1>Index</h1>
<h2>Guten Tag, <?php echo $_SESSION["username"]; ?></h2>
<a href="logout.php">Ausloggen</a>
</body>
</html>
<?php
}
else
{
echo "Bitte erst <a href=\"login.html\">einloggen.</a>";
}
?>
PHP:
logout.php
<?php
//Session starten
session_start();
//Session zerstören
if(session_destroy())
{
header("Location: login.html");
}
?>
PHP:
register.html
<!DOCTYPE html>
<html>
<head>
<title>Registrieren</title>
</head>
<body>
<form action="register.php" method="post">
<h1>Registrieren</h1>
Benutzername:<br />
<input type="text" name="username" /><br /><br />
Passwort:<br />
<input type="password" name="pw" /><br /><br />
Passwort wiederholen:<br />
<input type="password" name="pw2" /><br /><br />
<input type="submit" value="Login" /><br /><br /><br />
<a href="login.html">Einloggen</a>
</form>
</body>
</html>
PHP:
register.php
<?php
//Datei einbinden (MySQL-Verbindung)
include("mysql_connect.php");
$username = $_POST["username"];
$pw = md5($_POST["pw"]);
$pw2 = md5($_POST["pw2"]);
//Sind Felder leer?
if($username == "" OR $pw == "" OR $pw2 == "")
{
echo "Sie haben nicht alle Felder ausgefüllt. <a href=\"register.html\">Zurück</a>";
}
//Stimmen die Passwörter überein?
if($pw != $pw2)
{
echo "Die Passwörter stimmen nicht überein. <a href=\"register.html\">Zurück</a>";
}
//Daten in Datenbank eintragen
$eintrag = "INSERT INTO Profil (username, pw) VALUES ('".mysql_real_escape_string($username)."', '$pw')";
//Ausgabe des Ergebnis
if($eintrag == true)
{
//MySQL-Verbindung schließen
mysql_close();
header("Location: login.html");
}
else
{
echo "Daten konnten nicht gespeichert werden. <a href=\"register.html\">Zurück</a>";
}
?>