Denkfehler in einem Login-Script
moidaschl 20.11.2004 - 16:57 507 1
moidaschl
Vollzeit-Hackler
|
Also ich möcht ned diverse Login-Skripten kopieren usw, jetz hab ich mir mal selber gedanken gemacht. es funktioniert an und für sich schon recht gut, nur der logout macht mir kopfzerbrechen man kann sich einfach ned ausloggen i glaub es liegt daran dass die session ned wirklich zerstört wird ![:D](/images/smilies/biggrin.gif) hier mal der source: function adminpanel() {
echo "willkommen im adminpanel<br \>";
echo "<a href=\"index.php?main=admin&local=logout&\">Logout</a>\n";
}
function loginformular() {
echo "<form action=\"index.php?main=admin\" method=\"post\">\n";
echo "<table class=\"login\" width=\"50%\" align=\"center\">\n";
echo " <tr>\n";
echo " <td><b>Username</b></td>\n";
echo " <td class=\"login_rightboxes\">";
$sql = "SELECT
ID, Name
FROM
user
ORDER BY
Name ASC;";
$result = mysql_query($sql) OR die(mysql_error());
echo " <select size=\"1\" name=\"UserID\" id=\"name\" class=\"textfeld\">\n";
echo " <option value=\"0\" selected=\"selected\">--- Bitte Auswählen ---</option>\n";
while($row = mysql_fetch_assoc($result)) {
echo "<option value=\"".$row['ID']."\">".$row['Name']."</option>\n";
} // while $row mysql fetch assoc
echo " </select>\n";
echo "</td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td><b>Passwort</b></td>\n";
echo " <td class=\"login_rightboxes\"><input type=\"password\" name=\"Password\" class=\"textfeld\"/></td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td><input type=\"submit\" name=\"submit\" value=\"Login\" class=\"textfeld\" /></td>\n";
echo " <td class=\"login_rightboxes\"> </td>";
echo " </tr>\n";
echo "</table>\n";
echo "</form>\n";
}
if(login_right($_POST['UserID'], $_POST['Password'])){
// UserIp und SessionID werden in die Datenbank eingetragen
$UserIP = $HTTP_SERVER_VARS["REMOTE_ADDR"];
$SessionID = session_id();
$sql = "INSERT INTO user_lin
(SessID, UserIP)
VALUES
('".$SessionID."', '".$UserIP."')";
mysql_query($sql) OR die(mysql_error());
// Jetzt erst das Adminpanel aufrufen
adminpanel();
} else {
if($_GET['local'] == "logout")
session_destroy();
$UserIP = $HTTP_SERVER_VARS["REMOTE_ADDR"];
$SessionID = session_id();
if(check_login($UserIP, $SessionID))
adminpanel();
else
loginformular();
}
oben zwei funktionen, damit ich es unten ned 10000 mal schreiben muss.. die funktionen check_login und login_right sind hier check_login function check_login($uip, $sid) {
$sql = "SELECT
COUNT(*) as Anzahl
FROM
user_lin
WHERE
UserIP = '".$uip."' AND
SessID = '".$sid."'";
$result = mysql_query($sql) OR die(mysql_error());
$row = mysql_fetch_assoc($result);
mysql_free_result($result);
return $row['Anzahl'];
}
login_right function login_right($id, $pass) {
$sql = "SELECT
COUNT(*) as Anzahl
FROM
user
WHERE
ID = '".$id."' AND
Password = MD5('".$pass."');";
$result = mysql_query($sql) OR die(mysql_error());
$row = mysql_fetch_assoc($result);
mysql_free_result($result);
return $row['Anzahl'];
}
tia
Bearbeitet von moidaschl am 20.11.2004, 17:03
|
moidaschl
Vollzeit-Hackler
|
verdammt, wie kann man so angrennt sein ![:D](/images/smilies/biggrin.gif) ich schreib ja die werte in die datenbank, ich sollte sie beim logout auch wieder entfernen muha oke ![:D](/images/smilies/biggrin.gif) sry 4 thread, könnts ihn auch deleten
|