私はまだコード内の古いmysql_*コマンドをやり直して削除しています。セッションログインフォームの古いコードを転送しようとしましたが、これはこれまでに取得したものです。
public function login($user, $password)
{
if (!empty($user) && !empty($password))
{
$password = $web->doHash($user, $password); // in this function is (return sha1(strtoupper($user).':'.strtoupper($password))
$stmt = $db_login->prepare("SELECT * FROM account WHERE username=:user AND pass_hash=:password");
$stmt->bindValue(':user', $user, PDO::PARAM_STR);
$stmt->bindValue(':password', $password, PDO::PARAM_STR);
$stmt->execute();
$rows = $stmt->rowCount();
if ($rows > 0)
{
$results_login = $stmt->fetch(PDO::FETCH_ASSOC);
$_SESSION['user_name'] = $results_login['username'];
$_SESSION['user_id'] = $results_login['id'];
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
その後、ユーザーがサイトにログオンしているかどうかのチェックを使用しています。
public function isLogged()
{
return (!empty($_SESSION['user_id']) && !empty($_SESSION['user_name']));
}
しかし、どうやら-$ _SESSIONがPDOに存在しないため、この関数は常に空を返しますか?そしてもちろん、私のサイトではログアウトがこの形式で使用されています。
public function logout()
{
unset($_SESSION['user_id']);
unset($_SESSION['user_name']);
}
しかし、PDOにはセッションの処理方法が異なると思いますか?何も見つかりませんでした。コードをあまり変更せずに、どういうわけかPDOに$ _SESSIONを追加できますか?
私は変数$_SESSION['user_name']
を使用$_SESSION['user_id']
しており、Webプロジェクト全体で使用しています。
概要:
1)PDOでセッションを正しく使用するにはどうすればよいですか?
$stmt->fetch(PDO::FETCH_ASSOC);
2)使用との違いは何ですか$stmt->fetchAll();
ありがとうございました。