PHP Session变量未设置

时间:2012-05-23 17:32:30

标签: php session

在我们网站的一个页面中,我有以下代码:

$_SESSION['returnURL'] = "/store/checkout/onepage";

并进一步向下,这个按钮控件:

<button type="button" title="Register Today" class="button" onclick="window.location = '/register/';" id="BecomeMember"><span><span>Become a Member Today</span></span></button>

现在,在寄存器模板中,我有这段代码:

<input type="hidden" name="returnURL" id="returnURL" value="<?php if(isset($_SESSION['returnURL'])) { echo $_SESSION['returnURL']; } else { echo '/'; } ?>" />

但它只显示值为/.

可能导致这种情况的原因是什么?

9 个答案:

答案 0 :(得分:11)

first.php

<?php
session_start();
$_SESSION['returnURL'] = "/store/checkout/onepage";
echo '<a href="second.php">Pass session to another page</a>';
?>

second.php

<?php
session_start();
echo 'returnURL = ' . $_SESSION['returnURL'];
?>

所以你需要在你的两个文件中写session_start()

答案 1 :(得分:2)

要解决此问题,您需要:

1)确保在脚本开头调用session_start(),之后再调用。{/ p>

2)没有任何内容取消$_SESSION$_SESSION['returnURL']

答案 2 :(得分:1)

我能够让这个像这样工作

session_start();
$returnurl = "/store/checkout/onepage";
$_SESSION['returnURL'] = $returnurl;        

答案 3 :(得分:0)

我最终做的是向页面发送一个post变量。 ExpressionEngine和Magento之间的会话差异使得使用会话变量和cookie变得非常禁止。

答案 4 :(得分:0)

我只是资助我有同样的问题,会话在firefox中工作正常而不是chrome,我创建了一个测试脚本,它只会创建一个会话然后打印出session_id()以查看它是否正在获取创建与否,运行此脚本后,我注意到session_id()会在每次加载页面时发生变化,并且php正在抛出有关未设置日期/时间的警告。然后我添加了

date_default_timezone_set( '美洲/洛杉矶');

到脚本的开头,这使得一个新的session_id()停止在每个页面加载时生成并修复了问题。 (可能值得注意的是,我的问题似乎只出现在我的子域而不是顶级域名上)

答案 5 :(得分:0)

我正在处理的服务器已满,因此没有空间来存储值,因此会话无法正常工作。确保您的服务器有空间。

答案 6 :(得分:0)

我见过很多CMS和框架都有不同的处理常规会话的方式。如果上述基本双线程不起作用(因为它会干扰当前软件),您仍然可以使用cookie来实现相同的功能。请记住,关闭浏览器时不会删除cookie,因此您需要明确告知何时释放变量(使用未设置)。

$_COOKIE["something"] = 'value';
echo $_COOKIE["something"];
unset($_COOKIE["something"]);

答案 7 :(得分:0)

session_start()函数必须是文档中的第一件事。在任何HTML标记之前。

session_start();

答案 8 :(得分:0)

    <!--First Line like as-->
 <?php session_start();?>
 <!-- Now, your php or html codes-->
<html>
  <head>
   .....
   .....