【问题标题】:Compare IP to SQL table values将 IP 与 SQL 表值进行比较
【发布时间】:2013-07-14 16:58:21
【问题描述】:

我在使用以下表单提交期间捕获访问者的 IP 地址。

$users_ip=$_SERVER['REMOTE_ADDR'];

我现在想做的是在提交评论时查看之前是否使用过这个 ip 变量,有人能指出我正确的方向吗?

也许是like SQL 命令?

【问题讨论】:

  • 当他们提交评论时,您是否已经存储了他们的 IP 地址?
  • 附注以防万一您不知道:这不太可能非常一致,因为大多数用户的 IP 地址会非常频繁地更改。
  • 您能否提供存储 IP 的表的架构?
  • 建议: 将 IP 地址转换为长。它使 IP 地址比较更容易。

标签: php sql ip


【解决方案1】:

假设您将客户端 ips 存储在名为“ips”的表中,然后使用:

$connection = mysql_connect($your_db_host, $your_user_account, $your_password);
$mysql_select_db($your_db_name);

$ip = $_SERVER['REMOTE_ADDR'];
$sql = "select 1 from `ips` where `ip`='$ip'";
$sql_resource = mysql_query($sql);
$mysql_close($connection);

if($sql_resource && mysql_num_rows($sql_resource) > 0){
    // your logic code if the ip existed in the db
    echo 'The ip has been used before';
} else {
    // code if the ip not existed in the db
    echo 'The ip has not been used before yet';
}

【讨论】:

  • 谢谢你,很好的例程:)
【解决方案2】:

有一个很好的教程解释了如何在 MySQL 中存储 IP 地址。简而言之,将它们转换为this comment 中建议的长形,然后使用简单的SELECT 语句找到它:

"SELECT COUNT(*) FROM comment WHERE ip = " . ip2long($_SERVER['REMOTE_ADDR'])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 2012-07-24
    相关资源
    最近更新 更多