php - 从登录页面提取 IP 并与已知用户进行比较

标签 php mysql

我正在尝试创建一个有效的 sql 查询,该查询将在访问我们的登录页面时为我们数据库中已知或未知的 IP 地址提供准确的 FLAG。我用这个

// get the IP of the user on this landing page
$ip_address=$_SERVER['REMOTE_ADDR']; 
echo $ip_address. ' ip address<br/>';

// see if we know this user..
$search_first="SELECT COUNT(DISTINCT(ip_address)) FROM `qb_sessions` WHERE `ip_address` = '$ip_address' ";
$has_ips = mysql_query($search_first);
$has_ip = mysql_num_rows($has_ips);
echo $has_ip. ' has IP<br/>'; // should show count in table

使用此代码段无法提供我需要的结果。如果表为空(与此 IP 不匹配),我仍然会得到一个“1”作为 $has_ip 的回显。如果没有匹配,我真的需要'0',如果这个 IP 之前已经记录在 qb_sessions 表中,我真的需要'> 1'。此代码段的目的是识别此着陆页上未注册的新点击,然后将其重定向到另一个页面,例如加入时事通讯、获取折扣券等。

我尝试了各种 sql 组合都无济于事,包括转义 (') $ip_address 引号。

提前感谢您的帮助。

最佳答案

... If the table is empty, (no match to this IP), I still get a '1' as the echo of $has_ip.

那是因为 MySQL 的 COUNT() 函数。无论表格包含 1 行还是 n 行,SELECT COUNT(...) ... 仍将返回恰好一行,其中包含一个数字,显示从返回的行数SELECT 查询。

既然您正在使用 PHP 的 mysql_num_rows() 函数来计算行数,请从您的 SELECT 查询中删除 COUNT()

$search_first="SELECT DISTINCT(ip_address) FROM `qb_sessions` ...

旁注: 不要使用 mysql_* 函数,它们从 PHP 5.5 开始被弃用,并在 PHP 7.0 中被完全删除。使用 mysqlipdo反而。 And this is why you shouldn't use mysql_* functions .

关于php - 从登录页面提取 IP 并与已知用户进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44998738/

相关文章:

php - 按 id 从多个表中提取并按创建日期排序

php - 如何整合PHP和C程序?

java - sql上相同参数的多个值

python - pyqt5 tablewidgets 检索数据

mysql - 在 Join 期间将文本转换为 int(转换?)

php - 无法将返回的 API 请求插入数据库 - php

php - Wpdb prepare 调用不正确

php - 如果为空则隐藏 HTML/JQuery 表格(footable)

php - Zend 框架 1 - 消息 : SQLSTATE[HY093]: Invalid parameter number: no parameters were bound

php - Laravel undefined variable (但已发送)