[PHP] login Problem!
Hallöle,
und zwar hab ich folgendes Problem:
Habe mir ein Registrierungformular geschrieben, do wie benutzer daten in die DB geschrieben werden, funktioniert auch, das passwort wird per sha1 hash in der DB gespeichert, leider funktioniert dann mein Login nicht, speicher ich jedoch das pw in klarform ab, funktioniert es... kann mir bite wer weiter helfen? (wobei der erstelle teil mein captcha ist, das funzt soweit auch)
hier das login skript:
<?
session_start();
function encrypt($string, $key) {
$result = '';
for($i=0; $i<strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)+ord($keychar));
$result.=$char;
}
return base64_encode($result);
}
$sicherheits_eingabe = encrypt($_POST["sicherheitscode"], "29jfkd921");
$sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
if(isset($_SESSION['rechen_captcha_spam']) AND $sicherheits_eingabe == $_SESSION['rechen_captcha_spam']){
unset($_SESSION['rechen_captcha_spam']);
require('func.php');
$password = sha1($_POST['password']);
if ($password==NULL) {
header("location:index.php");
}
else
{
require('config.php');
$query = mysql_query("SELECT username,password FROM users WHERE username = '$username'") or die(mysql_error());
$data = mysql_fetch_array($query);
f($data['password'] != $password) {
header("location:index.php");
}
else
{
$query = mysql_query("SELECT username,password FROM users WHERE username = '$username'") or die(mysql_error());
$row = mysql_fetch_array($query);
mysql_close($con);
$nicke=$row['username'];
$passe=$row['password'];
//90 dias dura la cookie
setcookie("usNick",$nicke,time()+7776000);
setcookie("usPass",$passe,time()+7776000);
$lastlogdate=time();
$lastip = getRealIP();
require('config.php');
$querybt = "UPDATE users SET lastlogdate='$lastlogdate', lastiplog='$lastip' WHERE username='$nicke'";
mysql_query($querybt) or die(mysql_error());
mysql_close($con);
}
}
}
header("location:logging_in.php");
?>
Antwort schreiben
Antwort 1 von Marvin42 vom 03.08.2020, 17:43 Options
Hallo!
So ganz überblicke ich das nicht, aber kann es sein, dass du nicht Passwort mit Passwort (bzw. Hash mit Hash) vergleichst, sondern das eingegebene Passwort mit dem in der DB stehenden Hash? Du müsstest also erst mal das Passwort hashen, bevor du es mit dem DB-Eintrag vergleichst.
Antwort 2 von Sandra22345 vom 03.08.2020, 17:46 Options
Ja habs nur versucht mit der DB zu vergleichen, kannst du mir ein beispiel geben?!
Antwort 3 von Sandra22345 vom 03.08.2020, 19:31 Options
>> $password = sha1($_POST['password']); << ist doch richtig oder?
Antwort 4 von Sandra22345 vom 03.08.2020, 21:10 Options
Also es will einfach nicht..... bei der "Registrierung"" wird ja auch der hash in die db geschrieben, nur beim einloggen gehts einfach nicht, wenn ich die sha1 funktion weg nehme, es in klarform gespeichert ist, funzt alles reibungslos, echt seltsam.... kann mir bitte wer helfen? :(
Antwort 5 von Sandra22345 vom 03.08.2020, 23:22 Options
also nun funktionier es, aus welchem grund auch immer, wie könnte ich das alles noch mehr absichern?