PHP会话表现得很奇怪,当前对象出现在_session中

时间:2016-04-30 03:28:52

标签: php session


我有以下代码:

<?php


session_start();

class Cinstaller {

    function CInstaller() {
        $this->templates["x"] = "";
    }

    function DoEvents() {

        if ($_GET["x"]) {
            $_SESSION["install"]  = $_GET;
        }       
    }
}

$install = new CInstaller();
$install->DoEvents();

print_r($_SESSION);

?>

在某个服务器上(我第一次看到这样的东西)Php 5.2.17,以CGI / FastCGI的形式运行,它表现得很糟糕。

当我运行test.php?x = y时,我得到以下转储:

Array
(
[install] => Array
    (
        [x] => y
    )
)

当我回去并运行test.php而没有任何其他参数时,我得到以下内容:

Array
(
[install] => Cinstaller Object
    (
        [templates] => Array
            (
                [x] => 
            )

    )
)

如何检查字符串变量&#34;安装&#34;从会话变成当前文件的对象?

2 个答案:

答案 0 :(得分:0)

注意:好的..!好像你可能遇到某种其他问题,但正如你所说,更改变量和会话的名称解决了你的问题所以为了考虑这个问题解决了......!在这里,我将发布相同的答案..!

解决方案: 您应该更改您的变量和会话名称以解决此问题,您的服务器可能存在某种冲突,并使用相同的名称来变量&amp;会议..!

答案 1 :(得分:0)

如果你这样做:

$_SESSION["install"]  = $_GET;

您将在“安装”会话中为$ _GET获取所有内容,并且会话值将为Array()。

如果你想要jut使用GET方法发送的参数“x”的值,试试这个:

$_SESSION["install"]  = $_GET["x"];

只有“x”参数的值才会出现在会话中。另外,过滤url获得的值:

$_SESSION["install"]  = filter_var($_GET["x"], FILTER_SANITIZE_STRING);