<?php
if(array_key_exists("logIn",$_POST))
{
$link = mysqli_connect("dbaddress", "dbname", "dbpassword", "dbuser");
if(!$_POST['regno'])
{
$error .= "Please enter your registration number";
}
if(!$_POST['password'])
{
$error .= "Password is required!";
}
if($error!="")
{
echo "<p>There were errors in your forms!</p>".$error;
}
else
{
$query = "SELECT * FROM `users` WHERE RegistrationNo = '".mysqli_real_escape_string($link, $_POST['regno'])."'";
$result = mysqli_query($link, $query);
$row = mysqli_fetch_array($result);
if (isset($row)) {
$hashedPassword = md5(md5($row['id']).$_POST['password']);
if ($hashedPassword == $row['password']) {
$_SESSION['id'] = $row['id'];
header("Location: after_login.php");
}
else {
$error = "That email/password combination could not be found.";
}
}
else {
$error = "That email/password combination could not be found.";
}
}}
?>
<form method="post">
<center><input type="text" placeholder="Enter Username" name="regno" id="log_username" class="sidelog"/>
<input type="password" placeholder="Enter Password" name="password" id="real_pass" class="sidelog"/>
</br><button id="button_log" type="submit" name="logIn" > GO </button> </center>
</form>
フォームに記入して送信すると、ページがリロードされます。ヘッダーが機能していません。理由を理解できないようです。フォームを空のままにすると、エラー文字列が正しく表示されます。私はパスワードにmd5暗号化を使用しました。データベースのidのmd5をパスワードと連結し、結果の文字列をmd5で暗号化しました。あなたがafter_login.php` `からリダイレクトされますので、PHPログインフォームがmysqlで動作しない
、この意志はあなたを助けるかもしれない試していませんか?そして、パスワードをハッシュするためにmd5を使用すべきではありません。http://stackoverflow.com/questions/401656/secure-hash-and-salt-for-php-passwords – jeroen
@jeroenこれは実際のコードにあります。それを質問に含めなかった。私の悪い –
ちなみに、ログインに失敗したときにあなたの '$ error'変数を使って何もしていません。エラー処理を追加し、PHPのエラーを表示します。 – jeroen