私のサイトを PDO に更新している最後の質問のおかげで、私は最初のページから始めて、より深く作業を進め、最初のハードルにぶつかり、ログイン スクリプトに失敗しました。
login-exec.php 編集済み
session_start();
include_once ('connect.php');
$Email = isset($_POST['Email']) ? $_POST['Email'] : "Email Never Sent";
$Password = isset($_POST['Password']) ? $_POST['Password'] : "Password Never Sent";
$stmt = $db->prepare("SELECT * FROM members WHERE Email = :Email AND Password = :Password");
$stmt->bindParam(":Email" , $Email );
$stmt->bindParam(":Password", $Password);
$stmt->execute();
$member = $stmt->fetch(PDO::FETCH_ASSOC);
if ($member)
{
$_SESSION['SESS_MEMBER_ID'] = $member['Member_ID'];
$_SESSION['SESS_POST_AS'] = $member['Post_As'];
$_SESSION['SESS_AUTH'] = $member['auth'];
session_write_close();
header('location: index.php');
exit();
} else {
header("location: ?p=login-failed");
exit();
}
connect.php
$db = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
編集:ログインに失敗したページに送信されるようになったので、このページがフォームから受け取ったものに問題がありますか?
$password がプレーン テキストであることはわかっています。以前は md5 を使用していましたが、これが機能するようになったら、より良い保護を実装します。