确定我的用户是否可以接受cookie/会话的最佳方式是什么


What is the best way to determine if my users can accept cookies/sessions

我在网站上的购买过程需要一些逻辑方面的帮助。

我们有一个4步购买流程:结果,客户详细信息,付款详细信息,订单确认。

结果页面只是根据一些查询字符串参数将价格输出到屏幕。

然后,我将大量信息保存到PHP会话变量中,以备日后使用。

在第二阶段,即客户阶段,我想将其中一些会话变量输出到屏幕上,这在很大程度上是有效的。

在我的代码中,我做的第一件事是检查我在结果页面上设置的一个会话变量是否存在,只是为了检查我们是否在营业,以及客户报价信息是否正确保存。

我已经给自己设置了警告电子邮件,当用户在预订过程的客户或付款阶段登陆时通知我,但显然第一个会话变量不存在。然后,我会显示一条友好的错误消息,询问他们是否在浏览器中启用了cookie。

我们似乎收到了很多这样的警告电子邮件,高得惊人。这感觉不像是一个准确的统计数据,有多少客户可以在没有启用cookie的情况下到达。

电子邮件提醒我当前URL、参考URL(如果有)、用户IP地址以及他们保存的所有会话变量的输出(当然总是没有!)

我只是不知道下一步该怎么办——这些用户或机器人真的在没有启用cookie的情况下进入结果页面吗?这意味着他们将在下一页的测试中失败,或者可能是其他原因?

我在每个购买页面的顶部都有session_start(),所以它不是那样的。

这是我的客户页面:

<?php
require_once "../includes/common.php";
$quoteShared        = new quoteShared();
// Check if this is a direct page hit
if (requestSession("sessionnumber") == "") {
    echo $quoteShared->directHit();
    die;

common.php的顶部有session_start()。

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

您也可以在javascript中这样做:

function cookiesAreEnabled()
{   
    var cookieEnabled = (navigator.cookieEnabled) ? 1 : 0;  
    if (typeof navigator.cookieEnabled == "undefined" && cookieEnabled == 0){   
    document.cookie="testcookie";   
    cookieEnabled = (document.cookie.indexOf("test­cookie") != -1) ? 1 : 0; 
    }   
  return cookieEnabled == 1;
}

最佳方式PHP

<?php
    session_start();
    if(!isset($_GET['testing'])){
        setcookie('cookietest', 'somevalue', time()+3600);
        header("location: cookie.php?testing=1");
    }else{
        if(isset($_COOKIE['cookietest']) && $_COOKIE['cookietest'] == 'somevalue'){
            echo 'cookie enabled';
        }else{
            echo 'cookie not enabled';
        }
    }