gpt4 book ai didi

php - 获取用户 ip 并检查阻止列表?

转载 作者:行者123 更新时间:2023-11-29 02:28:47 24 4
gpt4 key购买 nike

当用户访问我的网站时,我会在数据库中记录他们的 IP 地址,这是防止欺诈/垃圾邮件的预防措施。

我正在使用这个查询来存储用户 ip

 $sql = "INSERT INTO ptb_sessions (session_id, user_ip, session_start, date, session_end) VALUES (NULL, '" . $_SERVER['REMOTE_ADDR'] . "', UTC_TIMESTAMP(), ADDDATE(), NULL);";
mysql_query($sql, $connection);

我现在想要做的是有一个脚本,当获取 ip 时,执行检查以查看此 ip 地址是否存在于我的表 ptb_blocked_users 中,如果存在,则将用户重定向到被阻止的页面。

我可以做这样的事情吗?

$result = mysql_query("SELECT id FROM mytable");
if(mysql_num_rows($result) == " . $_SERVER['REMOTE_ADDR'] . ") {
// row not found, show page..
} else {
// block page
}

有人可以告诉我如何去做吗?

提前致谢

最佳答案

您应该花一些时间分析您的数据。 IP 地址不是静态的,即使在 session 中也是如此。此外,每当您使用 IP 地址时,将它们视为数字要简单得多。

虽然离万无一失还有很长的路要走:

CREATE TABLE block_list
(
trunc_ip INT(4),
added TIMESTAMP
PRIMARY KEY (trunc_ip)
);

阻止:

INSERT INTO block_list (trunc_ip)
VALUES (256*FLOOR(INET_ATON('" . $_SERVER['REMOTE_ADDR'] . "')/256);

并检查 block :

SELECT 1 AS isblocked
FROM block_list
WHERE trunc_ip=(256*FLOOR(INET_ATON('" . $_SERVER['REMOTE_ADDR'] . "')/256);

...允许您屏蔽 8 位子网。

但还有更好的解决方案,包括:

  • 需要经过验证的电子邮件地址
    • 将 openId 与电子邮件服务提供商一起使用和/或
    • 在验证电子邮件之前不允许发帖
  • Browser fingerprinting

关于php - 获取用户 ip 并检查阻止列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16335681/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com