問題点
sessionを用いて自動ログアウトを設定しているのですが、コード内のlist.phpに入るとすぐにログアウトしindex.htmlに飛ばされてしまいます。
ini_setは使用しているのになぜでしょうか?
もし、使い方が違うのであればどのように書けばいいでしょうか?
宜しくお願いいたします。
list.php
<?php session_start();?> <?php ini_set( 'session.gc_maxlifetime', 60 );?> <?php require"header_login.html"; ?> <link href="mystyle.php" rel="stylesheet" type="text/css" /> <?php //自動ログアウト if (isset($_SESSION['customer'])) { unset($_SESSION['customer']); echo 'ログアウトしました。'; header('Location: index.html'); exit(); } else { echo 'すでにログアウトしています。'; header('Location: index.html'); exit(); } ?>
###login.php
<!-- ヘッダー 読み込み --> <?php require"header.html"; ?> <!------ ログインフォーム 2----------> <div class="form-wrapper"> <h1>Sign In</h1> <form action="login_output.php" method="post"> <div class="form-item"> <label for="email"></label> <input type="text" name="login" required="required" placeholder="user name"></input> </div> <div class="form-item"> <label for="password"></label> <input type="password" name="password" required="required" placeholder="password"></input> </div> <div class="button-panel"> <input type="submit" class="button" title="Sign In" value="Sign In"></input> </div> </form> <div class="form-footer"> <p><a href="#">Create an account</a></p> <p><a href="#">Forgot password?</a></p> </div> </div>
###login_output.php(ログイン成功後list.phpへ飛ぶ)
<?php session_start();?> <?php unset($_SESSION["customer"]); $pdo=new PDO("mysql:host=localhost;dbname=shop7;charset=utf8","staff","password"); $sql=$pdo->prepare("select*from customer where login=? and password=?"); foreach($sql->fetchAll() as $row){ $_SESSION["customer"]=[ "id"=>$row["id"],"name"=>$row["name"], "address"=>$row["address"],"login"=>$row["login"], "password"=>$row["password"] ]; } if (isset($_SESSION["customer"])){ echo "いらっしゃいませ",$_SESSION["customer"] ["name"],"さん"; header('Location: list.php'); exit(); } else{ echo "ログイン名またはパスワードが違います"; } ?>
ログインの処理はどうなっているのか
ログイン処理自体が無いのか
失礼しました。
login.php追加させて頂きましたので、ご確認お願いいたします。
ログイン処理はあります。^^;
追記を見てもサッパリ分からない
載せるならログイン処理が書いてあるだろうと思われるlogin_output.phpも載せないと分からない
login.php自体がログイン処理をしているつもりで作っているのなら一度頭を整理して各処理を見直しを推奨します
お手数お掛けしまして申し訳ございません。抜けておりました、
追記させて頂きましたのでよろしくお願いします。
なるほど、list.phpはうっかりミスでもなく素で書いてたのか
ini_setは関係ありません
セッションの有効期限に関係無くセッションがあれば問答無用で削除してリダイレクトさせる処理だから飛んでいるだけ
ini_setは設定か変えるだけのものであって時間差でプログラムを動作させるようなものではない
そういうことでしたか^^;
では、自動ログアウトしたい場合何を記述はしたらいいでしょうか?
よろしくお願いします。
>○秒後
何(どこ)を起点に?ログイン時点?ログイン後の最後のリクエスト時点?
失礼しました。
修正させて頂きます。
ログイン後の最後のリクエスト時点から○秒後に自動ログアウトとなるようにしたいです。
丸投げ質問に感じるので低評価したけど、具体的にどこかどう分からないの?
具体的に申しますと、
ログイン後から○秒後に自動ログアウトにするにが、どんなコードを記述すればよいかわかりません。
インデントが全く整理されてないところからロジックの整理ができてない感じが伺えます。
コードフォーマット機能および構文チェック機能のついたエディタの利用を強く推奨します。
Eclipseならデフォルトで色々入ってるので導入はすぐでしょう。
(インデントについてはコードブロックの次に読む気が起きないコード提示です)
Eclipseインストールしました!
ただ、使い方に結構手こずりそうです。