2012-06-08 158 views
0

我有一个奇怪的问题。PHP会话变量未设置

我有一个车展的网站,我管理一个注册脚本无缘无故的旧的代码被打破。我知道它以前工作过,但现在没有。

我正确设置会话变量。我将整个变量数组保存到会话中,并且我知道在表单提交后,会话将工作,因为表单会重新加载到新页面,并显示注册信息以进行确认。然而,脚本继续到PayPal页面,在该页面中用户通过付款过程。然后重定向到完成付款过程后将注册信息提交给MySQL数据库的网站。

但是,当用户返回到数据提交确认页面,会话变量是完全空白的。我回应了所有的变数,并且没有任何变数。

为了测试它的地方破,我把一个链接您填写的直接链接到的信息转储到SQL服务器的确认页表格后拍摄到页面上。链接链接时,信息仍然存在。但是,如果您要采用相同的URL并将其粘贴到地址栏(即不使用链接),则变量为空。

所以在这一点上,我很失落,为什么变量是很好,当你链接,然后点击页面,而不是在你过去不一样网址到地址栏,而不是点击链接。会话在每个页面上启动,并且全部位于相同的域名。

有什么帮助?

=====编辑===== 测试代码(给一个粗略的想法)

我如何设置会话变量。 session_start();函数被调用的每一页上这个网站装载了在其他页面的连续性:

$storedVars = array(1 => $name, $email, $state, $year, $make, $model, $generation, $color, $now, $paymentType); 
$_SESSION['registration']=$storedVars; 

在贝宝后,确认页面,其中的信息被发送到数据库中,下面的代码运行(再次,在session_start( );已调用):

$storedVars = $_SESSION['registration']; 
$name = $storedVars[1]; 
$email = $storedVars[2]; 
$state = $storedVars[3]; 
$year = $storedVars[4]; 
$make = $storedVars[5]; 
$model = $storedVars[6]; 
$generation = $storedVars[7]; 
$color = $storedVars[8]; 
$now = $storedVars[9]; 

第10数组变量,paymentType,不需要在这点作为其唯一的用于页面表单提交后)

当这些变量echo'ed在下面的确认页面上通过paypal上的步骤或在填写表单后将正确的URL粘贴到地址栏中,没有任何内容。 无论其.. 当您单击表格提交后下面的数据验证页面上的链接,变量仍然存在。

+0

你可以创建一个[最少测试用例(http://sscce.org),演示问题? –

+0

在会话“删除”确认页面后,它们仍然可以用于例如。返回页面? – 2012-06-08 16:52:56

+0

声音就像你粘贴URL时开始一个新的会话。没有代码的例子,很难看到Sorta。 –

回答

2

您最后的评论让我相信您的会话设置为http://yoursite.com/,您发送给PayPal的返回网址为http://www.yoursite.com/(反之亦然)。就您的浏览器而言,“www”实际上是您的基本域的子域,并被认为是不同的主机。

长话短说,使用返回URL以下使用PayPal设置你的令牌时:

$_SERVER["HTTP_HOST"] . "/Path/To/PaypalReturnPage.php"