Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.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_Web - Fatal编程技术网

Php 网站首次访问,如何检测?

Php 网站首次访问,如何检测?,php,web,Php,Web,我正在做一个基本的网站,用户必须进入网站,如果是第一次访问,然后他/她会显示一些信息。我不想使用cookies,因为并非所有用户都将启用cookies。IP的问题是,它主要是动态的,因此也不是很有效 还有,有我可以使用的库吗?IP是识别用户的最佳方式。它可以明显地改变,但事实就是这样。对于使用现代web浏览器的用户,请使用本地存储: IP不能识别用户。它只是标识网络上的节点(防火墙、NIC等)。如果不使用cookies,就无法在全球范围内说明这一点。您必须在他们的机器上存储一些东西,以便让他们将

我正在做一个基本的网站,用户必须进入网站,如果是第一次访问,然后他/她会显示一些信息。我不想使用cookies,因为并非所有用户都将启用cookies。IP的问题是,它主要是动态的,因此也不是很有效


还有,有我可以使用的库吗?

IP是识别用户的最佳方式。它可以明显地改变,但事实就是这样。

对于使用现代web浏览器的用户,请使用本地存储:


IP不能识别用户。它只是标识网络上的节点(防火墙、NIC等)。如果不使用cookies,就无法在全球范围内说明这一点。您必须在他们的机器上存储一些东西,以便让他们将其返回到您的应用程序中。出于安全原因,浏览器是匿名的。人们必须自愿做点什么

我解决这个问题的方法是在MySQL中记录用户的交互和会话。我检查他们是否使用Javascript以及是否启用了cookies。如果他们启用了cookie,那么我会给他们传递一个唯一的ID。如果他们没有,那么我只会忽略数据。如果他们确实打开了cookie或javascript,那么我将在DB中创建其他标志。在他们提交个人身份信息时,我可以将他们的记录与文件中的其他信息配对

有一种老的skool方法,它通过类似于Amazon的[address]栏传递$\u GET vars。你也可以让网站上的所有按钮和链接都使用POST表单(但这更麻烦)。但是你不能信任这些信息,除非你对这些信息进行散列并继续向前传递。始终检查哈希,以确保它们不会更改查询行

因此,如果您要传递一个用户ID,那么您将有一个地址栏,它可以像这样工作:

<?php
  function addrAppend($uid){
    //secret word would be something that you know so it works like a pre-shared key.
    $hash = md5($uid."secretword".$_SERVER['REMOTE_ADDR']);
    $app="?uid=$uid&hash=$hash";

    return $app;
  }

 ?>

如果你想建立专业级的跟踪解决方案。您可以从用户处存储以下内容:

  • IP地址
  • 操作系统的名称
  • 屏幕分辨率
  • 时区设置
  • 安装在计算机上的字体
  • 包含有关浏览器信息的字符串(即用户代理字符串)
  • 测试的时间和日期
  • 浏览器上安装的插件
  • 接受的MIME类型列表
  • 对navigator对象进行哈希处理,值为navigator.doNotTrack和navigator.buildID
  • 以及生成的标识符
  • 当然,你不需要所有这些。其中的一个子集(如
    IP
    屏幕分辨率
    用户代理
    )作为用户的指纹就足够了

    我怎么知道的? 以前曾使用过
    跨浏览器指纹识别
    技术。您可以在此处阅读更多内容:


    事实上,您可以跟踪实际输入和返回的用户,即使他更改了浏览器

    “用户必须进入网站,如果是第一次进入,那么他会看到一些信息”,这是不可理解的,我会说,使用给定的答案和你的想法的组合。因此,请检查IP、cookie和本地存储。如果设置了其中一个,则您知道不必重新显示信息。不过要注意IP地址。在一些公司/学校,很多用户在上网时都有相同的IP地址。如果不是很清楚的话,很抱歉。基本上,当用户第一次进入网站时,我们需要检测它并向他显示有关wesbite的信息。在地址中生成一个假装cookie作为查询字符串的一部分,然后修改所有内部链接以继续使用相同的GUID。现在这种方式并不流行,因为现在每个人都至少启用了会话cookies,即使是在移动设备上,但它可以可靠地完成任务。IP并不是最好的方式。多个用户可以具有相同的ip,或者一个用户可以具有多个ip。用户认证系统更准确。许多用户可以在具有相同外部IP的NAT路由器后面。因此,如果单独使用,IP不是最好的用户指纹。如果有人使用虚拟机,屏幕分辨率可能会改变。同样,在移动设备上,当他们翻页时,你需要确保你正在捕捉翻页。如果有人更改了标题或正在使用代理[IP更改],那么您将在下一页上看到不同的信息。
          if(!empty($_GET['hash'])){
            if ($_GET['hash']==md5($temp_UID."secretword".$client_ADDR)){
             //then it's unaltered assuming they didn't guess your hashing convention
            } else {
             //then they altered the get vars so flush the info or end().
            }
          }
    
      }