PHP会话丢失在同一页面?

时间:2014-12-31 10:46:11

标签: php mysql session

我试图用PHP创建一个简单的搜索页面。

该页面有一些$ SESSION变量,这些变量已从Previous页面传递过来。

当我到达页面时(搜索前),页面如下所示:my-page.php

我将此会话变量从上一页传递到my-page.php:

         $_SESSION["phone"] = $Cphone ;


         $CUphone = $_SESSION["phone"];

         echo $CUphone;

到目前为止,一切正常,我在my-page.php上得到了正确的回复$CUphone

现在,my-page.php上有一个简单的搜索表单,所以如果我愿意,我可以搜索mysql数据库。

喜欢这样:

<form action="my-page.php" method="GET">
<input type="text" name="search" placeholder="Search"/>
</form>

当我使用上面的表单进行搜索时,我也按预期正确地得到了结果......页面将变为

my-page.php?search=SOMETHING

并且搜索功能也完美无缺....

但问题将从这里开始(我搜索的时候)......

如果echo $CUphone;变为my-page.php ..

,我基本上会失去my-page.php?search=SOMETHING

这意味着我放松了会话,因为$CUphone存储在会话中,如上所述。

有没有办法让会话保持在my-page.php?search=something

任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:4)

您需要在设置会话变量时添加条件。

session_start();

if($Cphone) {
    $_SESSION["phone"] = $Cphone;
} else {
    echo "phone number does not exist";
}

if($_SESSION["phone"]) {
    $CUphone = $_SESSION["phone"];
} else {
    echo "session does not exist";
}

除非有充分理由更改会话变量,否则最好只设置一次会话变量。这是一个非常基本的建议,不了解您的应用程序。但最好让你的病情尽可能具体。

答案 1 :(得分:0)

我认为您需要检查会话是否已设置。

//That variable should be set an not empty
if (isset($Cphone) && !empty($Cphone)){

    $_SESSION["phone"] = $Cphone ;

    //To check first if the session is set or not
    if(isset($_SESSION['phone'])){

        $CUphone = $_SESSION["phone"];

        echo $CUphone;
    }

}else{

    echo 'session not set';
}

在这种情况下,您将获得跟踪错误,该错误来自变量或它将起作用。