Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不同环境中的php会话变量赢得';行不通_Php_Session_Session Variables - Fatal编程技术网

不同环境中的php会话变量赢得';行不通

不同环境中的php会话变量赢得';行不通,php,session,session-variables,Php,Session,Session Variables,以下脚本在WindowsXAMPP、PHP5.3.8下工作 session_start(); if (empty($_SESSION['myvar']) && empty($_GET['myvar'])) { $myvar = "some_value"; } elseif (!empty($_GET['myvar'])) { $_SESSION['myvar'] = $_GET['myvar']; } $_SESSI

以下脚本在WindowsXAMPP、PHP5.3.8下工作

session_start();
    if (empty($_SESSION['myvar']) && empty($_GET['myvar'])) {
        $myvar = "some_value";
    } elseif (!empty($_GET['myvar'])) {
        $_SESSION['myvar'] = $_GET['myvar'];
    }
    $_SESSION['myvar'] = $myvar;

但是在ubuntu服务器上,PHP5.3.10如果I
var\u dump($myvar)
值为
null

只有在会话或get参数为空时,才能向
$myvar
添加值。否则为空。 这个怎么样:

session_start();
$my_var = isset($_SESSION['my_var'] ? $_SESSION['my_var'] : 'default_value';
if(empty($_SESSION['myvar']) && empty($_GET['myvar'])){
    $myvar = 'some_value';
} elseif(!empty($_GET['my_var'))) {
    $myvar = $_GET['myvar'];
}
$_SESSION['my_var'] = $myvar;
或者简单地说:

session_start();
$_SESSION['my_var'] = isset($_GET['my_var']) ? $_GET['my_var'] : (isset($_SESSION['my_var']) ? $_SESSION['my_var'] : 'default_value');
这一直都是假的。 因为第一次$\u会话['myvar']为空,并且$\u GET['myvar']不为空:

$_SESSION['myvar'] = $myvar; // now $myvar is empty



 if (empty($_SESSION['myvar']) && empty($_GET['myvar'])) {
        $_SESSION['myvar'] = "some_value";
    } elseif (!empty($_GET['myvar'])) {
        $_SESSION['myvar'] = $_GET['myvar'];
    }

您是否考虑过可能会定义会话变量两次,覆盖if语句中定义的第一个会话变量?另外,如果您在运行以下代码时!空($\u GET['myvar'])为true:

您很可能会收到未定义的变量警告,因为您没有设置$myvar。试试这个:

session_start();
if (empty($_SESSION['myvar']) && empty($_GET['myvar'])) {
    $myvar = "some_value";
    $_SESSION['myvar'] = $myvar;
} elseif (!empty($_GET['myvar'])) {
    $_SESSION['myvar'] = $_GET['myvar'];
}

那么,如果会话中已经设置了
myvar
,而url参数中没有设置,那么该值应该是多少?感谢反馈和更正,但我仍然无法将$myvar的值检索为var\u dump($myvar)。
session_start();
if (empty($_SESSION['myvar']) && empty($_GET['myvar'])) {
    $myvar = "some_value";
} elseif (!empty($_GET['myvar'])) {
    $_SESSION['myvar'] = $_GET['myvar'];
}
$_SESSION['myvar'] = $myvar;
session_start();
if (empty($_SESSION['myvar']) && empty($_GET['myvar'])) {
    $myvar = "some_value";
    $_SESSION['myvar'] = $myvar;
} elseif (!empty($_GET['myvar'])) {
    $_SESSION['myvar'] = $_GET['myvar'];
}