isset在本地服务器上工作,但不在现场服务器上工作
我有一个在我的本地服务器上完美工作的代码,但在实时服务器上无法工作。isset在本地服务器上工作,但不在现场服务器上工作
我的本地服务器是WAMP,而实时服务器是使用LiteSpeed,PHP和MySQL的Unix。
问题是我想要创建一个新的会话,只有当没有任何存在。请任何人都可以帮忙吗?
确切的代码如下:
$cart = $_SESSION["cart"];
if (isset($cart))// this checks if session has been created already.
$cart = $cart; // if session is already set, it uses the random value already created.
else {
$_SESSION["cart"] = rand(111111111,999999999);// if session has not be created before a new randome number is picked.
$cart = $_SESSION["cart"];
}
这应该在任何地方工作:
if(empty($_SESSION["cart"])){
$_SESSION["cart"] = rand(111111111,999999999);
$cart = $_SESSION["cart"];
} else
$cart = $_SESSION["cart"];
我只是特里结构这一点,但它没有工作:( – 2012-08-16 14:47:08
这应该工作。它必须是别的东西。请出示更多的代码和测试结果 – Waygood 2012-08-16 14:49:41
它可以在本地主机上,而不是活的服务器上 – 2012-08-16 14:53:06
确保在会话开始,并检查原车设置。
session_start();
if(!isset($_SESSION['cart']))
{
$_SESSION['cart']=rand(111111111,999999999);
}
是会话开始,我有session_start();在页面顶部,但我现在将测试您的修改。 – 2012-08-16 14:44:04
同样的问题,它适用于我的本地主机,但不在活动服务器上。 – 2012-08-16 14:52:48
尝试var_dump($cart)
你ASIGN并发布结果之后。
您可能还需要检查$_Session[cart]
代替asigning和检查,
它的$ _SESSION不$ _Session – Waygood 2012-08-16 14:43:57
现在检查这个..将很快发布结果 – 2012-08-16 14:55:45
没有运气同样的问题......这可能是一个与活服务器配置的问题?因为它在本地主机上完美工作 – 2012-08-16 15:00:22
由于isset()
如果变量被设置或不被确认,这里是显而易见的:
$cart = $_SESSION["cart"]; // setting the variable $cart and assigning it some value
if (isset($cart)) // this checks if session has been created already
// and it will return TRUE anyway because `$cart` is already defined above regardless value it was assigned
而且这部分代码没有按不检查$_SESSION['key']
是否已设置,而是检查$cart
变量。实际上已经设置了。这里可以检查它的is_null()
或empty()
,但不是isset()
。
你可以更具体一点关于它不工作 - 你的意思是'$ _SESSION [“cart”]'_is_设置,但是isset没有选择它;或者它没有设置,isset告诉你它是? – andrewsi 2012-08-16 14:39:25
我的意思是说,每次我重新加载页面,$ cart的价值就会改变。它不应该。 – 2012-08-16 14:40:46
@EhisAsibor你叫'session_start()'吗?您的本地服务器可能启用了'session.auto_start'。 – DaveRandom 2012-08-16 14:41:02