mysqli に変換しようとしていますが、予想どおり、問題が発生しています。
次のようにログインスクリプトを作成しました。これは機能し、正しいと思います。(パスワードをハッシュする必要があることはわかっています。最初にそれを起動して実行したいだけです)
// POST variables
$username = ($_POST['username']);
$password = ($_POST['password']);
//Input Validations
if($username == '') {
$errmsg_arr[] = 'Username required';
$errflag = true;
}
if($password == '') {
$errmsg_arr[] = 'Password required';
$errflag = true;
}
//If there are input validations, redirect back to the login form
if($errflag) {
$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
session_write_close();
header("location: logon.php");
exit();
}
//prepared statements
if ($stmt = $mysqli->prepare("SELECT username, password FROM auth WHERE username='$username' AND password='$password'")) {
$stmt->execute();
/* bind variables to prepared statement */
$stmt->bind_result($user, $pass);
/* fetch values */
$stmt->fetch();
if ($user == $username && $pass == $password)
{
printf("Welcome %s", $user);
}
else
{
printf("Login failed");
}
/* close statement */
$stmt->close();
}
/* close connection */
$mysqli->close();
?>
ログインが成功した場合にセッション変数を設定したいのですが、以前はmysqllで次のことを行っていました
$qry="SELECT * FROM auth WHERE username='$username' AND password='$password'";
$result=mysql_query($qry);
//Check whether the query was successful or not
if($result) {
if(mysql_num_rows($result) > 0) {
//Login Successful
session_regenerate_id();
//Set session variables
$member = mysql_fetch_assoc($result);
$_SESSION['SESS_MEMBER_ID'] = $member['ID'];
$_SESSION['SESS_USERNAME'] = $member['username'];
$_SESSION['SESS_FIRST_NAME'] = $member['fname'];
$_SESSION['SESS_PASSWORD'] = $member['password'];
$_SESSION['SESS_AUTH_LEVEL'] = $member['auth_level'];
session_write_close();
header("location: index");
exit();
}else {
//Login failed
$errmsg_arr[] = 'user name or password not found';
$errflag = true;
if($errflag) {
$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
session_write_close();
header("location: logon.php");
exit();
私の問題は「$member = mysql_fetch_assoc($result);」だと思います。mysqli でこれを行うにはどうすればよいですか? 準備されたステートメントはユーザー名とパスワードのみをバインドしているため、以前は SELECT * FROM を使用していました
ありがとう