【问题标题】:How to define only one unique code to each user by user's ip如何通过用户的ip为每个用户定义一个唯一的代码
【发布时间】:2018-05-06 17:40:36
【问题描述】:

我想为用户提供他自己的唯一代码,以便他每次使用他的 ip(桌面站、移动设备等)进入我的网站时都会收到相同的代码。

我尝试过使用 cookie,但它非常令人沮丧和不专业,以至于每次我重新启动计算机/使用不同的浏览器/使用不同的设备/使用隐身模式时,它都会为我生成一个新代码。

我是 mysqli 的新手,我已经尝试用 mysqli 查询替换“$cookie”行,但是页面根本没有加载..

这是我的代码,非常感谢! PS此代码有效。当我谈到无法加载的页面时,我是在谈论我尝试过但不起作用的 mysqli 选项。

<?php
header("Refresh: 360;");
?>
<?
include "config.php";
if(isset($_COOKIE['my_code'])){
    $code = $_COOKIE['my_code'];
}else{
    $code = rand(1,9).date('Y').date('m').date('d').date('h').date('i').date('s');
    $code = rand_uniqid($code);
    setcookie("my_code",$code, 9999999999);  

    $insert = "insert into cookie_code(user_ip,user_code) values('".getRealIpAddr()."','".$code."');";
    @mysql_query($insert);

我想用任何 mysql 选项更改 $cookie 选项,该选项将检查用户的 ip 是否已经在数据库中,如果是,那么将给出来自同一行(ip)的代码给用户。 如果没有与用户的ip匹配的ip,他将得到一个新的生成代码。

编辑,常见问题解答:

  • 没有登录详细信息,我没有制作任何登录面板 使用用户名和密码注册。我希望访问者进入我的网站 并获得一个将跟随他们的唯一代码,除非他们更改 ip。
  • 我知道 IP 地址不可信,因为它是动态的,我 考虑到有来自同一家庭的人
    将具有相同的 IP。

  • 我不希望人们注册,因为我会失去很多潜力 用户由于他们的懒惰(人们不想浪费时间在
    注册)。这将是一个小项目,将产生 每天一个新代码(我想每 24 小时清理一次数据库),
    这就是为什么我不在乎使用 ip.. 我只需要它保持 24
    小时。

  • 我知道我正在使用mysql,我将尽快将其更改为mysqli 我会找到解决这个 IP 问题的方法

.

【问题讨论】:

  • 你为什么不用他的用户名?
  • 我觉得非常有趣的是,您担心跨浏览器拆分 cookie 的专业性,但您却在个人资料照片中关闭了摄像头。
  • 永远不要相信一个 ip,除非你在一个每个设备都有自己的静态 ip 的 Intranet 上。通过 ISP 发布的 IP 是动态分配的,并且大多数会在给定的时间范围后发生变化,通常会被回收给其他用户。
  • 这些用户登录了吗?如果是这样,您可以将代码添加到用户表中。题外话你不应该使用 mysql_* 函数,它们已从以后的 PHP 版本中删除,应该避免使用,以上是非常正确的,一个 IP !=一个用户
  • 来自同一家庭的用户呢?即使它们在不同的计算机上,它们也可能具有相同的 IP 地址。

标签: php mysql variables cookies


【解决方案1】:

如果仅基于 IP 地址,为什么还要麻烦存储代码?随手拍就行了

$ip = $_SERVER['REMOTE_ADDR'];
$today = date('Y-m-d');
$ip .= $today;
$code = sha1($ip);

【讨论】:

  • 嘿 miknik,谢谢你的回答。我确实想存储代码,因为我还没有决定要存储它们多长时间。不过我想有这个选择。
猜你喜欢
  • 2017-12-03
  • 2019-03-25
  • 2018-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多