JavaScript重定向后PHP SESSION丢失

时间:2014-12-18 12:33:09

标签: javascript php jquery ajax session

我有一个定制的网上商店,我使用PHP SESSION来存储客户选择的产品,数量和其他选项。选定的产品和选项通过jQuery AJAX发送到后端,PHP接管,它是否检查(如果产品可用,甚至存在并且剩余的数量足够),然后它存储或更新存储在里面的数据SESSION。当客户试图进行购买时,在某些情况下会失去SESSION,我不知道为什么。我确实搜索了答案/解决方案很长一段时间,我也尝试了一些解决方案,其中没有一个100%工作,会话仍在丢失。我找到了确切的地方,无法解决它。

部分代码:

重定向发生在jQuery&$.ajax()调用window.location.href='/url/'内(网址有效,存在并且与调用页面位于同一个域中)

这是我的jQuery代码:

$('body').on('submit','#some-form-name',function(e){
    e.preventDefault();
    var el=$(this);
    $.ajax({
        type:'post',
        dataType:'json',
        url:'/include/process-sl.php',
        data:el.serialize()+'&q=updateBasket',
        beforeSend:function(){
            ... some checks to verify if form should be submitted or an friendly error returned
        },
        success:function(json){
            if(json.success==true){
                ... show friendly success message before redirecting
                setTimeout(function(){
                    if(json.payment!=undefined){
                        if(json.payment=="paypal"){
                            window.location.href='https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token='+json.token
                        }else{
                            window.location.href='/nakup-opravljen/'
                        }
                    }
                },1000);
            }else{
                ... shows friendly error message
            }
        },
        error:function(){
            ... ajax call failed, show error message
        }
    })
});

主要PHP文件的启动方式(index.php,process-sl.php):

session_set_cookie_params(172800);
session_start();
session_save_path('/home/cheapand/tmp/sessions/');
ini_set("log_errors" , "1");
ini_set("error_log" , "logs/index.php.log");
ini_set("display_errors" , "0");

处理数据的PHP代码有点长(但如果要求将粘贴它),基本上它只是更新SESSION中的数据(我不是第一次这样做,所以我假设没有错误,特别是因为它大部分时间都有效)并返回成功/错误,选择的付款类型以及PayPal令牌。

我做了什么:

  1. 此处的所有检查和步骤:PHP session lost after redirect
  2. 设置session_set_cookie_params(172800);
  3. 尝试从各种设备自己做多次购买,当然,它总是有效(无法重现错误)
  4. 确认这种情况发生在各种设备上(因为它记录在错误日志中),因此它不是设备特定的
  5. 你们(和女孩)有没有其他建议要检查或尝试什么?

0 个答案:

没有答案