如何測試我的登錄系統是否有結果?如果用戶名和密碼與數據庫中的相同。登錄系統PHP程序準備語句
這是整個代碼。問題是我可以用任何東西登錄(即使它在數據庫中,或者它不是)。
<?php
$error='';
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
if (isset($_POST['submit'])) {
if (empty($_POST['login_username']) || empty($_POST['login_password'])) {
$error = "Username or Password is invalid";
}
else
{
$username=$_POST['login_username'];
$username= strtoupper($username);
$password=$_POST['login_password'];
$connect = mysqli_connect("localhost", "stringdot", "Ninja123") or die(mysqli_error()) ;
$db = mysqli_select_db($connect, "ddbase") or die(mysqli_error($connect));
$password = hash('sha256', $password);
if($stmt = mysqli_prepare($connect,"SELECT * from users where password=? AND username=?")){
mysqli_stmt_bind_param($stmt, "ss", $password, $username);
mysqli_stmt_execute($stmt);
if (!mysqli_stmt_error($stmt)) {
session_start();
$_SESSION['logged'] = true;
$_SESSION['login_username'] = $username; // Initializing Session
header("location: ../public.php"); // Redirecting To Profile page
exit();
} else {
$_SESSION['logged']=false;
$error = "Username or Password is invalid </br>";
echo $error;
echo "Click <a href='/index.php'>aici</a> pentru a incerca din nou";
}
mysqli_close($connect);
}
}
}
?>
你存儲的密碼爲純文本還是你哈希呢? –
是的......我使用SHA256 – StringShot
請使用***的[內置函數](http://jayblanchard.net/proper_password_hashing_with_PHP.html)***來處理密碼安全性。如果您使用的PHP版本低於5.5,則可以使用'password_hash()'[兼容包](https://github.com/ircmaxell/password_compat)。 ***在散列之前,不需要[escape passwords](http://stackoverflow.com/q/36628418/1011527)***或使用其他任何清理機制。這樣做*更改密碼並導致不必要的附加編碼。 –