PHP, MySQL Регистрация пользователя с проверкой электронной почты и системой входа в систему (история) с указанием даты последнего посещения - PullRequest
0 голосов
/ 27 августа 2011

Я хочу создать систему входа в систему, где каждый раз, когда пользователь входит в систему, эта активность регистрируется в другой таблице.Как это возможно?

Я использую PHP и MySQL, я хорошо знаю оба из них и в настоящее время у меня есть система, которую я разработал с использованием различных учебных пособий.

Это очень просто, так какэто все, что мне нужно в данный момент, однако я могу попытаться упростить код на более позднем этапе, сделав его объектно-ориентированным, однако в настоящее время это выше моего уровня квалификации.

Пользователь регистрируется со своим именем, именем пользователя, пароль и адрес электронной почты.Затем пользователь отправляет по электронной почте свои данные для входа - я хотел бы, чтобы пользователь щелкнул ссылку внутри лота электронной почты, чтобы активировать свою учетную запись. * 1

Как только пользователь активировал свою учетную запись, пользовательвход в систему с именем пользователя и паролем - я хотел бы, чтобы их «активность» была сохранена, то есть дата / время, когда они входят в систему. * 2

* 1: В настоящее время, когда пользователь регистрируется, он получаетпо электронной почте с их данными для входа в систему, я хотел бы, чтобы письмо содержало ссылку, чтобы они могли "активировать" свою учетную записьКак я могу это реализовать.Я знаю, что должен хранить уникальный код в базе данных, но я не знаю, как отправить эту информацию пользователю и сравнить ее с базой данных.

* 2: я хотел бы сохранить дату и времяв таблице, когда пользователь входит в систему, чтобы можно было проверить его «историю действий».Как мне идти об этом.Я знаю, что мне нужно создать новую таблицу, которая называется что-то вроде 'log', в которой просто хранятся имя пользователя и дата, но я не знаю, как ее заполнить, когда пользователь входит в систему.

Если кто-то может помочь, этобыть более чем оцененным.

Ответы [ 2 ]

4 голосов
/ 27 августа 2011

здесь я объяснил ранее, как создать систему входа в систему.проверьте этот пост.это может вам помочь.

Обширный редактор 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);

, а затем напишите другой сценарий для проверки строки и обновите значение в статусе до 1, если строка активации подтверждена.это поможет вам понять, что вы должны делать.

1 голос
/ 27 августа 2011

Если вы хотите регистрировать активность пользователя (то есть его последнюю дату входа в систему), вы можете просто сделать другое поле в таблице users и назвать его как-то как last_login или last_activity (в зависимости от того, что вам подходит). И затем, когда они входят в систему, после проверки введенного пароля обновите поле с текущей датой.

if ($password === $storedpassword)
{

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

}
...