これが間違った方法であることはわかっています。ソルトやその他の小さな安全なヒントを実装していませんが、ここで何が問題なのかを理解する必要があります。スクリプトに他の安全な関数を実装できます。助けてくれてありがとう:)これ、スクリプトはログインエラーを返します。理由は理解できます。パスワード $_POST['password'] を出力します。データベースでも同じですが、$col2 (データベースから取得したパスワード) を出力しようとすると、何も返されません。コードは次のとおりです。
<?php
$mysqli = new mysqli("localhost", "root", "*******", "test");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* prepare statement */
if ($stmt = $mysqli->prepare("SELECT username, password FROM users WHERE username=? AND password=?")) {
$stmt->bind_param("ss" , $username, $password);
$stmt->execute();
/* bind variables to prepared statement */
$stmt->bind_result($col1, $col2);
$stmt->store_result();
/* fetch values */
while ($stmt->fetch()) {
printf("%s %s\n", $col1, $col2);
}
if($col1 && $col2 == $username && $password){
$_SESSION['Admin']; //test - not to be implemented
session_start(); //Test - not to be implemented
header("location index2.php");
}else{echo "Login Error";}
/* close statement */
$stmt->close();
}
/* close connection */
$mysqli->close();
?>