Sicheres Login: Wie?

[phpf]mysql_real_escape_string[/phpf] statt [phpf]addslashes[/phpf].

Noch dazu, was genau macht deine Funktion?
Sie testet ob der Benutzer da ist... Und dann macht sie nichts mehr.
Kein Rückgabewert, keine Weiterverarbeitung, o. ä.

Außerdem wäre es viel schöner, die Parameter in der Funktion zu "behandeln", als beim Übergeben an die Funktion.
 
Sie soll testen ob der User existiert bzw. ob das Passwort dazu stim

Ich hoffe ich hab das mit mysql_real_escape_string richtig verstanden

PHP:
function checklogin($user,$pass)
{
$sql="SELECT
			user,
			password
		FROM
			users
		WHERE
			user = ".mysql_real_escape_string($user)." AND password = MD5(".mysql_real_escape_string($pass).");";
			
		$result = mysql_query($sql) OR die(mysql_error());
        $row = mysql_fetch_assoc($result);
		mysql_free_result($result);
}

Was hat mysql_real_escape_string für Vorteile gegenüber addslashes?
 
PHP:
function checklogin($user, $pass)
{
	$sql = "SELECT password
		  FROM users
		  WHERE user = '".mysql_real_escape_string($user)."'";
	if (!($result = mysql_query($sql)) || !($row = mysql_fetch_assoc($result))) {
		return false;
	}
	mysql_free_result($result); 
	return $row['password'] == md5($pass);
}
 
Danke Gumbo.

Ich hab mein Script soweit fertig. Allerdings funktioniert die Anzeige noch nicht. Ich will erreichen, wenn man eingeloggt ist, das das Login Formular verschwindet und das das Userpanel erscheint.

hier mal mein Code:

login.inc.php

PHP:
<?php
if(isset($_GET['action']) AND ("logout" == $_GET['action'])) {
        unset($isloggedin);
        echo "<p>\n";
        echo "    Sie haben sich ausgeloggt. Um wieder in den Adminbereich\n";
        echo "    zu kommen müssen sie sich wieder Einloggen\n";
        echo "</p>\n";
}
else if(isset($_GET['action']) AND ("login" == $_GET['action'])) {
$username=$_POST['username'];
$password=$_POST['password'];

checklogin($username, $password);
}
if(isset($isloggedin))
{
?>
<span class="Stil1">Willkommen <?php echo $username; ?>.<br />
Ihr letzter Besuch war am <?php echo $letztlog;?>.<br />
<a href="index.php?p=profil">Profil</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="index.php?action=logout">Logout</a><br /></span>
<?php
}
else
{
?>

          <span class="Stil1">User Area</span><br />
  <img src="images/uberschrift.png" alt="Überschrift" width="220" height="5" />
          <table width="219" border="0" id="login"><form action="index.php?action=login" method="post">
          <tr>
            <td colspan="2" valign="middle"><label for="username"></label>
              
                <div align="left">
                  <input type="text" name="username" id="username" />
            <span class="Stil1">Username</span></div></td>
          </tr>
          <tr>
            <td colspan="2" valign="middle"><label for="Password"></label>
              <div align="center" class="Stil2">
                <div align="left">
                  <input type="password" name="password" id="password" />
                <span class="Stil1">Password</span></div>
              </div></td>
          </tr>
          <tr>
            <td colspan="2" valign="middle" class="Stil1"><input type="checkbox" name="staylogged" id="staylogged" />
              <label for="staylogged"></label>
              Eingeloggt bleiben!</td>
          </tr>
          <tr>
            <td width="116" valign="middle"><label for="Reset"></label>
              <div align="center">
                <input type="reset" name="Reset" id="Reset" value="Zurücksetzen" />
              </div></td>
            <td width="93" valign="middle"><label for="Senden"></label>
              <div align="center">
                <input type="submit" name="Senden" id="Senden" value="Senden" />
            </div></td>
          </tr></form>
  </table>

<?php
}


?>

und hier die function.lib.php

PHP:
<?php
function checklogin($user, $pass)
{
    $sql = "SELECT password
          FROM users
          WHERE user = '".mysql_real_escape_string($user)."'";
    if (!($result = mysql_query($sql)) || !($row = mysql_fetch_assoc($result))) {
		unset($isloggedin);
        return false;
    }
	else
	{
	$isloggedin == true;
	}
	
    mysql_free_result($result); 
    return $row['password'] == md5($pass);
} 
?>
 
Dann solltest du vielleich die Variable $isloggedin setzen. also so in etwa:
PHP:
<?php
if(isset($_GET['action']) AND ("logout" == $_GET['action'])) {
        unset($isloggedin);
        echo "<p>\n";
        echo "    Sie haben sich ausgeloggt. Um wieder in den Adminbereich\n";
        echo "    zu kommen müssen sie sich wieder Einloggen\n";
        echo "</p>\n";
}
else if(isset($_GET['action']) AND ("login" == $_GET['action'])) {
$username=$_POST['username'];
$password=$_POST['password'];

$isloggedin = checklogin($username, $password);
}
if(isset($isloggedin))
{
?>
<span class="Stil1">Willkommen <?php echo $username; ?>.<br />
Ihr letzter Besuch war am <?php echo $letztlog;?>.<br />
<a href="index.php?p=profil">Profil</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="index.php?action=logout">Logout</a><br /></span>
<?php
}
else
{
?>

          <span class="Stil1">User Area</span><br />
  <img src="http://www.tutorials.de/forum/images/uberschrift.png" alt="Überschrift" width="220" height="5" />
          <table width="219" border="0" id="login"><form action="index.php?action=login" method="post">
          <tr>
            <td colspan="2" valign="middle"><label for="username"></label>
              
                <div align="left">
                  <input type="text" name="username" id="username" />
            <span class="Stil1">Username</span></div></td>
          </tr>
          <tr>
            <td colspan="2" valign="middle"><label for="Password"></label>
              <div align="center" class="Stil2">
                <div align="left">
                  <input type="password" name="password" id="password" />
                <span class="Stil1">Password</span></div>
              </div></td>
          </tr>
          <tr>
            <td colspan="2" valign="middle" class="Stil1"><input type="checkbox" name="staylogged" id="staylogged" />
              <label for="staylogged"></label>
              Eingeloggt bleiben!</td>
          </tr>
          <tr>
            <td width="116" valign="middle"><label for="Reset"></label>
              <div align="center">
                <input type="reset" name="Reset" id="Reset" value="Zurücksetzen" />
              </div></td>
            <td width="93" valign="middle"><label for="Senden"></label>
              <div align="center">
                <input type="submit" name="Senden" id="Senden" value="Senden" />
            </div></td>
          </tr></form>
  </table>

<?php
}


?>
 
Ok jetzt bin ich erst recht verwirrt.

Mit meiner Funktion geht alles, mit der von Gumbo gehts nicht.

Jetzt muss ich nur noch das mit dem eingeloggt bleiben hinkriegen.
 
Zurück