ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php – 当会话ID已知但无法启动会话时删除会话变量

2019-10-03 08:29:35  阅读:228  来源: 互联网

标签:paypal-ipn cart php session paypal


我在处理paypal和ipn时尝试删除一些会话变量的方式有问题.我希望有人登录(或不登录)我的在线零售店,浏览我的购物车,重定向支付宝贝,然后重定向到我的网站.

我一直在使用paypal ipn让PayPal在付款完成后通知我,我可以将用户带回我的网站,在那里可以再次启动会话,但我希望能够取消购物车(但不是整个付款完成后,如果他们已登录,则会话.这将覆盖我的基地,以防用户没有回到我网站上的付款完成页面,但返回到不同页面上的网站.

问题是,虽然我在访问PayPal之前在我网站上的最后一个发货信息页面上获得了相同的会话ID,并且当付款完成后我的网站上的登陆页面从PayPal返回我无法在我的ipn中访问此会话在我的网站上运行以响应paypal的脚本.我在这三个页面中的每个页面上运行session_start()但是当我通过电子邮件发送或发布在发货方法页面和付款完成登录页面时,我得到相同的会话ID.当我在我的ipn脚本中给自己发送会话ID的结果时,我什么都没得到.

我可以在去PayPal之前杀死购物车,但如果他们想回去改变一下呢?我可以在登陆页面上杀死购物车,但如果他们以某种方式到达不同的页面怎么办?当我得到付款确认但是我不确定如何时,我真的想要销毁购物车而不是整个会话.我在我的ipn页面上试过这个:

session_start();

$a = session_id();

mail("webmaster@mysite.com", "ipn session id 0", $a, "From: webmaster@mysite.com");

//results in blank email, unlike in other locations on actual displayed pages

// Unset all of the session variables.

$_SESSION = array();

// Delete the session cookie to kill the session

if (isset($_COOKIE[session_name()])) {

setcookie(session_name(), '', time()-42000, '/');

}

// Finally, destroy the session.

session_destroy();

unset($_SESSION['cart']);

unset($_SESSION['product_id_array']);

unset($_SESSION['pp_checkout_btn']);

unset($_SESSION['state']);

unset($_SESSION['total']);

unset($_SESSION['shipping']);

unset($_SESSION['grand_total']);

但当我回到视图购物车页面时,它仍然存在.任何想法将不胜感激.任何更有帮助的特定代码,让我知道,我会发布它.

解决方法:

Paypal IPN呼叫由Paypal进行,仅服务器到服务器.您也不知道该IPN呼叫何时到来.通常它们会在几秒钟内发生,但它们可以在很晚之后发生.如果IPN呼叫失败,他们将再次重试一段时间.您无法执行与IPN中的用户会话相关的任何操作.每个用户都拥有自己的会话,您无法编辑其他任何人.在这种情况下,您的用户有一个会话,Paypal(IPN呼叫)获得它自己的会话.

成功付款后,您必须在返回网站时清除会话变量.这不是万无一失的 – 有可能仍然无法清除推车,但这几乎是唯一的方法.

标签:paypal-ipn,cart,php,session,paypal
来源: https://codeday.me/bug/20191003/1848086.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有