Всем привет. При переходе по ссылке которая приходит на почту у некоторых людей все проходит нормально и "active" спокойно записывается в базу данных.А у других выбивает ошибку "Ошибка: аккаунт пользователя (ник) не подтвержден..." и "active" не меняется в бд.В чем может быть проблема??? Вот сам код: Код (PHP): <?php ULogin (0); if ($Module == 'register' and $_POST['enter']) { $_POST['login'] = FormChars($_POST['login']); $_POST['email'] = FormChars($_POST['email']); $_POST['password'] = GenPass(FormChars($_POST['password']), $_POST['login']); $_POST['name'] = FormChars($_POST['name']); $_POST['country'] = FormChars($_POST['country']); $_POST['captcha'] = FormChars($_POST['captcha']); if (!$_POST['login'] or !$_POST['email'] or !$_POST['password'] or !$_POST['name'] or $_POST['country'] > 4 or !$_POST['captcha']) MassageSend(1, 'Невозможно обработать форму.'); if ($_SESSION['captcha'] != md5($_POST['captcha'])) MassageSend(1, 'Капча введена не верно.'); $Row = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT `login` FROM `users` WHERE `login` = '$_POST[login]'")); if ($Row['login']) exit('Логин <b>'.$_POST['login'].'</b> уже используеться.'); $Row = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT `email` FROM `users` WHERE `email` = '$_POST[email]'")); if ($Row['email']) exit('E-Mail <b>'.$_POST['email'].'</b> уже используеться.'); mysqli_query($CONNECT, "INSERT INTO `users` VALUES ('', '$_POST[login]', '$_POST[password]', '$_POST[name]', NOW(), '$_POST[email]', $_POST[country], 0, 0)"); $Code = substr(base64_encode($_POST['email']), 0, -1); mail($_POST['email'], 'Регистрация на сайте ', 'Ссылка для активации: http://сайт/account/activate/code/'.substr($Code, -5).substr($Code, 0, -5), ' account@asper.16mb.com'); MassageSend(3, 'Регистрация акаунта успешно завершена. На указанный E-mail адрес <b>'.$_POST['email'].'</b> отправленно письмо о подтверждении регистрации.'); } else if ($Module == 'activate' and $Param['code']) { if (!$_SESSION['USER_ACTIVE_EMAIL']) { $Email = base64_decode(substr($Param['code'], 5).substr($Param['code'], 0, 5)); if (strpos($Email, '@') !== false) { mysqli_query($CONNECT, "UPDATE `users` SET `active` = 1 WHERE `email` = '$Email'"); $_SESSION['USER_ACTIVE_EMAIL'] = $Email; MassageSend(3, 'E-mail <b>'.$Email.'</b> подтвержден.', '/login'); } else MassageSend(1, 'E-mail адрес не подтвержден.', '/login'); } else MassageSend(1, 'E-mail адрес <b>'.$_SESSION['USER_ACTIVE_EMAIL'].'</b> уже подтвержден.', '/login'); } else if ($Module == 'login' and $_POST['enter']) { $_POST['login'] = FormChars($_POST['login']); $_POST['password'] = GenPass(FormChars($_POST['password']), $_POST['login']); $_POST['captcha'] =FormChars($_POST['captcha']); if(!$_POST['login'] or !$_POST['password'] or !$_POST['captcha']) MassageSend (1, 'Невозможно обработать форму.'); if ($_SESSION['captcha'] != md5($_POST['captcha'])) MassageSend(1, 'Капча введена не верно.'); $Row = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT `password`, `active` FROM `users` WHERE `login` = '$_POST[login]'")); if($Row['password'] != $_POST['password']) MassageSend (1, 'не верный логин или пароль.'); if ($Row['active']==0) MassageSend(1,'аккаунт пользователся <b>'.$_POST['login'].'</b> не пожтвержден...' ); $Row = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT `id`, `name` , `regdate`, `email`, `country`, `avatar` FROM `users` WHERE `login` = '$_POST[login]'")); $_SESSION['USER_ID'] = $Row['id']; $_SESSION['USER_NAME'] = $Row['name']; $_SESSION['USER_REGDATE'] = $Row['regdate']; $_SESSION['USER_EMAIL'] = $Row['email']; $_SESSION['USER_COUNTRY'] = $Row['country']; $_SESSION['USER_AVATAR'] = $Row['avatar']; $_SESSION['USER_LOGIN_IN'] = 1; exit(header('Location: /profile')); } ?>
очень плохо делать такой алгоритм подтверждения, который позволяет подтвердить любой имеил без доступа к этому ящику =) Так что один хуй этот алгоритм на помойку, и всё надо переделать. Вперёд.