PHP-Code:
<?php
function login($user, $pass)
{
echo 'TODO: wenn fertig, "nur zum Debuggen"-Zeilen entfernen', "
\n";
error_reporting(E_ALL); // nur zum Debuggen
ini_set('display_errors', true); // nur zum Debuggen
$con = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die(mysql_error());
// if($con) - überflüssig, denn wenn $conn->false, dann wäre schon or die(mysql_error()) angesprungen
// aber wenn $con schon so artig gespeichert wird, sollte es auch benutzt werden ..in den übrigen mysql-Funktionen
// bei mysql_error mache ich inkonsequenterweise eine Ausnhame...
mysql_select_db(MYSQL_DB, $con) or die(mysql_error()); // ja, auch das kann schief gehen -> Fehlerbehandlung
/* $user und $pass gehen unbehandelt in die Abfrage ein?
Gehen Sie direkt zu [url]http://faq-phpfriend.de/q/q-sql-injection.html[/url]
Gehen Sie nicht über Los
Ziehen Sie keine DM4000 ein
*/
$sql = "SELECT
ID,User,Pass,rang
FROM
User
WHERE
User = '".$user."'
AND
Pass = '".$pass; // wozu denn noch ."'" anhängen? Weg damit
$result = mysql_query($sql, $con) OR die(mysql_error());
/* Es gibt nur einen Benutzer mit diesen Zuganfsdaten, oder?
mysql_num_rows() weg, while weg
einfach versuchen einen Datensatz abzuholen
gab es keinen passenden Datensatz liefert ..._fetch_assoc false zurück
und dann ist $row=false und die if-Bedingung ist nicht erfüllt
*/
if( $row = mysql_fetch_assoc($result) )
{
$_SESSION['user'] = $row['User'];
$_SESSION['userid'] = $row['ID'];
$_SESSION['pass'] = $row['Pass'];
$_SESSION['rang'] = $row['rang'];
// warum pfuscht Du denn hier am Session-Mechanismus rum ?
// setcookie(session_name(), session_id(), time()+3600);
/* warum erst einer Variablen zuweisen,
wenn direkt danach eh' mitten aus dem Code zurückgesprungen wird? */
return 'Sie wurden eingeloggt!';
}
else
{
// nur zum Debuggen
echo 'nur zum Debuggen: ', htmlentities($sql), ' lieferte keine Datensätzen', "
\n";
// sicher ist sicher
unset($_SESSION['user']);
unset($_SESSION['userid']);
unset($_SESSION['pass']);
unset($_SESSION['rang']);
return 'Benutzter und / oder Passwort falsch';
}
}
?>