Loginscript Problem + Sicherhheitsfrage
Hallo,
hab mein Login-Script gerade um eine Funktion erweitert und zwar sollen Falschanmeldungen in einer Logdatei gespeichert werden.
Das Speichern von Falschanmeldungen klappt auch wunderbar, allerdings die Anmeldung mit richtigen Daten nicht mehr, es kommt folgender Fehler: "Fatal error: Cannot redeclare class mysql_control".
Hier der Code der login.php:
Der Code der Klasse:
Wo ist hier der Fehler? Warum kann ich mich nicht mehr in meinen Useraccount einloggen?
Zusatz: Ist dieses Script sicher? Was sollte ich verbessern?
Vielen Dank im Voraus.
MfG
hab1cht
Hallo,
hab mein Login-Script gerade um eine Funktion erweitert und zwar sollen Falschanmeldungen in einer Logdatei gespeichert werden.
Das Speichern von Falschanmeldungen klappt auch wunderbar, allerdings die Anmeldung mit richtigen Daten nicht mehr, es kommt folgender Fehler: "Fatal error: Cannot redeclare class mysql_control".
Hier der Code der login.php:
PHP:
<?php
define('thefooter', TRUE);
include("inc/config.inc.php");
require('MySQLc.inc.php'); #Klasse mit Speicherfunktion für Falscheingaben
$mc = new MySQL_Control;
$ip = $REMOTE_ADDR;
if(isset($_POST[login])) {
if(empty($_POST[passwort]) or empty($_POST[vorname]) or empty($_POST[nachname])) {
$error = true;
echo "Bitte füllen Sie alle Lücken aus!";
$result = $mc->mc_registerfail($vorname, $nachname, $passwort, $ip);
} else {
$passwort = strip_tags(stripslashes($_POST[passwort]));
$passwort = MD5($passwort);
$nachname = strip_tags(stripslashes($_POST[nachname]));
$vorname = strip_tags(stripslashes($_POST[vorname]));
$sql = "SELECT * FROM `user` WHERE `nachname` = '".$nachname."' && `vorname` = '".$vorname."' && `passwort` = '".$passwort."'";
$check = mysql_query($sql);
$vorhanden = mysql_num_rows($check);
if($vorhanden != "1") {
$error = true;
echo "Dieser Benutzer ist in der Datenbank nicht registriert!";
$result = $mc->mc_registerfail($vorname, $nachname, $passwort, $ip);
}
}
if(!$error) {
if($check) {
$check = mysql_fetch_array($check);
$userid = $check["ID"];
$time= date("Y-m-d H:i:s");
$query = "UPDATE `$my_table` SET `letzter_login` = '".$time."' WHERE `ID` = $userid LIMIT 1";
$result = $mc->mc_mysql_query($query);
session_start();
session_register("userid");
header("Location: index_profil.html");
} else {
echo "Es ist ein Fehler aufgetreten, bitte versuchen Sie es später noch einmal. Sollte dieser Fehler weiterhin auftreten, wenden Sie sich bitte an das Serviceteam oder fordern Sie ein neues Passwort an.";
$result = $mc->mc_registerfail($vorname, $nachname, $passwort, $ip);
}
}
}
?>
Der Code der Klasse:
PHP:
<?php
# Filename: MySQLc.inc.php
#
# Funktion: Falsche Logins werden gespeichert
define ('CRLF', chr(13).chr(10)); # Zeilenumbruch
define ('PATH', $_SERVER['DOCUMENT_ROOT'].'/MySQL_Control/'); # Pfad zur Logdatei
class MySQL_Control{
#Funktion für, falsche Logins
function mc_registerfail($vorname, $nachname, $passwort, $ip){
$login_date = date("d.m.y, H:i:s"); # Aktuelles Datum und aktuelle Zeit setzen
# Überprüfen ob das Verzeichnis existiert in dem die Logdatei abgelegt werden soll.. Ansonsten Wird das Verzeichnis erstellt..
if(!is_dir($_SERVER['DOCUMENT_ROOT'].'/MySQL_Control')){
mkdir ($_SERVER['DOCUMENT_ROOT'].'/MySQL_Control', 0664);
}
$this->sl_writeFile(PATH.'login_report.log', 'Vorname: '.$vorname.' ; Nachname: '.$nachname.' ; Passwort: '.$passwort.' ; IP: '.$ip."\t\t\t# ".$login_date.CRLF);
}
# Funktion zum Schreiben in eine Datei
function sl_writeFile($file, $data, $mode = 'a'){
$fp = fopen($file, $mode);
fwrite($fp, $data);
fclose($fp);
}
} # End Class MySQL_Control
?>
Wo ist hier der Fehler? Warum kann ich mich nicht mehr in meinen Useraccount einloggen?
Zusatz: Ist dieses Script sicher? Was sollte ich verbessern?
Vielen Dank im Voraus.
MfG
hab1cht
Zuletzt bearbeitet: