Наверняка многие видели в современных интернет-магазинах возможность создать себе как новичку аккаунт прямо при оформлении заказа, не прерывая процедуру оформления. Идея хорошая, но в стандартной поставке NetCat это, к сожалению не реализовано - приходится проходить полную процедуру регистрации, по окончании которой можно и вовсе забыть, зачем ты сюда пришел и что хотел купить.
Решение, разработанное нашей компанией, позволяет устранить этот недостаток.
Для этого нужно:
1. В файл /netcat/modules/default/function.inc.php добавить содержимое прилагаемого файла welpis_autoreg.inc (в нем содержится функция создания аккаунта на основе емайл, а также функция генерации паролей).
2. Идем в форму добавления заказа Вашего интернет-магазина (не имеет значения, стандартный компонент "интернет-магазин" это, или "минимагазин"), и в ней в самом начале прописываем примерно следующее:
Код:
";
if( isset($_POST['n2cr']) && $_POST['n2cr']==1 && isset($_POST['newemail']) ) {
if(strpos($_POST['newemail'],'@')===false || strlen($_POST['newemail'])<4 || !preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", $_POST['newemail']))
{
$result .= "<p style='color:red;'><b>Ошибка! Неправильно указан E-mail.</b></p>";
} else { // если правильный емайл START
$uid=intval($db->get_var("select User_ID from User where Email='".mysql_real_escape_string($newemail)."' limit 1"));
if(!$uid) {
$newuid=welpis_newemailaccount($_POST['newemail']); // создаем аккаунт, отправляем письмо юзеру
if($newuid) { // если аккаунт создался - авторизуем
Authorize($newuid);
}
else {
echo "<p style='color:red;'>Ошибка регистрации!</p>";
}
}
else {
echo "<p style='color:red;'>Такой пользователь уже существует! Если это ваш e-mail, и вы не знаете свой пароль, то воспользуйтесь ссылкой восстановления пароля.</p>";
}
} // если правильный емайл END
}
$addForm .= "
<!-- здесь выводим стандартную неткатовскую форму авторизации в случае, если у пользователя уже есть логин, а если пользователь нажимает вариант, что он в магазине впервые, тогда ему выводится такая форма регистрации новичка: -->
<!-- форму регистрации новичка выводим только если юзер не авторизован: -->
".(!$current_user['User_ID']?"
<form action='' method='post' onsubmit='if(newemail.value==\"\") {alert(\"Укажите ваш электронный адрес!\");return false;}'>
Ваш e-mail: <input type='text' name='newemail' /><br />
<span style='font-size:9px;'>На указанный адрес будет выслан логин и пароль для осуществления покупок в нашем интернет-магазине.</span><br />
<input type='hidden' name='n2cr' value='1' />
<button type='submit'>Авторизоваться</button>
</form>
":NULL)."
Комментарии 6
+ текстовый ID/логин менять внутри профиля.
Общая схема такая:
1. Помимо логина добавляете в тег <form> еще другие нужные вам поля
2. В функцию welpis_newemailaccount передавайте значения этих полей и в самой функции сделайте обработку этих переменных, чтобы они должным образом экранировались и записывались в таблицу User.
3. В этой же функции найти строчку:
[CODE]$db->query("insert into User_Group set User_ID='$newUserID',PermissionGroup_ID=2");
[/CODE]
и продублировать эту строчку для всех других групп, указывая вместо двойки другое число (номер группы, в которую нужно включить человека). Если хотите включать в разные группы в зависимости от того, что введено в форме - анализируйте нужные вам переменные из формы и делайте нужный вам insert в зависимости от этого параметра.