【问题标题】:How to use check for session and http referer? [duplicate]如何使用检查会话和 http referer? [复制]
【发布时间】:2018-10-12 18:42:14
【问题描述】:

我想检查会话和 http 引用,但它不适合我。

首页:

<?php
session_start();
$_SESSION['something'] = '1';
?>

第二页:

<?php
session_start();
  if(!strpos($_SERVER["HTTP_REFERER"], "some referer")){

    die(header("Location: my site"));
  }

  if(!isset($_SESSION['something'])){

      die(header("Location: my site"));
  }

session_destroy();
// rest code

我做错了什么?

【问题讨论】:

    标签: php


    【解决方案1】:

    您似乎遇到了不需要的type conversion

    strpos 返回字符串内(部分)匹配的索引。如果您正在检查您想要的确切引用者,它会返回 0 并评估为 false,从而输入条件。

    通过以下方式明确检查 strpos 的返回类型:

    if (is_bool(strpos($_SERVER["HTTP_REFERER"], "some referer")))
    

    这意味着它返回了 false 所以没有找到,或者更重要的是:

    if (strpos($_SERVER["HTTP_REFERER"], "some referer") === FALSE)
    

    【讨论】:

      【解决方案2】:
      if((!strpos($_SERVER["HTTP_REFERER"], "some referer")) || !isset($_SESSION['something'])){
          die(header("Location: my site"));
      }
      

      我认为你需要这个条件

      【讨论】:

        猜你喜欢
        • 2013-05-19
        • 2019-05-08
        • 1970-01-01
        • 2010-12-03
        • 2017-01-23
        • 2011-09-17
        • 1970-01-01
        • 1970-01-01
        • 2015-10-02
        相关资源
        最近更新 更多