ログイン後、どのページでもだれがログインしているかを保持する方法についてです。
例えば、ログイン後、mypage.phpに遷移するとして下記記述で誰がログインしているか特定・記憶することができます。
session_start(); $sql = "SELECT * FROM user_data WHERE email = ?"; $stmt = $pdo->prepare($sql); $stmt->execute([ $_SESSION['email']//ログインした際のアドレスからidを抽出 ]); $hitdata =$stmt->fetch(); $sql = "SELECT * FROM user_data WHERE id = ?"; $stmt = $pdo->prepare($sql); $stmt->execute([ $hitdata['id']//抽出したidを基に「ログインしている人が誰か」を特定し情報を取得 ]); $hitdata =$stmt->fetch(); $login = "現在".$hitdata['name1']."さんはログインしてます"; echo $login;
しかし、ブラウザを閉じたら、セッションは切れ、またログインしなくてはいけないのですが、
例えば、フェイスブックやこのtaratailでは一度ログインしておけばログアウトを押さない限り、たとえブラウザを閉じてもログインしたままにしていると思います。
それはどうしたらよろしいでしょうか?
私の現在の実装は、
①ログイン画面にてメールとパスワードを入力
②入力されたメールを基にレコード抽出
③入力されたアドレスと抽出したレコードのパスワードが一致してればmypage.php(記述ではlogin1.php)へ遷移
$sql = "SELECT * FROM user_data WHERE email = ? "; $stmt = $pdo->prepare($sql); $stmt->execute([ $email, ]); $hitdata =$stmt->fetch(); if(isset($email) && isset($password)) { if($email === $hitdata['email'] && password_verify($password,$hitdata['password']) ){ $_SESSION['email'] = $email; header('Location: login1.php'); } else { $messe = "ログインできませんでした"; } }
④遷移先では冒頭の記述で誰がログインしているか特定して表示させる
ここから分からないのですが、ログインページではifとheader('Location: login1.php');を使ってページ移動していました。
マイぺージを基に色々とリンク先があります。
その、リンク先へのアクセス記述は<a href=""></a>になると思うのですが
この場合、「ページ移動する際にはどうやってSESSION保存したらいいのでしょうか?」
下記の場合は、「もしアドレスとパスワードが一致していればSESSIONを保存してheaderで遷移する」とできていました。
if($email === $hitdata['email'] && password_verify($password,$hitdata['password']) ){
$_SESSION['email'] = $email;
header('Location: login1.php');
}
普通に<a href=""></a>で移動する場合はどうしたらよいのでしょうか?
「もし○○○なら、SESSIONを保存してheaderで遷移する」
↑<a href=""></a>を使うときのifとの組み合わせが分かりません。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/01 09:26