Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP会话在购买过程中损失了一半_Php_Session_Session Variables_Session Cookies - Fatal编程技术网

PHP会话在购买过程中损失了一半

PHP会话在购买过程中损失了一半,php,session,session-variables,session-cookies,Php,Session,Session Variables,Session Cookies,设置 我的购买流程包括以下几个阶段: 后果 顾客 付款 订单形态 “结果”页面使用orders数据库表中的ID设置会话变量。每一页都将数据发布到下一页。customer和payment的开始都检查ID number会话变量的存在 正如您所想象的,99%具有默认cookie设置的浏览器在设置和读取这些会话变量方面没有问题 每当会话变量检查返回为空时,我就会收到一个警报。这些错误中的大多数似乎是直接点击客户和支付页面,所以机器人或书签点击都是有意义的 有时,我们会从客户页面收到警报,其中引用的URL

设置

我的购买流程包括以下几个阶段:

后果 顾客 付款 订单形态 “结果”页面使用orders数据库表中的ID设置会话变量。每一页都将数据发布到下一页。customer和payment的开始都检查ID number会话变量的存在

正如您所想象的,99%具有默认cookie设置的浏览器在设置和读取这些会话变量方面没有问题

每当会话变量检查返回为空时,我就会收到一个警报。这些错误中的大多数似乎是直接点击客户和支付页面,所以机器人或书签点击都是有意义的

有时,我们会从客户页面收到警报,其中引用的URL作为结果,表示会话为空,看起来像是禁用了cookie的客户。同样,这是公平的,用户可以接受cookie

问题

我们每周都会收到一些来自客户的警报,这些客户的订单ID会话变量为空,但在支付页面上,URL为customer。因此,他们成功地通过了客户阶段,订单ID变量存在。但是当我在他们提交个人信息后在付款页面上重新检查时,我发现他们的个人信息不见了

这对我来说毫无意义。上一页怎么可能没问题,下一页怎么可能没问题?域保持不变,所有URL都在HTTPS上,所以不是这样

我的电子邮件中包含了PHP,可以在所有会话变量之间循环-这总是空白的。所以不只是单个会话变量是空的,整个批次都是空的

是否有更多的调试我可以添加到这些电子邮件警报,看看会话是否在tact中,或者更确切地说,它不是?下面是一些代码:

客户和付款都从以下内容开始:

<?php
require_once "../includes/common.php";

$quoteShared        = new quoteShared();

// Check if this is a direct page hit
if (requestSession("sessionid") == "") {

    echo $quoteShared->directHit();
    die;
我们如何检查会话:

function requestSession($xParam) {
    $value = "";

    if (isset($_SESSION[$xParam]))
    {
        if ($_SESSION[$xParam] != "") {
            $value = $_SESSION[$xParam];
        }
    }

    return $value;
}

浏览器处于色情模式的用户关闭该窗口并从另一个不相关的窗口继续?您是否验证在PHP代码结束之前绝对没有输出?任何输出后都不能存储Cookie。常见的错误包括在所有PHP文件之前出现空格或不可见字符。Marc B-我已经在icognito/A片模式下测试了我们的系统,可以毫无问题地完成预订。托比-你提出的问题会影响所有订单,不是吗,不仅仅是每周几个订单?我立即设置了所有Cookie/会话,然后开始构建要输出的HTML。@MarcB我重新测试了一下,进入了订单的中间阶段,在Iconnito周围冲浪,然后顺利进入预订过程的下一阶段。但是如果整个冲浪会话都是从Iconnito开始的,那么,那块饼干只会隐姓埋名地存在,当窗口关闭时就会丢失。
function requestSession($xParam) {
    $value = "";

    if (isset($_SESSION[$xParam]))
    {
        if ($_SESSION[$xParam] != "") {
            $value = $_SESSION[$xParam];
        }
    }

    return $value;
}