5

スクリプトを作成していて、入力するユーザー/パスがあり、入力すると別のページがリダイレクトされ、そのページに、ここに xxx 秒間滞在しているという行が表示されるとします。

現在 $_SESSION を使用していますが、ログイン後に time() がカウントを開始するように設定する方法がわかりません。

これは私のindex.phpスクリプトです

if((isset($_GET["user"])) || (isset($_GET["pass"])))
{
    if(($_GET["user"] == "a") && ($_GET["pass"] == "a"))
    {
        session_start();
    $_SESSION["auth"] = 1;
    $_SESSION["username"] = $_GET["user"];
    $_SESSION["loginTime"] = time();
    $_SESSION["timeLogged"] = time() - $_SESSION["loginTime"];


    header("Location: 1.php");
}
else
{
    echo "Incorrect login data";
}
}

これは私の 1.php スクリプトです

session_start();
if(!(isset($_SESSION["username"])))
{
    header("location: index.php");
}
else
{
    echo "Welcome " . $_SESSION["username"] . "<br/>";
    echo "You have been logged in for " . $_SESSION["timeLogged"] . " seconds.";
}
4

1 に答える 1

3

使用$_SESSION(あなたが述べたように)

ページ 1 - セッション (Cookie) に現在の時刻 (またはそのことについてはいつでも) を保存します。

$_SESSION['startTime'] = time();

ページ 2 - 現在の時間 (ページ 2 が訪問された時間) を、Cookie (ページ 1 で作成) で渡された時間で減算します。

if (is_int($_SESSION['startTime'])){ // if the cookie exists:
    $difference = time() - $_SESSION['startTime'];
} else { // if the cookie does not exist:
    echo "You have been here some time in the future";
}

とにかく...そのようなものはうまくいくかもしれません


編集- あなたが提供したコードで:

$_SESSION["timeLogged"] = time() - $_SESSION["loginTime"];1.php スクリプトに移動します。2番目のページに到達したら、差を計算する必要があります:)

あなたが持っていたもの:

$_SESSION["loginTime"] = time();
$_SESSION["timeLogged"] = time() - $_SESSION["loginTime"];

その最後の行は = 現在の時刻 - (変数 = 現在の時刻) = 0

于 2013-03-03T08:04:37.730 に答える