私はついに準備文を使い始めることにしました。しかし、私は50/50で何が正しいかではない。私は準備されたステートメントでログインページを作ろうとしています。上記のコメントと同様にセッションの準備文
$username = $_POST['username'];
$password = md5($_POST['password']);
$sql = "SELECT * FROM users WHERE BINARY username=? AND BINARY password=?";
if($stmt = $db->prepare($sql)){
$stmt->bind_param("ss",$username,$password);
$stmt->execute();
$result = $stmt->get_result();
$num_rows = $result->num_rows;
if($num_rows >= 1){
$_SESSION['loggedin'] = $username;
$_SESSION['country'] = $num_rows['country'];
$_SESSION['email'] = $num_rows['email'];
$_SESSION['avatar'] = $num_rows['u_avatar'];
$_SESSION['is_gm'] = $num_rows['is_gm'];
$_SESSION['user_lvl'] = $num_rows['user_lvl'];
$_SESSION['totalposts'] = $num_rows['post_total'];
$_SESSION['totalcoins'] = $num_rows['coins_total'];
$_SESSION['totalvotes'] = $num_rows['vote_total'];
$_SESSION['secquest'] = $num_rows['sec_quest'];
$_SESSION['secanswer'] = $num_rows['sec_answer'];
$_SESSION['join_date'] = $num_rows['join_date'];
header("Location: /index.php");
exit();
} else {
echo "<p class='error_msg'>No accounts could be found with the given credentials.</p>";
}
$stmt->free_result();
$stmt->close();
$db->close();
}
' - > get_result()'呼び出しの後、mysqliの 'fetch_ * 'フレーバー、' _assoc() 'または' _row() '、同じドリル – Ghost
' $ num_rows'が行の__number__ 、行配列/オブジェクトではないので '$ num_rows ['country']'は無効です。サーバーログに警告/エラーが表示されるはずです –
'' username'はDB戻り値を使用していないので動作します。 '$ username = $ _POST ['username']; '。 – chris85