不同环境中的php会话变量赢得';行不通
以下脚本在WindowsXAMPP、PHP5.3.8下工作不同环境中的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
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'];
}