【问题标题】:Session timeout issues when upload to web上传到网络时的会话超时问题
【发布时间】:2014-08-05 10:41:05
【问题描述】:

我的代码在 localhost 上运行良好。但是,当我上传网页时,无论选择什么选项,它都会将会话结束时间显示为浏览器会话结束的时间。这是第一页的代码

<pre><code>
session_start();
error_reporting(0);
if(isset($_SESSION['over18'])){
header("location: index.php");
}

if(isset($_SESSION['under18'])){
header("location: leave.php");
}

if(isset($_POST['submit'])){
$day = $_POST['day'];
$month = $_POST['month'];
$year = $_POST['year'];
$remember = $_POST['remember'];

$birthday = mktime(0,0,0,$month,$day, $year);
$difference = time()-$birthday;
$age = floor($difference/31556926);

if($age >= 18){
    $_SESSION['over18']=1;
    switch ($remember) {
        case 1:
            header("location: index.php?sessionid=1");
            break;
        case 2:
            header("location: index.php?sessionid=2");
            break;
        case 3:
            header("location: index.php?sessionid=3");
            break;
        case 4:
            header("location: index.php?sessionid=4");
            break;
        case 5:
            header("location: index.php?sessionid=5");
            break;
        case 6:
            header("location: index.php?sessionid=6");
            break;
        default:
            header("location: index.php?sessionid=1");
            break;
    }
} else {
    $_SESSION['under18']=0;
    header("location: leave.php");
}
}<!-- language: lang-none -->
p class="pos_fixed3">Remember me for: select name="remember">
option value="1">This Session Only</option>
    option value="2">1 Hour</option>
    option value="3">5 Hours</option>
    option value="4">1 Day</option>
    option value="5">1 Week</option>
    option value="6">1 Month</option> </p>
</select>

</pre></code>

我的 index.php 代码如下



if(isset($_GET["sessionid"])){

$session = $_GET["sessionid"];
 } else {
$session = "";
}
switch ($session) {
        case '1':
            session_set_cookie_params();
            break;
        case '2':
            session_set_cookie_params('3600');
            break;
        case '3':
            session_set_cookie_params('18000');
            break;
        case '4':
            session_set_cookie_params('86400');
            break;
        case '5':
            session_set_cookie_params('604800');
            break;
        case '6':
            session_set_cookie_params('18144000');
            break;
        default:
            session_set_cookie_params('');
            break;
    }

session_start();
if(!$_SESSION['over18']){
header("location: age.php");
}

【问题讨论】:

    标签: php session timeout session-cookies


    【解决方案1】:

    在 index.php 中。 开始 pgae 的会话开始

    session_start();
    if(!$_SESSION['over18']){
    header("location: age.php");
    }
    

    在此之后您的代码。

    if(isset($_GET["sessionid"])){
    
    $session = $_GET["sessionid"];
     } else {
    $session = "";
    }
    switch ($session) {
            case '1':
                session_set_cookie_params();
                break;
            case '2':
                session_set_cookie_params('3600');
                break;
            case '3':
                session_set_cookie_params('18000');
                break;
            case '4':
                session_set_cookie_params('86400');
                break;
            case '5':
                session_set_cookie_params('604800');
                break;
            case '6':
                session_set_cookie_params('18144000');
                break;
            default:
                session_set_cookie_params('');
                break;
        }
    

    希望这会奏效。

    【讨论】:

    • 感谢您的回答,但没有任何区别.. 仍然不知道为什么它的工作 localhost 但不在网络上..
    • 请检查会话是否在每个页面的开头开始
    • 是的,因为我在每个页面中使用相同的 header.php 和 require_once("header.php");并且代码实际上是在 header.php 而不是 index.php
    • 有趣的是一切看起来都很好,并读取了我可以通过 echo 看到的所有值。没有错误或任何东西。好烦
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 2017-12-01
    • 2011-05-09
    相关资源
    最近更新 更多