记录用户';每次用户登录PHP时的ip地址


Record user's ip address everytime user loggin in - PHP

以下是登录页面中的代码。我想能够计算出有多少次使用我的网站,以及他们从哪里登录。我会数数,但不会用ipad。

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

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

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

IHOP | 2012年12月21日下午8点59分| 5 | 80.81.82.83 | 80.81.82 | 80.81.83

每次使用新的ip地址从同一用户登录时,ip地址都会记录到表中。每个用户最多有10个不同的ip地址。这张桌子是我第一次想到的,所以我真的不确定这是否是在桌子上展示它们的最佳方式,所以也请给我一个建议。

如何将这些ip地址添加到表中?我真的不知道如何将每个ip地址列分开。当我得到新的ip地址时,它只是不断地覆盖旧的ip地址。

非常感谢。

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;
    }

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

uSe具有userid、ipaddress、logged_in_date_time的独立表。每次他们登录时,都要检查他们的IP地址。在查询中使用GROUP By ipaddress,查看该用户是否有10个不同的ip。现在,如果用户有相同的IP,那么就让他进来……如果IP不同,并且有10个以上的IP,就不要让他进来。

编辑:

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

为应用程序安全性使用prepared语句、PDO或至少使用mysqli函数。mysql函数已折旧。

您应该使用两个表。一个用于存储用户的用户名密码上次登录时间以及登录次数,另一个用于保存用户的IP地址。您可以存储用户每次登录时的用户名/useridip地址登录时间戳

这样,如果你只想存储用户的最后10个ip地址,你可以过滤sql搜索,只显示该特定用户的ip地址,然后用最新的ip地址替换最早的ip地址条目,这样你就总是有最后10个条目。