За последние 24 часа нас посетили 17547 программистов и 1712 роботов. Сейчас ищут 1883 программиста ...

Помогите

Тема в разделе "Работа с почтой", создана пользователем Andron227, 11 фев 2016.

  1. Andron227

    Andron227 Новичок

    С нами с:
    11 фев 2016
    Сообщения:
    2
    Симпатии:
    0
    Всем привет. При переходе по ссылке которая приходит на почту у некоторых людей все проходит нормально и "active" спокойно записывается в базу данных.А у других выбивает ошибку "Ошибка: аккаунт пользователя (ник) не подтвержден..." и "active" не меняется в бд.В чем может быть проблема??? Вот сам код:
    Код (PHP):
    1. <?php 
    2.  
    3. ULogin (0);
    4.  
    5. if ($Module == 'register' and $_POST['enter']) {
    6. $_POST['login'] = FormChars($_POST['login']);
    7. $_POST['email'] = FormChars($_POST['email']);
    8. $_POST['password'] = GenPass(FormChars($_POST['password']), $_POST['login']);
    9. $_POST['name'] = FormChars($_POST['name']);
    10. $_POST['country'] = FormChars($_POST['country']);
    11. $_POST['captcha'] = FormChars($_POST['captcha']);
    12. if (!$_POST['login'] or !$_POST['email'] or !$_POST['password'] or !$_POST['name'] or $_POST['country'] > 4 or !$_POST['captcha']) MassageSend(1, 'Невозможно обработать форму.');
    13. if ($_SESSION['captcha'] != md5($_POST['captcha'])) MassageSend(1, 'Капча введена не верно.');
    14. $Row = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT `login` FROM `users` WHERE `login` = '$_POST[login]'"));
    15. if ($Row['login']) exit('Логин <b>'.$_POST['login'].'</b> уже используеться.');
    16. $Row = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT `email` FROM `users` WHERE `email` = '$_POST[email]'"));
    17. if ($Row['email']) exit('E-Mail <b>'.$_POST['email'].'</b> уже используеться.');
    18. mysqli_query($CONNECT, "INSERT INTO `users`  VALUES ('', '$_POST[login]', '$_POST[password]', '$_POST[name]', NOW(), '$_POST[email]', $_POST[country], 0, 0)");
    19.  
    20. $Code = substr(base64_encode($_POST['email']), 0, -1);
    21. mail($_POST['email'], 'Регистрация на сайте ', 'Ссылка для активации: http://сайт/account/activate/code/'.substr($Code, -5).substr($Code, 0, -5), '    account@asper.16mb.com');
    22. MassageSend(3, 'Регистрация акаунта успешно завершена. На указанный E-mail адрес <b>'.$_POST['email'].'</b> отправленно письмо о подтверждении регистрации.');
    23. }
    24.  
    25.  
    26. else if ($Module == 'activate' and $Param['code']) {
    27. if (!$_SESSION['USER_ACTIVE_EMAIL']) {
    28. $Email = base64_decode(substr($Param['code'], 5).substr($Param['code'], 0, 5));
    29. if (strpos($Email, '@') !== false) {
    30. mysqli_query($CONNECT, "UPDATE `users`  SET `active` = 1 WHERE `email` = '$Email'");
    31. $_SESSION['USER_ACTIVE_EMAIL'] = $Email;
    32. MassageSend(3, 'E-mail <b>'.$Email.'</b> подтвержден.', '/login');
    33. }
    34. else MassageSend(1, 'E-mail адрес не подтвержден.', '/login');
    35. }
    36. else MassageSend(1, 'E-mail адрес <b>'.$_SESSION['USER_ACTIVE_EMAIL'].'</b> уже подтвержден.', '/login');
    37. }
    38.  
    39.  
    40.  
    41. else if ($Module == 'login' and $_POST['enter']) {
    42.     
    43.     $_POST['login'] = FormChars($_POST['login']);
    44.     $_POST['password'] = GenPass(FormChars($_POST['password']), $_POST['login']);
    45.     $_POST['captcha'] =FormChars($_POST['captcha']);
    46.     if(!$_POST['login'] or !$_POST['password'] or !$_POST['captcha']) MassageSend (1, 'Невозможно обработать форму.');
    47.     if ($_SESSION['captcha'] != md5($_POST['captcha'])) MassageSend(1, 'Капча введена не верно.');
    48.     $Row = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT `password`, `active` FROM `users` WHERE `login` = '$_POST[login]'"));
    49.     if($Row['password'] != $_POST['password']) MassageSend (1, 'не верный логин или пароль.');
    50.     if ($Row['active']==0) MassageSend(1,'аккаунт пользователся <b>'.$_POST['login'].'</b> не пожтвержден...' );
    51.     $Row = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT `id`, `name` , `regdate`, `email`, `country`, `avatar`  FROM `users` WHERE `login` = '$_POST[login]'"));
    52.     $_SESSION['USER_ID'] = $Row['id'];
    53.     $_SESSION['USER_NAME'] = $Row['name'];
    54.     $_SESSION['USER_REGDATE'] = $Row['regdate'];
    55.     $_SESSION['USER_EMAIL'] = $Row['email'];
    56.     $_SESSION['USER_COUNTRY'] = $Row['country'];
    57.     $_SESSION['USER_AVATAR'] = $Row['avatar'];
    58.     $_SESSION['USER_LOGIN_IN'] = 1;
    59. exit(header('Location: /profile'));
    60. }
    61. ?>
     
  2. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    мда, ну и месиво.
     
  3. Andron227

    Andron227 Новичок

    С нами с:
    11 фев 2016
    Сообщения:
    2
    Симпатии:
    0
    Каждый обработчик написать в отдельном файле?
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    очень плохо делать такой алгоритм подтверждения, который позволяет подтвердить любой имеил без доступа к этому ящику =)

    Так что один хуй этот алгоритм на помойку, и всё надо переделать. Вперёд.