私はPHP初心者で、PHPセッションで練習しています。基本的には、セッションが存在しない場合にのみ、ユーザーに表示されるログインフォームがあります。それ以外の場合は、「ユーザーは既にログインしています」と表示されます。 私が使用してセッションライフタイムとクッキーの時間を設定している:phpセッションがその有効期間を設定した後に削除されない
session_set_cookie_params(60);
ini_set('session.gc_maxlifetime', 60);
私は、ユーザーが再度ログインする必要がありますように、セッションが1 minute
後に破壊することにしたいです。私の実装では、セッションはまだ長い時間のために存在し、ユーザーがログインしている私のlogin.php
で
私が持っている:。
1:
2ログイン資格情報をチェックし、POSTのREQとlogin.phpを訪問した場合: 1:データにユーザIDとパスワードを確認しSESSION [「LOGGED_INは」]、そしてフォームを表示しない設定エコー
<?php
require_once("helpers.php");
session_start();
if(!empty($_POST)){
loginUser($_POST['user_id'], $_POST['pass']);
}
<?php
if(!isset($_SESSION['logged_in'])){
echo "<br>SESSION IS NOT SET UP";
?>
<HTML>
<HEAD>
<LINK rel="stylesheet" type="text/css" href="style.css">
<SCRIPT src="test.js"></SCRIPT>
</HEAD>
<BODY>
<H1>Please login</H1>
<FORM action="login.php" method="post">
<span class=formlabel>Username:</span>
<INPUT name="user_id" type="text" class="forminput" require><BR>
<span class=formlabel>Password:</span>
<INPUT name="pass" type="password" class="forminput" require><BR>
<INPUT type="submit" value="Login" style="width:80px;margin-left:100px;margin-top:3px;"><BR><BR>
Don't have an account? <A href="register.php">Click here to register</A>.
</FORM>
</BODY>
</HTML>
<?php
}else{
echo '<strong>user already logged in.<br></strong>';
}
?>
「既にログイン」であれば、私のhelper.php
に私が機能を持っていますbase
2:存在する場合、セッションを設定します。
function loginCheck($user_id, $pass){
//here goes code which checks if user_id & pass exists
//store in $RESULT if exists
if(!empty($result)){
session_set_cookie_params(30, '/');
ini_set('session.gc_maxlifetime', 30);
$_SESSION['username'] = $user_id;
$_SESSION['logged_in'] = true;
}
}
ユーザーとしてログインすると、セッションが開始され、ログインフォームが消えてしまいます。これは正しい動作です。しかし、セッションが終了することはありません。つまり、10分後にページをリフレッシュしても、フォームは表示されず、「ユーザーは既にログインしています」と表示されます。
1:セッションはmaxLifetimeの後に単独で破棄されますか?
2:もしそうでなければ、それを破壊する必要がありますか?
あなたは
セッションを開始する前にセッションパラメータ*を設定する必要があります。 – jeroen
@jeroenもしsessiont_start()の前にセッションパラメータを設定すると、セッションが破棄され、指定された時間後にリセットされますか?ありがとう。 –