Hallo liebe SELFHTMLer,
Danke H☼psel.
Dein Hinweis war die gesuchte Lösung.
login.php
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
session_start();
$_SESSION['error'] = "";
$hostname = $_SERVER['HTTP_HOST'];
$path = dirname($_SERVER['PHP_SELF']);
# php includieren
include('constanten.inc.php');
include('functions.inc.php');
connect();
# auf Benutzername UND Passwort prüfen
# mysql_real_escape_string() zum verhindern von SQL - Injections
$sql = mysql_query("SELECT * FROM user WHERE username = '".mysql_real_escape_string($_POST['username'])."' AND password = '".md5(mysql_real_escape_string($_POST['password']))."' ");
$res = mysql_num_rows($sql);
if ($res == 1){
$data = mysql_fetch_object($sql);
# Accountcheck
if ($data->expire < DateTime){
$_SESSION['error'] = ACCOUNTEXPIRED;
}
elseif($data->accountstatus == 1){
$_SESSION['error'] = ACCOUNTNOTENABLED;
}
elseif($data->accountstatus == 2){
$_SESSION['error'] = ACCOUNTLOCKED;
}
# Server Protocol prüfen
if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1'){
if (php_sapi_name() == 'cgi'){
header('Status: 303 See Other');
}
else{
header('HTTP/1.1 303 See Other');
}
}
# Weiterleitung zum internen Bereich
if (!$_SESSION['error']){
# Benutzerinformationen in den Sessionvariablen speichern
$_SESSION['loggedin'] = true;
$_SESSION['uid'] = $data->uid;
$_SESSION['username'] = $data->username;
$_SESSION['levelid'] = $data->levelid;
$_SESSION['sessionid'] = session_id();
# user Tabelle aktualisieren
mysql_query('UPDATE user SET sessionid = "' . session_id() . '", lastlogin = NOW() WHERE uid = "' . $_SESSION['uid'] . '" LIMIT 1');
header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/index.php?sid='.$_SESSION['sessionid']);
disconnect();
exit;
}
}
# fehlerhafter Login
# ggf. Errorhandling
else{
$_SESSION['error'] = INVALIDLOGIN;
}
}
?>
hier kommt DOCTYPE und Co.
...
<?php
if (isset($_SESSION['error']) && $_SESSION['error']){
?>
<tr>
<td colspan="2" class="error"><?php echo $_SESSION['error']; ?></td>
</tr>
<?php
}
?>
...
constanten.inc.php
<?php
define('DateTime',date('Y-m-d H:i:s', time()));
# Fehlermeldungen
define('INVALIDLOGIN','Benutzername und/oder Passwort fehlerhaft!');
define('ACCOUNTLOCKED','Ihr Account ist gesperrt!');
define('ACCOUNTNOTENABLED','Ihr Account ist nicht freigeschaltet!');
define('ACCOUNTEXPIRED','Ihr Account ist abgelaufen!');
?>
logout und auth.php sind nur gering geändert zu dem LoginScript hier auf SELFHTML.
Was kann ich besser machen, oder ggfs. sicherer?
Soweit funktioniert das Login und ich bin zufrieden.
Danke nochmal an alle Beteiligten für die Hilfe.
LG
kev1n
--
SELFCODE:
sh:( fo:| ch:? rl:° br:^ ie:{ mo:| va:) de:] zu:) ss:| ls:[ js:|
---
SELFCODE:
sh:( fo:| ch:? rl:° br:^ ie:{ mo:| va:) de:] zu:) ss:| ls:[ js:|
---