Файл: _scripts/user/phone.php
Строк: 164
<?
include_once '../sys/inc/start.php';
include_once '../sys/inc/compress.php';
include_once '../sys/inc/sess.php';
include_once '../sys/inc/home.php';
include_once '../sys/inc/settings.php';
include_once '../sys/inc/db_connect.php';
include_once '../sys/inc/ipua.php';
include_once '../sys/inc/fnc.php';
include_once '../sys/inc/user.php';
only_reg();
include_once '../sys/inc/shif.php';
$_SESSION['phone'] = null;
if (isset($_GET['smena']))
$_SESSION['smena'] = true;
if (isset($_GET['smena']) && $_GET['smena'] == 1)
$_SESSION['smena'] = null;
// Класс обработчика
include_once H.'sys/inc/smsc_api.php';
// Уведомление
if ($set['smsc_no_balans'] >= abs(intval(get_balance())) && $set['smsc_no_balans_time'] < time() - 60*60*24)
{
// отправка сообщения
$msgg = "Здравствуйте, на вашем аккаунте [b]Smsc.Ru[/b] денежных средств осталось: [b]" . abs(get_balance()) . "[/b] единиц.";
mysql_query("INSERT INTO `mail` (`id_user`, `id_kont`, `msg`, `time`) values('0', '1', '".my_esc($msgg)."', '$time')");
$temp_set = $set;
$temp_set['smsc_no_balans_time'] = time();
@save_settings($temp_set);
}
// Отправка пароля
if (isset($_POST["phone"]) && !isset($_POST["mypass"]) && $set['smsc_on'] == 1)
{
// Номер телефона
$phone = abs($_POST["phone"]);
$_SESSION['phone'] = $phone;
if (!preg_match('/^+?([87](?!95[4-79]|99[^2457]|907|94[^0]|336|986)([348]d|9[0-689]|7[0247])d{8}|[1246]d{9,13}|68d{7}|5[1-46-9]d{8,12}|55[1-9]d{9}|55119d{8}|500[56]d{4}|5016d{6}|5068d{7}|502[45]d{7}|5037d{7}|50[457]d{8}|50855d{4}|509[34]d{7}|376d{6}|855d{8}|856d{10}|85[0-4789]d{8,10}|8[68]d{10,11}|8[14]d{10}|82d{9,10}|852d{8}|90d{10}|96(0[79]|17[01]|13)d{6}|96[23]d{9}|964d{10}|96(5[69]|89)d{7}|96(65|77)d{8}|92[023]d{9}|91[1879]d{9}|9[34]7d{8}|959d{7}|989d{9}|97d{8,12}|99[^4568]d{7,11}|994d{9}|9955d{8}|996[57]d{8}|9989d{8}|380[34569]d{8}|381d{9}|385d{8,9}|375[234]d{8}|372d{7,8}|37[0-4]d{8}|37[6-9]d{7,11}|30[69]d{9}|34[67]d{8}|3[12359]d{8,12}|36d{9}|38[1679]d{8}|382d{8,9})$/', $phone) || !is_numeric($phone))
$err = 'Неверный формат номера';
$pass = mt_rand(1111, 9999);
$pass_link = shif($user['pass'] . $phone);
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `phone` = '".$phone."' AND `id` != '$user[id]'"),0) != 0)
$err[] = 'Пользователь с этим номером уже зарегистрирован';
if (isset($_SESSION['flood']) && $_SESSION['flood'] > time() - 300)
$err[] = 'Cлишком частые попытки';
// Отправляем сообщение
if (!$err)
{
$r = send_sms($phone, "Kod: $pass");
if ($r[1] > 0)
{
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user_reg` WHERE `id_user` = '$user[id]'"),0) == 1)
{
// Записываем в логи
$log = ' Изменение номера ';
mysql_query("INSERT INTO `user_reg_log` (`time`, `id_user`, `phone`, `msg`, `ip`, `ip_cl`, `ip_xff`, `ua`)
VALUES ('$time', '$user[id]', '$phone', '$log', '".ip2long($ip2['add'])."', '".ip2long($ip2['cl'])."', '".ip2long($ip2['xff'])."', '".my_esc($ua)."')");
mysql_query("DELETE FROM `user_reg` WHERE `id_user` = '$user[id]'");
mysql_query("INSERT INTO `user_reg` (`time`, `id_user`, `phone`, `pass`, `show_pass`, `aut`) VALUES
('$time', '$user[id]', '$phone', '".shif($pass)."', '".$pass."', '$pass_link')");
}
else
{
mysql_query("INSERT INTO `user_reg` (`time`, `id_user`, `phone`, `pass`, `show_pass`, `aut`) VALUES
('$time', '$user[id]', '$phone', '".shif($pass)."', '".$pass."', '$pass_link')");
// Записываем в логи
$log = ' Подтверждение номера ';
mysql_query("INSERT INTO `user_reg_log` (`time`, `id_user`, `phone`, `msg`, `ip`, `ip_cl`, `ip_xff`, `ua`)
VALUES ('$time', '$user[id]', '$phone', '$log', '".ip2long($ip2['add'])."', '".ip2long($ip2['cl'])."', '".ip2long($ip2['xff'])."', '".my_esc($ua)."')");
}
$_SESSION['flood'] = time();
setcookie('phone', $phone, time()+60*60*24*365);
$_SESSION['message'] = 'Код успешно отправлен';
header('Location: ?enter');
exit;
}
}
}
// Подтверждаем
if (isset($_GET['enter']))
{
// Чистим куки
if ($_GET['enter'] == 1)
$_COOKIE['phone'] = null;
if (isset($_POST['password']) && isset($_POST['mypass']))
{
if (shif($_POST['mypass']) != $user['pass'])
$err[] = 'Неверный пароль';
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user_reg` WHERE `pass` = '".shif(my_esc($_POST['password']))."' AND (`id_user` = '0' OR `id_user` = '$user[id]')"),0) == 0)
$err[] = 'Неверный код подтверждения';
if (!$err)
{
$user_tmp = mysql_fetch_assoc(mysql_query("SELECT * FROM `user_reg` WHERE `pass` = '".shif(my_esc($_POST['password']))."' AND (`id_user` = '0' OR `id_user` = '$user[id]') LIMIT 1"));
$mypass = esc($_POST['mypass']);
mysql_query("UPDATE `user` SET `phone` = '$user_tmp[phone]' WHERE `id` = '$user[id]' LIMIT 1");
$pass = esc($_POST['password']);
// Запись для автовхода
mysql_query("UPDATE `user_reg` SET `pass` = '".shif($mypass)."', `aut` = '".shif($mypass . $user_tmp['phone'])."', `show_pass` = '".$mypass."' WHERE `phone` = '".$user_tmp['phone']."' LIMIT 1");
// отправка сообщения
$msgg = "Уважаемый ".user::nick($user['id'], 0).", вы успешно ".($user_tmp['id_user'] == 0 ? "подтвердили" : "изменили")." свой номер мобильного телефона! :)";
mysql_query("INSERT INTO `mail` (`id_user`, `id_kont`, `msg`, `time`) values('0', '$user[id]', '".my_esc($msgg)."', '$time')");
$_SESSION['smena'] = null;
setcookie('phone', null, time());
header('Location: ?enter');
exit;
}
}
}
$set['title'] = 'Подтверждение номера телефона'; // заголовок страницы
include_once '../sys/inc/thead.php';
title();
aut();
err();
echo '<div class="foot">';
echo '<img src="/style/icons/str2.gif" alt="*" /> <a href="/id' . $user['id'] . '">' . user::nick($user['id']) . '</a> | <b>Номер мобильного</b>';
echo '</div>';
if (isset($_GET['enter']))
{
echo '<div class="mess">';
echo 'Уважаемый '.user::nick($user['id'], 0).', вы успешно подтвердили свой номер мобильного телефона!<br />';
echo '</div>';
}
else
{
if (!isset($user['phone']) || isset($_SESSION['smena']))
{
echo '<div class="mess">';
if ($set['smsc_all'])
{
echo 'Вам необходимо указать номер своего мобильного телефона.<br />';
}
echo 'Подтвердите номер своего мобильного телефона, и станьте полноценным обитателем ' . text($_SERVER['HTTP_HOST']);
echo '</div>';
}
}
echo '<div class="nav2">';
if (!isset($user['phone']) || isset($_SESSION['smena']))
{
if (!isset($_COOKIE['phone']))
{
?>
Ваш номер:<br />
<form action="?" method="POST">
<input type="text" name="phone" size="12" value="<?=$_SESSION['phone']?>"><br />
<span style="color:gray">(Например, 79110123456)</span><br /><br />
<input type="submit" value="Продолжить" name="sendsms"/>
</form>
<?
if (isset($_SESSION['smena']))
echo '<br /><a href="?smena=1">Не изменять</a>';
}
else
{
?>
<form method="post" action="?enter">
На ваш номер <span style="color:green"><b><?=abs($_COOKIE['phone'])?></b></span> отправлен код для подтверждения.<br/><br/>
Введите код здесь:<br />
<input name="password" size="6" maxlength="4" type="text" value=""><br/>
Текущий пароль:<br />
<input name="mypass" size="12" maxlength="20" type="text" value=""><br/>
<input type="hidden" name="phone" value="<?=abs($_COOKIE['phone'])?>"/>
<input type="submit" value="Сохранить" />
</form>
<div class="mess">
Если СМС не пришло в течение 10 минут, попробуйте <a href="?enter=1"><b>повторить отправку</b></a>.
</div>
<?
}
}
else
{
echo '<img src="/style/icons/ok.gif" /> <b style="color:green">' . $user['phone'] . '</b><br /><a href="?smena">Изменить</a>';
}
echo '</div>';
echo '<div class="foot">';
echo '<img src="/style/icons/str2.gif" alt="*" /> <a href="/id' . $user['id'] . '">' . user::nick($user['id']) . '</a> | <b>Номер мобильного</b>';
echo '</div>';
include_once '../sys/inc/tfoot.php';
?>