在mysql数据库中检查用户ip

时间:2014-06-10 16:45:40

标签: php mysql

我有一个用户表

id_agent   name   agent_center  agent_name  agent_password
 1         black   ABCE          black       1234
 2         white   XYZ           white       1234

我有另一个用于存储ip的表

id_center   center_name    ipdetails
 1          ABCE           118.102.244.52,127.0.0.1  //black ip 118.102.244.52
 2          XYZ            192.168.0.1,123.87.65.43
 3          LKA           

现在,如果我尝试使用agent_name=blackagent_password=1234进行登录,则会检查第二个表是否存在与用户相关的center_name中的IP。在这种情况下{{1}如果ABCE中存在该用户的ip,它将提前或拒绝。我可以从一个函数中检查。

我已经有一个从表格中的单行检查ip的函数

center_name=ABCE

然后调用index.php文件中的函数,如

function check_ip_detailss($center_id,$center_name){
$sql_IP=mysql_query("SELECT * FROM center_listt WHERE center_name='$center_name' AND ipdetails LIKE '%$center_id%'");
$nos=mysql_num_rows($sql_IP);
if($nos){
    $ip_mess="";
} else {
    $ip_mess="<h1 align=\"center\" style=\"font-size:24px\">Your IP(".$center_id.") is currently inactive. 
    <br/><br/>Please contact your system administrator for inquiries.</h1>";
}

return $ip_mess;
}
?>

它正在检查的表

$center_ip_status=check_ip_details($_SERVER['REMOTE_ADDR'],"Cegura FT");
if($center_ip_status!=''){
echo $center_ip_status;exit;
}
if($_SESSION["login_id"]){
header("location:home.php");exit;
}
//if found it open the login form here.

我该怎么做一个能检查用户id_center agent_center ip 1 LKM 122.23.32.54,123.56.87.82,321,45,65,34,881.43.23.45 然后在第二个表中查找该用户的ip的函数

1 个答案:

答案 0 :(得分:1)

根据中心名称连接2个表,使用where子句检查名称和密码,并使用FIND_IN_SET检查IP地址。

示例代码。要知道他们是否可以登录,只需要检查此查询是否返回一行。

SELECT *
FROM users a
INNER JOIN centers b
ON a.agent_center = b.center_name
WHERE a.agent_name = 'black' 
AND a.agent_password = '1234'
AND FIND_IN_SET('118.102.244.52', b.ipdetails) > 0

但与标准化数据库设计相比,这不会有效

编辑 - 用于在传递用户名,密码和IP地址时检查详细信息的php函数: -

<?php

function check_ip_details_for_user($agent_name, $agent_password, $center_id)
{
    $ip_mess="";
    $sql = "SELECT a.agent_center
            FROM users a
            INNER JOIN centers b
            ON a.agent_center = b.center_name
            WHERE a.agent_name = '".mysql_real_escape_string($agent_name)."' 
            AND a.agent_password = '".mysql_real_escape_string($agent_name)."'
            AND FIND_IN_SET('".mysql_real_escape_string($center_id)."', b.ipdetails) > 0";
    $query = mysql_query($sql);     
    $nos = mysql_num_rows($query);
    if(!$nos)
    {
        $ip_mess="<h1 align=\"center\" style=\"font-size:24px\">Username or password not correct for this ip address. 
        <br /><br />Please contact your system administrator for inquiries.</h1>";
    }

    return $ip_mess;
}
?>