以下脚本在Windows xampp,php 5.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 服务器上,如果我var_dump($myvar)
php 5.3.10 的值是null
您是否考虑过您可能要定义会话变量两次,覆盖if语句中定义的第一个变量? 此外,如果您要在 !empty($_GET['myvar']( 为 true 时运行以下代码:
session_start();
if (empty($_SESSION['myvar']) && empty($_GET['myvar'])) {
$myvar = "some_value";
} elseif (!empty($_GET['myvar'])) {
$_SESSION['myvar'] = $_GET['myvar'];
}
$_SESSION['myvar'] = $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'];
}
empty($_SESSION['myvar']) && empty($_GET['myvar'])
这在任何时候都是错误的。在第一个时间 $_SESSION['myvar'] 为空,$_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'];
}
仅当会话或 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');