首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每次用户登录PHP时记录用户的ip地址

问每次用户登录PHP时记录用户的ip地址
EN

Stack Overflow用户
提问于 2012-08-27 17:06:36
回答 3查看 2.4K关注 0票数 0

以下是我在登录页面上的代码。我希望能够计算出有多少次使用我的网站,以及他们是从哪里登录的。我会计算,但不会计算I地址。

在表中,我希望它像这样显示每个用户的数据

这些是我的表中的列。用户名、上次登录时间、登录次数、IPADDRESS、IPADDRESS1、IPADDRESS、......IPADDRESS10。我已经创建了所有10个不同的ip地址列(我不太确定如何使以下内容看起来像表中的内容,所以我真的很抱歉)

用户名|上次登录|登录次数| IPADDRESS2 | IPADDRESS1 | IPADDRESS ......| IPADDRESS10

IHOP | 21-12-2012 8.59 21|5| 80.81.82.83 | 80.81.82.82 | 80.81.82.83

每次使用新的ip地址从同一用户登录时,该ip地址都会记录到表中。每个用户最多有10个不同的ip地址。这张表格是我第一次想到的,所以我不确定这是否是在表格中显示它们的最好方式,所以也请给我一个推荐。

如何将这些ip地址添加到表中?我不太确定如何分隔每个ip地址列。当我获得新的ip地址时,它会一直覆盖旧的ip地址。

非常感谢。

代码语言:javascript
复制
var $HOST = "website.com";  
var $USERNAME = "username"; 
var $PASSWORD = "password"; 
var $DBNAME = "database";   

function authenticate($username, $password) {

$Auth = new auth();
$detail = $Auth->authenticate($username, $password);

    if (ereg("'", $username)) 
    {
        return "invalid username";
    }

    if (ereg("'", $password)) 
    {
        return "invalid password";
    }

    $query = "SELECT * FROM user WHERE uname='$username' AND passwd=MD5('$password') AND status <> 'inactive'";

    $UpdateRecords = "UPDATE user SET lastlogin = NOW(), logincount = logincount + 1 WHERE uname='$username'";
    $connection = mysql_connect($this->HOST, $this->USERNAME, $this->PASSWORD);

    $SelectedDB = mysql_select_db($this->DBNAME);
    $result = mysql_query($query); 

    $numrows = mysql_num_rows($result);
    $row = mysql_fetch_array($result);

    if ($numrows == 0) {
        return 0;
    }

    */
    else {
        $Update = mysql_query($UpdateRecords);
        return $row;
    }
EN

回答 3

Stack Overflow用户

发布于 2012-08-27 17:10:41

最好使用一个包含(USERNAME | IPADDRESS | TIME)列的单独的表。这样,您将能够更有效(也更容易)地为给定用户存储不同的IP地址。然后,您必须选择一种算法来保留这些信息(保留前10个不同的IP地址?保留最后10个?...)

票数 4
EN

Stack Overflow用户

发布于 2012-08-27 17:16:29

uSe使用userid、ipaddress、logged_in_date_time分隔表。每次他们登录的时候,都要检查他们的IP地址。用于在查询中按ip地址分组,并查看该用户是否有10个不同的ip。现在,如果用户有相同的IP,那么让他in...if这个IP是不同的,并且有超过10个IP不让他进入。

编辑:

但在用户看来,您的需求并不方便。我使用ADSL连接,我的IP地址经常被更改,所以如果你的数据库有我的10个不同的IP地址,我就不能登录到你的系统,这对用户不友好。另外,如果我的系统在网络中,100 %的用户可能会使用相同的IP访问您的系统。

使用准备好的语句、PDO或至少mysqli函数来保证应用程序的安全性。mysql函数已折旧。

票数 0
EN

Stack Overflow用户

发布于 2012-08-27 17:24:47

您应该使用两个表。一个用于存储用户的用户名、密码、上次登录时间和登录计数,另一个用于存储用户的IP地址。您可以存储用户每次登录时的username/userid,ip地址和登录时间戳。

这样,如果您只想存储用户的最后10个ip地址,您可以只过滤sql搜索,使其仅显示该特定用户的ip地址,然后用最新的ip地址条目替换最早的ip地址条目,这样您将始终拥有最后10个条目。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12139046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档