PHP会话问题

时间:2012-01-16 18:57:02

标签: php session mobile

我有一个来自detectmobilebrowsers.com的移动脚本会将用户重定向到我的移动网站但是我也希望当输入网址“http://example.com/?mobile=no”时,会创建一个不会重定向用户的会话在我网站的每一页上......

$mobile=$_GET['mobile'];

if(isset($_SESSION['mobile'])){
    if($_SESSION['mobile']==="no"){
        complete();
    }
    else{
        $_SESSION['mobile']="no";
        complete();
    }
}
elseif($mobile==="no"){
    $_SESSION['mobile']="no";
    complete();
}
elseif($_SESSION['mobile']!="no"){
    checkMobile();
}
function checkMobile(){
    // Mobile Detection Code taken out to save space.
    gotoMobile();
}
function gotoMobile(){
    echo "<script>window.location='http://m.MySite.org/';</script>";
}
function complete(){
    return false;
}

很抱歉,如果我看起来很混乱,但是在短期内:移动检测(已设置)...如果用户希望查看完整网站,则会话移动=否,当创建该会话时,会在每个页面上检查(相同的php)如果我设置我的会话没有移动我希望它留在每个页面...在我的情况下,唯一发生的事情是第一页没有重定向,但当我去另一个页面时,它将不会显示它,除非我添加了?mobile = no,但这里的会话的全部内容都是如此,所以这只需要完成一次。

2 个答案:

答案 0 :(得分:1)

在开始在PHP会话中存储用户信息之前,必须先启动会话:

session_start();

在session_start()之前必须没有标记,甚至没有空格!(除非使用输出缓冲)。

请参阅http://php.net/manual/en/function.session-start.php

答案 1 :(得分:1)

听起来很简单,但您确定在检查所有会话变量之前在每个页面的顶部使用了session_start()吗?