7

私は次のテクニックを使用しています...

login.phpフォームの投稿から私check.phpがこれを行うページへ

<?php    
$uzer = $_POST['user_name'];
$pass = $_POST['user_pass'];

require ('DB_connection.php');

$result = mysql_query("SELECT * FROM accounts WHERE user_Name='$uzer' AND user_Pass='$pass'");

if( mysql_num_rows( $result ) > 0)
{
    $array = mysql_fetch_assoc($result);    

    session_start();
    $_SESSION['user_id'] = $uzer;
    header("Location:loggedin.php");            
}
else
{
    header("Location:login.php");
}
?>

そしてloggedin.phpページで私が最初にすることは

<?php
session_start();
if( !isset( $_SESSION['user_id'] ) )
{
    header("Location:login.php");
}
else
{
    echo ( "this session is ". $_SESSION['user_id'] );
    //show rest of the page and all
}
?>

しかし、一度ログインすると、URLを直接入力するlocalhost\myProject\loggedin.phpと、ページが表示されます...セッションが開始されているため、これは完全に理にかなっています

私が実装したいのは

  • 直接URL\セッションは10分間機能し、その後セッションは終了\期限切れ\タイムアウトになり、使用するには再度ログインする必要があり、同じセッションIDを取得する可能性がありますが、10分後に使用すると同じセッションで参照できなくなります

何をするか、学ぶ必要がありますか

4

3 に答える 3

10

セッションにタイムスタンプを保存します。

<?php    
$uzer = $_POST['user_name'];
$pass = $_POST['user_pass'];

require ('DB_connection.php');

// Hey, always escape input if necessary!
$result = mysql_query(sprintf("SELECT * FROM accounts WHERE user_Name='%s' AND user_Pass='%s'", mysql_real_escape_string($uzer), mysql_real_escape_string($pass));

if( mysql_num_rows( $result ) > 0)
{
    $array = mysql_fetch_assoc($result);    

    session_start();
    $_SESSION['user_id'] = $uzer;
    $_SESSION['login_time'] = time();
    header("Location:loggedin.php");            
}
else
{
    header("Location:login.php");
}
?>

タイムスタンプが許可された時間枠内にあるかどうかを確認します(600秒は10分です)。

<?php
session_start();
if( !isset( $_SESSION['user_id'] ) || time() - $_SESSION['login_time'] > 600)
{
    header("Location:login.php");
}
else
{
    // uncomment the next line to refresh the session, so it will expire after ten minutes of inactivity, and not 10 minutes after login
    //$_SESSION['login_time'] = time();
    echo ( "this session is ". $_SESSION['user_id'] );
    //show rest of the page and all
}
?>
于 2010-09-22T14:31:22.970 に答える
1

session_set_cookie_paramsと_ini_set("session.gc_maxlifetime", "18000");

于 2010-09-22T14:31:12.273 に答える
1

セッションを開始するphpファイルでセッションセットCookie関数を使用します。これは、定義x分後に期限切れになります。

session_set_cookie_params(600);

上記のように、10分後にセッションが期限切れになります。

于 2021-06-01T09:49:20.820 に答える