Я хочу создать активацию учетной записи, где после регистрации ссылка будет отправлена администратору (или одному) электронному письму, в котором администратор просто должен нажать эту ссылку, чтобы активировать эту учетную запись.Активация учетной записи, CodeIgniter
У меня есть регистрация и вход в систему. Я использую MySQL Workbench и имею «флаг» или скорее просто поле в моей учетной записи (с именем user_login
), чтобы узнать, включена или отключена учетная запись, которая по умолчанию отключена после регистрации.
Я застрял и отправил ссылку по электронной почте, я не уверен, с чего начать. Эта ссылка, которую я хочу отправить, будет содержать случайную строку и будет отправлена администратору, скажем abc/123/random?stringis=1234
. Затем администратору просто нужно будет открыть его электронную почту и нажать на строку, а затем активировать учетную запись конкретного пользователя. Я нашел this и this, но это только для того, как отправить ссылку по электронной почте.
У меня нет идеи по логике. Создать функцию, по которой ссылка будет идти непосредственно к функции и оттуда, она изменит значение в моей таблице на enabled
или на то, что я назову так, чтобы учетная запись пользователя считалась активированной? Нужно ли мне создавать новое поле для соответствия случайной сгенерированной строке?
Основная идея заключается в том, что я пытаюсь сделать как те типичные сайты, по которым будет отправлена ссылка пользователю, чтобы активировать учетную запись после того, как он щелкнул ее по электронной почте, но на этот раз только на конкретное письмо, которое администраторы.
EDIT:
В контроллере
public function activate_user($activation_code)
{
$result = $this->home_model->activate($activation_code);
if($result != FALSE)
{
echo "You have activated :".$result[0]->user_id.".";
}
else
{
echo "Activation failed, something went wrong.";
}
}
В модели:
public function activate($activation_link)
{
$this->db->select('*');
$this->db->from('user_login');
$this->db->where('activation_link', $activation_link);
$query = $this->db->get();
if($query->num_rows() == 1)
{
return $query->result();
}
else
{
return FALSE;
}
}
Сколько времени занимает 3600? – hzq
3600 секунд означает 1 минуту. его в секундах. это зависит от вас, сколько вы хотите. Самая лучшая практика - определить константу для этого. –
для 24 час использование 60 * 60 * 24 –