Hallo zusammen,
ich beschäftige mich erst seit heute Morgen mit dem Thema Login mit Hilfe von Cookies und Sessions usw. Habe es aber geschafft ne rudimentäre Userverwaltung aufzubauen die mit PHP, MySQL und Sessions arbeitet.
Nun würde mich interessieren ob ihr den Schutz für ausreichend haltet. Später sollen über die Datenbank Daten wie eMail-Adressen usw. gespeichert werden. Es wäre also ganz gut, wenn man nicht ohne weiteres auf die Daten zugreifen kann.
Das hier ist mein Code:
Wie man sieht, überprüfe ich die Anmeldung mit Hilfe der SessionID. Die Frage ist nur, wie sicher diese Art der Anmeldung ist. Denn die SessionID bleibt ja in der MySQL Tabelle stehen. Wenn es nicht sicher genug ist, stellt sie die Frage, wie man das verbessern kann.
Der Aufbau der MySQL Tabelle ist wie folgt:
Ich hoffe ihr könnt damit etwas anfangen und mir evtl. auch helfen. Danke schonmal für die Hilfe!
Gruß Alpenmerlin
ich beschäftige mich erst seit heute Morgen mit dem Thema Login mit Hilfe von Cookies und Sessions usw. Habe es aber geschafft ne rudimentäre Userverwaltung aufzubauen die mit PHP, MySQL und Sessions arbeitet.
Nun würde mich interessieren ob ihr den Schutz für ausreichend haltet. Später sollen über die Datenbank Daten wie eMail-Adressen usw. gespeichert werden. Es wäre also ganz gut, wenn man nicht ohne weiteres auf die Daten zugreifen kann.
Das hier ist mein Code:
PHP-Code:
<?
function logged_in() {
$sql = "SELECT UserID FROM users WHERE UserSession='".session_id()."' LIMIT 1";
$query = mysql_query($sql);
if (mysql_num_rows($query) == 1)
return true;
else
return false;
}
function check_pwd($userName, $userPass) {
$sql = "SELECT UserID AS UserID FROM users WHERE UserName='".$userName."' AND UserPass=MD5('".$userPass."') LIMIT 1;";
$query = mysql_query($sql);
if (mysql_num_rows($query) == 1) {
$user = mysql_fetch_array($query);
return $user['UserID'];
}
else
return false;
}
function update_session($userId) {
$sql = "UPDATE users SET UserSession='".session_id()."' WHERE UserID=".$userId;
$query = mysql_query($sql);
if (mysql_affected_rows() == 1){
return true;
}
else {
return false;
}
}
function logout() {
$sql = "UPDATE users SET UserSession = NULL WHERE UserSession='".session_id()."'";
$query = mysql_query($sql);
if (mysql_affected_rows() == 1)
return true;
else
return false;
}
session_name("sessionid");
session_start();
require_once("connectdb.php");
connectdb("test");
if (isset($_POST['sent'])) {
$_POST['sent']=0;
$userid = check_pwd($_POST['userName'], $_POST['userPass']);
if ($userid) {
update_session($userid);
}
else {
echo "LogIn fehlgeschlagen!";
session_destroy();
}
}
if (!logged_in())
echo ' <form method="post" action="'.$_SERVER["PHP_SELF"].'">
<label>User: </label><input name="userName" type="text"><br>
<label>PWD: </label><input name="userPass" type="password"><br>
<input type="submit" value="Eintragen">
<input type="reset">
<input type="hidden" name="sent" value="1">
</form>';
else
echo '<a href="logout.php">Ausloggen</a>';
?>
Der Aufbau der MySQL Tabelle ist wie folgt:
PHP-Code:
UserID int(11) PRI NULL auto_increment
UserName varchar(30) UNI
UserPass varchar(32)
UserSession varchar(32) YES NULL
UserMail varchar(150) UNI
Gruß Alpenmerlin
Kommentar