PHP、MySQL用户通过电子邮件验证和登录系统(历史记录)注册,插入最后一次看到的日期

PHP、MySQL用户通过电子邮件验证和登录系统(历史记录)注册,插入最后一次看到的日期,php,mysql,login,login-script,login-system,Php,Mysql,Login,Login Script,Login System,我希望创建一个登录系统,在该系统中,每次用户登录时,该活动都会记录在另一个表中。这怎么可能 我使用的是PHP和MySQL,我对这两个方面的知识还不错,目前我有一个使用各种教程设计的系统 这是非常简单的,因为这是我目前所需要的,但是我可能会在以后的日子里通过使其面向对象来简化代码,但是这超出了我目前的技能水平 用户使用其姓名、用户名、密码和电子邮件进行注册。然后通过电子邮件向用户发送其登录详细信息-我希望用户必须单击电子邮件中的链接才能激活其帐户。*1 一旦用户激活其帐户,用户将使用用户名和密码登

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

我使用的是PHP和MySQL,我对这两个方面的知识还不错,目前我有一个使用各种教程设计的系统

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

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

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

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

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


如果有人能帮忙,我将不胜感激。

这里我已经解释了如何创建登录系统。查看这篇文章。这可能对你有帮助

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

向表用户添加一个额外的列
activation\u 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\u 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);
然后编写另一个脚本来验证该字符串,如果激活字符串已验证,则将状态中的值更新为1


希望这能帮助您理解应该做什么。

这里我已经在前面解释了如何创建登录系统。查看这篇文章。这可能对你有帮助

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

向表用户添加一个额外的列
activation\u 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\u 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);
然后编写另一个脚本来验证该字符串,如果激活字符串已验证,则将状态中的值更新为1


希望这有助于您理解应该做什么。

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

if ($password === $storedpassword)
{

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

}

如果要记录用户活动(即他们的上次登录日期),只需在
users
表中创建另一个字段,并将其命名为
last\u login
last\u activity
(以适合您的为准)。然后,当他们登录时,在检查他们输入的密码后,用当前日期更新字段

if ($password === $storedpassword)
{

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

}

你有什么特别的问题吗?@JJ我已经尝试了一些教程,目前有很多我自己创建的非常粗糙和基本的代码。它可以工作,但缺少我提到的功能(电子邮件激活和登录历史)。@Gumbo是的,有两件事-如何发送带有激活码的电子邮件,以及第二件事,如何记录用户登录的日期/时间。@Mike:请编辑您的问题并将您的问题添加到其中。@Gumbo,我想我有,我会让它更清楚。谢谢。你有什么特别的问题吗?@JJ我已经尝试了一些教程,目前我已经把这些教程和我自己创建的非常粗糙和基本的代码混在一起了。它可以工作,但缺少我提到的功能(电子邮件激活和登录历史)。@Gumbo是的,有两件事-如何发送带有激活码的电子邮件,以及第二件事,如何记录用户登录的日期/时间。@Mike:请编辑您的问题并将您的问题添加到其中。@Gumbo,我想我有,我会让它更清楚。谢谢。我刚刚找到了userCake。我现在正在看一看,但如果这不符合目的,我会看一看你的帖子。谢谢你,Ibrahim。@Mike如果你觉得这篇文章有用,你可以将它标记为已回答。我得到一个错误解析错误:语法错误,意外的T_在register.php中受保护,正是这一行导致它“protectedfunction generateActivationString(){”,而且,激活代码没有