[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с активацией пользователей
Страницы: 1, 2
lansdorf
Здравствуйте!

Данный вопрос здесь уже поднимался, но так как автор темы видимо не сформулировал правильно суть проблемы, то его отправили учить web программирование и он оттуда не вернулся. Поэтому решение данной проблемы осталось неизвестно. Файлы там тоже приложены.

Я тоже столкнулся с данным скриптом и зашел в тупик, хочу с вами попробовать найти решение проблемы активации пользователей по ссылке, высылаемой на электронный адрес пользователя для подтверждения его регистрации, и может быть данный пример будет другим наукой.

Напомню, что пользователю после регистрации в браузерной игре высылается :

Подтвердить e-mail адрес : ".$con[3]."/activate.php?
code=".md5($_POST['r_login'].$_POST['r_pass'].date("z"))."


данный хеш сходится с $_GET['code'], котрый участвует в запросе

$user_sql_query = mysql_query("SELECT id FROM users WHERE check_mail = '0' and MD5(CONCAT(login,pass,'".date("z")."'))= '".$_GET['code']."' limit 0, 1", $full_base); файла активации.

В таблице user точно присутствует user с атрибутом check_mail равным нулю, но почему то результат этого запроса всегда равен одному и тому же значению, а именно Resource #id всегда одно и тоже, хотя у пользователя атрибут id в таблице users давно совсем другой.

Видимо поэтому выражение mysql_num_rows($user_sql_query) никогда не равно единице. И активация пользователя не происходит.

Даже подставляя правильное значение id прямо в запрос:

mysql_query("UPDATE users SET check_mail=1 WHERE id = '".$user_array['id']."'", $full_base); данные в таблице users не обновляются и регистрация остается не подтвержденной.

Что вы думаете по данному примеру, в чем тут может быть проблема, ведь никаких сообщений об ошибках в процессе работы не выводится.
Игорь_Vasinsky
Цитата
всегда равен одному и тому же значению, а именно Resource #id

круто. а вы что там рассчитывали увидеть?

в мануале так и написано
Цитата
mysql_query() возвращает дескриптор результата запроса (resource), или FALSE в случае ошибки.


Цитата
Видимо поэтому выражение mysql_num_rows($user_sql_query) никогда не равно единице.

если запрос верный и запись найдена - то будет, с чего вы взяли то что нет?

Цитата
Даже подставляя правильное значение id прямо в запрос:


а это как получено?

Цитата
$user_array['id']



вообще - если всё кажеться странным и не справедливым - по какой то причине - всегда помогает бутылка водки распечатка SQL запроса, что бы не казалось и не придвиделось - это проверяется

$sql = "SELECT id FROM users WHERE check_mail = '0' and MD5(CONCAT(login,pass,'".date("z")."'))= '".$_GET['code']."' limit 0, 1";

exit($sql);


и так далее - пока остаются подозрительно не работающие запросы в коде.

так же на вермя отладки - помогает отлов ошибок

$query = mysql_query($sql) or die(mysql_error());


Цитата
Что вы думаете по данному примеру, в чем тут может быть проблема,

так дело в руках и голове в 99% случаях.

Цитата
ведь никаких сообщений об ошибках в процессе работы не выводится.

ошибки тоже не всегда показывают себя. как ловить ошибки при работе с бд - я показал выше
а вообще - если дебажите код - то не ленитесь начинать его с

<?php
ini_set("display_errors", 1);
error_reporting(-1);


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.