在我们网站的一个页面中,我有以下代码:
$_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 '/'; } ?>" />
但它只显示值为/.
可能导致这种情况的原因是什么?
答案 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>
.....
.....