[英]Record user's ip address everytime user loggin in - PHP
这是我在登录页面上的代码。 我希望能够统计使用我的网站的次数以及他们从何处登录。 我能够进行计数,但不能进行ipaddress计数。
在表格中,我希望它显示这样的每个用户数据
这些是我表中的列。 用户名,上次登录时间,登录时间,IPADDRESS,IPADDRESS1,IPADDRESS,...... IPADDRESS10。 我已经创建了所有10个不同的ip地址列(我不确定如何使以下内容看起来像表格中的样子,所以我很抱歉)
USERNAME | 最后登录| 时代登录| IP地址 IPADDRESS1 | IPADDRESS2 ...... | IPADDRESS10
IHOP | 2012年12月21日8.59PM | 5 | 80.81.82.83 | 80.81.82.82 | 80.81.82.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个?...)
使用带有用户ID,IP地址和已登录日期的单独表。 并且每次他们登录时,请检查其IP地址。 在查询中使用GROUP BY ipaddress来查看该用户是否有10个不同的ip。 现在,如果用户拥有相同的IP,则让他进入...如果IP不同,并且有10个以上的IP不要让他进入。
编辑:
但是您的要求在用户看来并不方便。 我使用ADSL连接,并且我的IP经常更改,因此如果您的数据库有我的10个不同的IP,我将无法登录到您的系统,这对用户来说并不友好。 同样,如果我的系统在网络中,则可能有100个用户使用相同的IP访问您的系统。
为应用程序安全性,使用准备好的语句,PDO或至少使用mysqli函数。 mysql函数已弃用。
您应该使用两个表。 一个用于存储用户的用户名 , 密码 , 最后登录时间和登录计数 ,另一个用于存储用户的IP地址。 您可以在用户每次登录时存储用户的username / userid , ip地址和登录时间戳 。
这样,如果您只想存储该用户的最后10个IP地址,则可以过滤sql搜索以仅显示该特定用户的IP地址,然后用最新的IP地址替换最早的IP地址条目,因此您将始终有最后10个条目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.