ただいまログイン機能を作成中です。
<ログイン成功時>
ログインボタン押下
↓
POSTで送られてきたID&パスワードをDBに登録されているか検索
↓
確認が取れればID&パスワードをそれぞれセッションに格納
↓
ログイン成功
<ログイン失敗時>
ログインボタン押下
↓
POSTで送られてきたID&パスワードをDBに登録されているか検索
↓
存在しない情報
↓
ログイン失敗
↓
ログイン画面のままエラー表示
<直接URL禁止>
POSTでID&パスワードが送られてこなければ、メインページには行かず
ログイン画面に遷移
という流れで作っています。
しかし、直接URLをたたいてもメインページに入れてしまいます。
セッションが残ったままなので、ログインできてしまうということなのでしょうか。
ログアウト機能を作らなければ、セッションは消すことができないのでしょうか?
ログインPHP
<?php require_once "db.php"; session_start(); // エラーメッセージ初期化 $err_msg = ""; if (isset($_POST['login'])) { $login_id = $_POST['login_id']; $password = $_POST['password']; try { $pdo = new PDO($dsn,$user,$pass); // POSTされたID&パスワードをDB内で検索 $sql = 'SELECT count(*) FROM m_employee WHERE login_id=? AND password=?'; $stmt = $pdo->prepare($sql); $stmt->execute(array($login_id,$password)); $result = $stmt->fetch(); // データが渡って来なかったときの処理 }catch (PDOException $e) { echo $e->getMessage(); exit; } // ログイン認証ができたときの処理 if ($result[0] != 0) { session_regenerate_id(TRUE); $_SESSION['login_id'] = $_POST['login_id']; header('Location:http://localhost/php_kintai/shainmasuta.php'); exit; }else { // アカウント情報が間違っていたときの処理 $err_msg = "正しいログイン情報を入力してください。"; } } ?>
メインページPHP
<?php require "shainmasuta_sql.php"; //ログインされていない場合は強制的にログインページにリダイレクト if (!isset($_SESSION["login_id"])) { header("Location: login.php"); exit(); }else{ //ログインされている場合は表示用メッセージを編集 echo $_SESSION['login_id']."さんようこそ"; } ?>
回答2件
あなたの回答
tips
プレビュー