1

これが私の質問です。ページ 1 とページ 2 の 2 つのページがあるとします。必要なのは、セッションを開いてページ 1 に Cookie を設定することです。この Cookie は 1 時間保持され、ページが更新されるたびにリセットされます。ここで、ページ 2 のストーリーはわずかに異なるシナリオです。まず、ページ 2 はセッションを開くべきではありませんが、代わりに、ページ 1 で開かれたセッションがまだ有効かどうかを確認し、有効である場合は、リクエストが何であれ、さらに進んでください。ただし、訪問者が保存された URL を介して直接ページ 2 にアクセスした場合、またはセッション Cookie の有効期限が切れた後にページ 2 にアクセスした場合、訪問者はページ 1 にリダイレクトされます。

これが私がこれまでにページ1で行ったことです

<?php
function startSession($time = 3600, $ses = 'MYSES') {
    session_set_cookie_params($time);
    session_name($ses);
    session_start();

    // Reset the expiration time upon page load
    if (isset($_COOKIE[$ses]))
      setcookie($ses, $_COOKIE[$ses], time() + $time, "/");
}
?>

問題は、何をどのように行うべきか、残りのページ 2 に何を表示する必要があるかがわからないことです。

これが私が2ページで試したことですが、うまくいきませんでした。

<?php
if (!isset($_SESSION));{
$a = session_id();
if(empty($a) and $_SERVER['HTTP_REFERER']);{
    header('location: page1.html');}}
?>

みんな助けてください。

4

1 に答える 1

1

構文の問題はさておき、$ _SESSIONを使用しているようには見えません。$_SESSIONを使用するには、出力の前にsession_start()を宣言する必要があります。したがって、あなたの場合、おそらくCookieのみを使用してください。

ページ1(page1.php):

<?php
    function extendCookie($time = 3600) {
        setcookie('MYSES', 'dummy var', time() + $time, "/");
    }
    extendCookie(); //extend cookie by 3600 seconds (default)
?>
You are on page 1.<br />
<a href="page2.php">Click to proceed to page 2</a>

ページ2(page2.php):

<?php
    if (!isset($_COOKIE['MYSES'])){
        header('location: page1.php');
    }
?>
You are on page 2.

セッションを使用する場合は、次のようにします。

ページ1(page1.php):

<?php
    session_start();
    function extendSession($time = 3600) {
        $_SESSION['expire_time'] = time() + $time;
    }
    extendSession(7200); //extend session by 7200 seconds
?>
You are on page 1.<br />
<a href="page2.php">Click to proceed to page 2</a>

ページ2(page2.php):

<?php
    session_start();
    if (!isset($_SESSION) || $_SESSION['expire_time'] < time()){
        session_destroy(); //Optional, destroy the expired session.
        header('location: page1.php');
    }
?>
You are on page 2.
于 2013-03-11T10:39:00.420 に答える