0

我希望创建一个登录系统,每次用户登录时,此活动都会记录在另一个表中。这怎么可能?

我正在使用 PHP 和 MySQL,我对这两者有很好的了解,并且目前有一个我使用各种教程设计的系统。

这非常简单,因为这就是我目前所需要的,但是我可能会在以后通过使其面向对象来简化代码,但这超出了我目前的技能水平。

用户使用他们的姓名、用户名、密码和电子邮件进行注册。然后通过电子邮件向用户发送他们的登录详细信息 - 我希望用户必须单击电子邮件批次中的链接来激活他们的帐户。*1

一旦用户激活了他们的帐户,用户就会使用用户名和密码登录 - 我希望存储他们的“活动”,即他们登录的日期/时间。*2

*1:目前,当用户注册时,他们会收到一封包含登录详细信息的电子邮件,我希望该电子邮件包含一个链接,以便他们可以“激活”他们的帐户。我该如何实现这一点。我知道我应该在数据库中存储一个唯一代码,但我不知道如何将该信息发送给用户并对照数据库进行检查。

*2:我希望将用户登录时的日期和时间存储在表格中,以便可以检查他们的“活动历史”。我该怎么做。我知道我需要创建一个名为“log”之类的新表,它只存储用户名和日期,但我不知道如何在用户登录时填充它。

如果有人可以提供帮助,那将不胜感激。

4

2 回答 2

4

在这里,我之前已经解释了如何创建登录系统。检查这篇文章。这可能会帮助你。

开源富 HTML 编辑器

以及关于发送邮件进行激活。您需要将以下内容附加到上述解释的代码中。

activation_string向表用户添加一个额外的列。现在你的决赛桌应该是这样的。

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `email` varchar(50) NOT NULL,
  `password` varchar(50) NOT NULL,
  `activation_string` varchar(50) NOT NULL,
  `status` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
);

activation_string列将保存要发送到用户电子邮件的激活字符串。这样当用户点击它时,用户帐户就会被激活。现在使用以下函数生成激活字符串。

function generateActivationString() {
    $randomSalt = '*&(*(JHjhkjnkjn9898';
    $uniqId = uniqid(mt_rand(), true);
    return md5($randomSalt.$uniqId);
}

现在使用注册表单代表用户。在提交表单时,您必须执行以下操作。

$email = mysql_real_escape_string($_POST['email']);
$password = mysql_real_escape_string(sha1($_POST['password']));
$activationString = generateActivationString();
mysql_query("INSERT INTO users (email,password, activation_string) VALUES('$name','$password','$activationString')");

同时向用户发送一封电子邮件,其中激活字符串表示为 URI。检查下面的代码如何做到这一点。

$email = $_POST['email'];
$message = 'http://mysite.com/activate.php?confirm='.$activationString;
$to = $email;
$subject = 'User Account Confirmation';
$body =     $message . PHP_EOL;
mail($to, $subject, $body);

然后编写另一个脚本来验证字符串,如果验证激活字符串,则将 status 中的值更新为 1。

希望这可以帮助您了解您应该做什么。

于 2011-08-27T11:08:34.723 回答
1

如果您想记录用户活动(即他们的最后一次登录日期),您可以在users表格中创建另一个字段并将其命名为last_loginlast_activity(无论哪个适合您)。然后当他们登录时,检查他们输入的密码后,用当前日期更新该字段。

if ($password === $storedpassword)
{

  // Password correct.
  $currentDate = date('Y-m-d g:i:s a');
  mysql_query('UPDATE `users` SET `last_login` = "' . $currentDate . '"');

}
于 2011-08-27T12:30:11.000 回答