Php 网站首次访问,如何检测?
我正在做一个基本的网站,用户必须进入网站,如果是第一次访问,然后他/她会显示一些信息。我不想使用cookies,因为并非所有用户都将启用cookies。IP的问题是,它主要是动态的,因此也不是很有效Php 网站首次访问,如何检测?,php,web,Php,Web,我正在做一个基本的网站,用户必须进入网站,如果是第一次访问,然后他/她会显示一些信息。我不想使用cookies,因为并非所有用户都将启用cookies。IP的问题是,它主要是动态的,因此也不是很有效 还有,有我可以使用的库吗?IP是识别用户的最佳方式。它可以明显地改变,但事实就是这样。对于使用现代web浏览器的用户,请使用本地存储: IP不能识别用户。它只是标识网络上的节点(防火墙、NIC等)。如果不使用cookies,就无法在全球范围内说明这一点。您必须在他们的机器上存储一些东西,以便让他们将
还有,有我可以使用的库吗?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
,屏幕分辨率
,用户代理
)作为用户的指纹就足够了
我怎么知道的?
以前曾使用过跨浏览器指纹识别
技术。您可以在此处阅读更多内容:
事实上,您可以跟踪实际输入和返回的用户,即使他更改了浏览器 “用户必须进入网站,如果是第一次进入,那么他会看到一些信息”,这是不可理解的,我会说,使用给定的答案和你的想法的组合。因此,请检查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().
}
}
}