[英]php session variable in a different environment won't work
The following script works under windows xampp, php 5.3.8 以下脚本在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;
but on ubuntu server, php 5.3.10 if I var_dump($myvar)
the value is null
但Ubuntu的服务器,PHP 5.3.10,如果我
var_dump($myvar)
的值是null
Have you considered you may be defining your session variable twice, overwriting the first defined within your if statement? 您是否考虑过可能会两次定义会话变量,从而覆盖if语句中定义的第一个变量? Also if you were to run the following code while !empty($_GET['myvar']) is true:
同样,如果您在!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;
You would most likley get an undefined variable warning because your not setting $myvar. 因为您未设置$ myvar,所以大多数likley会收到未定义的变量警告。 Try this:
尝试这个:
session_start();
if (empty($_SESSION['myvar']) && empty($_GET['myvar'])) {
$myvar = "some_value";
$_SESSION['myvar'] = $myvar;
} elseif (!empty($_GET['myvar'])) {
$_SESSION['myvar'] = $_GET['myvar'];
}
You only add value to $myvar
if the session or the get parameter is empty. 仅当会话或get参数为空时,才向
$myvar
添加值。 Otherwise it is null. 否则为null。 How about this:
这个怎么样:
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;
Or simply: 或者简单地:
session_start();
$_SESSION['my_var'] = isset($_GET['my_var']) ? $_GET['my_var'] : (isset($_SESSION['my_var']) ? $_SESSION['my_var'] : 'default_value');
empty($_SESSION['myvar']) && empty($_GET['myvar'])
It's false for all time. 一直都是假的。 Becase on fist time $_SESSION['myvar'] is empty, and $_GET['myvar'] not empty:
首先,$ _ 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'];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.