我正在用登录页面创建一个网页游戏。如果用户想要转换成游戏的“专业版”,这将把用户带到PayPal。PHP - 在paypal重定向后失去会话
我遇到的问题是会话似乎是从PayPal返回到我的payment_successful.php页面中断。会话变量都是空的。
我开始给所有适当的页面session_start()
行。会话ID(从Chrome中的控制台获取)与会话启动时的相同,并返回到payment_successful.php。所以这个“看起来”是不变的。
经过大量的不同想法的修补后,我尝试手动添加在会话ID。
无论是登录页面和页面Payment_successful:
session_id('my_id');
session_start();
这就像一个魅力,并返回我所有的会话变量的完美。然而,我猜测这是一个非常糟糕的主意,有一个固定的会话ID(抱歉,我忘了提及我是所有这一切的新手)。
所以我改变了登录页面来创建自己的会话ID,希望它只是简单地把新的值来代替固定值:
登录页面
add_seshid();
session_start();
// session_set_cookie_params (lifetime,'/','.mydomain.com',false);
function add_seshid() {
$sesh_salt1 = "*s!$e";
$sesh_salt2 = "$6#£";
$sesh_date = date("mYhds");
$sesh_pass = "lambchops".$sesh_date;
$sesh_token = hash('ripemd128',"$sesh_salt1$sesh_pass$sesh_salt2");
session_id($sesh_token);
}
Payment_successful页:
session_id($sesh_token);
session_start();
虽然它输出一个会话ID(如986a25f1d1fdabc62837def39b485c6),并且跨越它对面的会议,它也不会返回任何会话变量。 我使用自己的域名修饰session_set_cookie_params行,以查看域名更改是否存在问题,但这没有任何区别。此外,所有的密码,盐等,已被更改为本文的目的,以防有人发痒评论!
希望有人能指出我正确的方向。
非常感谢,
丹。
嗨,是的,它从开始到结束都是相同的PHPSESSID,除了Paypal页面之间有自己的ID。我已经将session_id移到了session_start的下面,但是与空的返回没有区别。我的Paypal链接是:\t header('location:https://www.sandbox.paypal.com/cgi-bin/webscr'.$querystring); \t exit(); –
您是否尝试过针对不是贝宝的东西测试您的代码?让我们来说简单的表单,它将几个输入字段提交到您的PHP页面。 PHP启动会话并设置从$ _POST读取的会话变量。然后你点击链接到网站,将导致你到其他网站(不同的ip/fqdn)。在这个其他网站 - 把一个链接回到原来的网站不同的PHP文件,这也将开始会议,并简单地显示会话变量。我之前和PayPal沙箱一起工作过,我从来没有这样的行为,你描述过。 –