"We are back" « oc.at

Denkfehler in einem Login-Script

moidaschl 20.11.2004 - 16:57 507 1
Posts

moidaschl

Vollzeit-Hackler
Avatar
Registered: Aug 2002
Location: 1210, ABK-D/L
Posts: 4029
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
hier mal der source:

Code: PHP
 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
Code: PHP
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
Code: PHP
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
Avatar
Registered: Aug 2002
Location: 1210, ABK-D/L
Posts: 4029
verdammt, wie kann man so angrennt sein :D

ich schreib ja die werte in die datenbank, ich sollte sie beim logout auch wieder entfernen

muha oke :D

sry 4 thread, könnts ihn auch deleten
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz