ログイン画面をストレートなphp(フレームワークなし)で記述しています。
チェックボックスにて自動ログイン機能を追加したいのですが、
記述方法がイマイチわかりません。どうかご教示お願いいたします。
構成は以下になります。
ログイン画面⇨セッションチェック⇨ログイン後画面
login.php ⇨login_check.php⇨page.php
後、自動ログインを無効にする場合はログアウト画面でsessionをdestroyすればいいでしょうか。
login.php ==================
<?php ini_set('default_charset', 'UTF-8'); session_start(); //セッションを変数に代入ID、パスワード if(isset($_POST["login"])){ //未入力チェックとかのログインのIDとパスワードの処理 //認証成功箇所 //ユーザーIDをセッションに保存 $autologin = ( $_POST['autologin'] == "1"); $timeout = 30 * 60; //オートログイン if($autologin){ //$autologin = $_POST['autologin']; $timeout = 7*24*60*60; //セッションの有効期間を1週間に session_set_cookie_params($timeout); } //session_start(); //session_regenerate_id(true); $_SESSION['gsid'] = $_POST["gsid"]; $_SESSION['timeout'] = $timeout; $_SESSION['expires'] = time() +$timeout; $_SESSION['token'] = $_POST['token']; $_SESSION['url'] = $url; $_SESSION['userid'] =$_POST["gsid"]; header("HTTP/1.1 301 Moved Permanently"); header('location: login_check.php'); } ?> <html> <head></head> <body> <!--いろいろ記述省略--> <lable><input type="checkbox" name="autologin" value="1"/>REMEMBER ME / 次回からは自動的にログイン</label> </body> </html>
login_check.php ==================
<?php ini_set('default_charset', 'UTF-8'); session_start(); $errorMessage = array(); $url = isset($_SESSION['url']) ? $_SESSION['url'] :''; if (session_id() !== $_SESSION['token']) { $errorMessage = "loginerror"; header("HTTP/1.1 301 Moved Permanently"); header("location: login_error.php?errorMessage=$errorMessage"); }else{ $_SESSION['join'] = $_POST; header("HTTP/1.1 301 Moved Permanently"); header('location:'.$url); exit; }
page.php =====================
<?php ini_set('default_charset', 'UTF-8'); session_start(); $errorMessage = array(); $_SESSION['flg']= "OK"; if(session_id() == $_SESSION['token']){ //セッションIDを新しく生成 session_regenerate_id(); ?> <html> <head></head> <body> <!--いろいろ記述省略--> </body> </html>
回答1件
あなたの回答
tips
プレビュー