Добрый вечер! Сделал модуль подписка на рассылку - текстовое поле для ввода e-mail и кнопка "Подписаться".
При нажатии на кнопку происходит проверка e-mail заказчика, если такого заказчика нет, то добавляется в базу новый покупатель, генерируется пароль из 8 символов, записывается в базу и на почту покупателю отправляется пароль от ЛК.
Но при попытке авторизоваться, при вводе e-mail и пароля, система сообщает, что e-mail или пароль неверный. В чем может быть причина? Пароль сохраняю в базу таким же способом как и при обычной регистрации.
$passgen = generatePassword(8); // генерация пароля из 8 символов
if($this->db->query("INSERT INTO " . DB_PREFIX . "customer SET customer_group_id = 1, email = '".$data['email']."', status = 1, approved = 1, salt = '".$salt = token(9)."', password = '".sha1($salt . sha1($salt . sha1($passgen)))."', newsletter = 1, date_added = NOW()"))
{
$mail = new Mail();
$mail->protocol = $this->config->get('config_mail_protocol');
$mail->parameter = $this->config->get('config_mail_parameter');
$mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname');
$mail->smtp_username = $this->config->get('config_mail_smtp_username');
$mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');
$mail->smtp_port = $this->config->get('config_mail_smtp_port');
$mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout');
$mail->setTo($data['email']);
$mail->setFrom($this->config->get('config_email'));
$mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'));
$mail->setSubject("Подписка на рассылку");
$mail->setText($passgen);
$mail->send();
return "Вы подписались на рассылку новостей";
}
function generatePassword($length = 8){
$chars = 'abdefhiknrstyzABDEFGHKNQRSTYZ23456789';
$numChars = strlen($chars);
$string = '';
for ($i = 0; $i < $length; $i++) {
$string .= substr($chars, rand(1, $numChars) - 1, 1);
}
return $string;
}