9

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

$_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 '/'; } ?>" />

但它仅将值显示为 /。

这可能是什么原因造成的?

4

9 回答 9

13

第一个.php

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

第二个.php

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

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

于 2012-05-23T17:40:09.557 回答
4

要解决此问题,您需要:

1) 确保session_start()在脚本开头调用它,然后再调用它。

2)没有什么是不安$_SESSION$_SESSION['returnURL']

于 2012-05-23T17:41:15.633 回答
2

我能够让它像这样工作

session_start();
$returnurl = "/store/checkout/onepage";
$_SESSION['returnURL'] = $returnurl;        
于 2012-05-23T19:16:22.403 回答
0

我最终做的是向页面发送一个 post 变量。ExpressionEngine 和 Magento 之间的会话差异使得使用会话变量和 cookie 变得令人望而却步。

于 2012-06-04T18:04:25.397 回答
0

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

date_default_timezone_set('America/Los_Angeles');

在脚本的开头,这阻止了在每次页面加载时生成新的 session_id() 并解决了问题。(可能值得注意的是,我的问题似乎只出现在我的子域而不是顶级域上)

于 2013-11-30T22:37:37.393 回答
0

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

于 2015-07-22T19:50:27.450 回答
0
    <!--First Line like as-->
 <?php session_start();?>
 <!-- Now, your php or html codes-->
<html>
  <head>
   .....
   .....
于 2020-09-21T12:11:01.897 回答
0

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

session_start();
于 2019-05-20T08:52:35.143 回答
-1

我见过许多 CMS 和框架以不同的方式处理常规会话。如果上述基本的两行代码不起作用(因为它会干扰当前的软件),您仍然可以将 cookie 用于相同的功能。请记住,关闭浏览器时不会删除 cookie,因此您需要明确告诉它何时释放变量(使用 unset)。

$_COOKIE["something"] = 'value';
echo $_COOKIE["something"];
unset($_COOKIE["something"]);
于 2016-02-22T13:46:25.217 回答