ログインシステムに結果があるかどうかをテストするにはどうすればよいですか?ユーザー名とパスワードがデータベースの場合と同じである場合ログインシステムPHP手続き型準備文
ここにコード全体があります。問題は、私が何かでログインすることができるということです(たとえそれがデータベースにあっても、そうでなくても)。私は
$result = mysqli_stmt_execute($stmt);
if($result){
$rows = mysqli_stmt_num_rows($stmt);
echo 'rows: '.$rows;
/* you should be able to use $rows for a logic test */
if($rows == 1){/* one exact match */}
else{ /* Bad foo - more than one or none */ }
}
信じています。このような$ stmtはオブジェクト上で直接テストすることができ
<?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
*** PHPの[組み込み関数](http://jayblanchard.net/proper_password_hashing_with_PHP.html)***を使用してパスワードセキュリティを処理してください。 5.5より小さいPHPバージョンを使用している場合、 'password_hash()' [互換パック](https://github.com/ircmaxell/password_compat)を使用することができます。 ***ハッシュする前に[パスワードをエスケープする](http://stackoverflow.com/q/36628418/1011527)***または他のクレンジングメカニズムを使用する必要はありません。パスワードを変更すると、パスワードが変更され、不要な追加のコーディングが発生します。 –