Следите за нами!
1. Сначала исправим JS код:
1) Открываем template/js/sections/user/signup.js
2) Ищем строчки 19-28:
```
if(i == 's')
bootbox.dialog('<h3 class="green">Внимание</h3>'+val,
[{
"label" : "Продолжить",
callback: function()
{
location.href="http://"+data['mail'];
}
}]
);
```
3) Меняем ```location.href="http://"+data['mail'];``` на ```callback : function(){location.reload()}```;
4) Сохраняем и закрываем. JS мы исправили.
2. Теперь исправим PHP код:
1) Открываем system/sections/user/signup.php
2) Удаляем строчки 12-24:
```
$aData = array();
// Сбор данных из $_POST в $aData
if(isset($_POST['mail']))
{
foreach($aSignup['input'] as $name => $add)
{
if(!$add)
continue;
$aData[$name] = isset($_POST[$name]) ? trim($_POST[$name]) : '';
}
}
```
3) Ищем строчку 24-26:
```
// Проверка капчи
if(!isset($_POST['captcha']) || sys::captcha_check('signup', $uip, $_POST['captcha']))
sys::outjs(array('e' => sys::text('other', 'captcha')), $nmch);
```
4) После строчки из 3 пункта добавляем следуйщий код:
```
$aData = array();
$aData['login'] = isset($_POST['login']) ? trim($_POST['login']) : '';
$aData['mail'] = isset($_POST['mail']) ? trim($_POST['mail']) : '';
$aData['phone'] = isset($_POST['phone']) ? trim($_POST['phone']) : '';
$aData['contacts'] = isset($_POST['contacts']) ? trim($_POST['contacts']) : '';
$aData['passwd'] = isset($_POST['passwd']) ? trim($_POST['passwd']) : '';
$aData['name'] = isset($_POST['name']) ? trim($_POST['name']) : '';
$aData['lastname'] = isset($_POST['lastname']) ? trim($_POST['lastname']) : '';
$aData['patronymic'] = isset($_POST['patronymic']) ? trim($_POST['patronymic']) : '';
```
5) Удаляем 38-48:
```
// Проверка входных данных
foreach($aData as $input => $val)
{
// Если не заполнено поле
if($val == '')
sys::outjs(array('e' => sys::text('input', 'all')), $nmch);
// Проверка данных на валидность
if(sys::valid($val, 'other', $aValid[$input]))
sys::outjs(array('e' => sys::text('input', $input.'_valid')), $nmch);
}
```
6) На место кода из 5-го пункта добавляем:
```
if(in_array('', $aData))
sys::outjs(array('e' => 'Необходимо заполнить все поля'));
```
7) Удаляем 73-108:
```
// Проверка почты на подачу регистрации
$sql->query('SELECT `id`, `key` FROM `signup` WHERE `mail`="'.$aData['mail'].'" LIMIT 1');
if($sql->num())
{
$signup = $sql->get();
$sql->query('UPDATE `signup` set `date`="'.$start_point.'" WHERE `id`="'.$signup['id'].'" LIMIT 1');
// Повторная отправка письма на почту
sys::mail(
'Регистрация',
sys::updtext(
sys::text('mail', 'signup'),
array(
'site' => $cfg['name'],
'url' => $cfg['http'].'user/section/signup/confirm/'.$signup['key']
)
),
$aData['mail']
);
sys::outjs(array('s' => sys::text('output', 'remail'), 'mail' => sys::mail_domain($aData['mail'])), $nmch);
}
// Генерация ключа
$key = sys::key('signup_'.$uip);
$data = sys::b64js($aData);
// Запись данных в базу
$sql->query('INSERT INTO `signup` set `mail`="'.$aData['mail'].'", `key`="'.$key.'", `data`="'.$data.'", `date`="'.$start_point.'"');
// Отправка сообщения на почту
if(sys::mail('Регистрация', sys::updtext(sys::text('mail', 'signup'), array('site' => $cfg['name'], 'url' => $cfg['http'].'user/section/signup/confirm/'.$key)), $aData['mail']))
sys::outjs(array('s' => sys::text('output', 'mail'), 'mail' => sys::mail_domain($aData['mail'])), $nmch);
// Выхлоп: не удалось отправить письмо
sys::outjs(array('e' => sys::text('error', 'mail')), $nmch);
```
8) На место кода из 7-го пункта добавляем:
```
// Реферал
if(isset($_COOKIE['part']))
$part = ', `part`="'.sys::int($_COOKIE['part']).'"';
// Запись данных в базу
$sql->query('INSERT INTO `users` set '
.'`login`="'.$aData['login'].'",'
.'`passwd`="'.sys::passwdkey($aData['passwd']).'",'
.'`mail`="'.$aData['mail'].'",'
.'`name`="'.$aData['name'].'",'
.'`lastname`="'.$aData['lastname'].'",'
.'`patronymic`="'.$aData['patronymic'].'",'
.'`phone`="'.$aData['phone'].'",'
.'`contacts`="'.$aData['contacts'].'",'
.'`balance`="0", `group`="user", `date`="'.$start_point.'"'.$part);
sys::outjs(array('s' => 'ok'));
```
9) Удаляем 92-155:
```
// Завершение регистрации
if(isset($url['confirm']) && !sys::valid($url['confirm'], 'md5'))
{
$sql->query('SELECT `id`, `data` FROM `signup` WHERE `key`="'.$url['confirm'].'" LIMIT 1');
if($sql->num())
{
$signup = $sql->get();
$aData = sys::b64djs($signup['data']);
foreach($aSignup['input'] as $name => $add)
$aNData[$name] = isset($aData[$name]) ? $aData[$name] : '';
unset($aData);
// Если регистрация без указания логина
if(empty($aNData['login']))
{
$lchar = false;
while(1)
{
$aNData['login'] = sys::login($aNData['mail'], $lchar);
$sql->query('SELECT `id` FROM `users` WHERE `login`="'.$aNData['login'].'" LIMIT 1');
if(!$sql->num())
break;
$lchar = true;
}
}
// Если регистрация без указания пароля
if(empty($aNData['passwd']))
$aNData['passwd'] = sys::passwd(10);
// Реферал
if(isset($_COOKIE['part']))
$part = ', `part`="'.sys::int($_COOKIE['part']).'"';
// Запись данных в базу
$sql->query('INSERT INTO `users` set '
.'`login`="'.$aNData['login'].'",'
.'`passwd`="'.sys::passwdkey($aNData['passwd']).'",'
.'`mail`="'.$aNData['mail'].'",'
.'`name`="'.$aNData['name'].'",'
.'`lastname`="'.$aNData['lastname'].'",'
.'`patronymic`="'.$aNData['patronymic'].'",'
.'`phone`="'.$aNData['phone'].'",'
.'`contacts`="'.$aNData['contacts'].'",'
.'`balance`="0", `group`="user", `date`="'.$start_point.'"'.$part);
$sql->query('DELETE FROM `signup` WHERE `id`="'.$signup['id'].'" LIMIT 1');
// Отправка сообщения на почту
if(sys::mail('Завершение регистрации', sys::updtext(sys::text('mail', 'signup_end'), array('site' => $cfg['name'], 'login' => $aNData['login'], 'passwd' => $aNData['passwd'])), $aNData['mail']))
sys::outhtml(sys::text('output', 'signup'), 5, 'http://'.sys::mail_domain($aNData['mail']));
// Выхлоп: не удалось отправить письмо
sys::outjs(array('e' => sys::text('error', 'mail')), $nmch);
}
sys::outhtml(sys::text('error', 'signup'), 5);
}
```
10) Сохраняем и закрываем. PHP мы исправили.
Нет комментариев.Оставишь комментарий?
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.