Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Проблема с активацией пользователей, Не могу найти ошибку в скрипте активации
lansdorf  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 13
Пользователь №: 42870
На форуме: 1 год, 3 месяца, 4 дня
Карма:




Здравствуйте!

Данный вопрос здесь уже поднимался, но так как автор темы видимо не сформулировал правильно суть проблемы, то его отправили учить 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 не обновляются и регистрация остается не подтвержденной.

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

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  activate.php
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26440
Пользователь №: 21350
На форуме: 7 лет, 4 месяца, 10 дней
Карма: 739




Цитата
всегда равен одному и тому же значению, а именно 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 (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26440
Пользователь №: 21350
На форуме: 7 лет, 4 месяца, 10 дней
Карма: 739




Цитата
Данный вопрос здесь уже поднимался, но так как автор темы видимо не сформулировал правильно суть проблемы


топик 2014 года рождения))))
антиквариат собираете?


date("z")


ссылка для активации будет корректна тока на текущей день.


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
lansdorf  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 13
Пользователь №: 42870
На форуме: 1 год, 3 месяца, 4 дня
Карма:




Цитата
всегда равен одному и тому же значению, а именно Resource #id

Здесь я расчитывал увидеть значение id пользователя, который еще не активирован, тем более что он всего один.

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

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

А т.к. пользователь всего один, то его id я вижу в таблице.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26440
Пользователь №: 21350
На форуме: 7 лет, 4 месяца, 10 дней
Карма: 739




lansdorf

У вас с рождения такой подход к ответу на вопросы? :lol:

смотрите логику получения данных из бд

//Формируем запрос
$sql = "select * from table";
//Отправили запрос в бд
$result = mysql_query($sql);
//если найдены строки, т.е. в ответе строк > 0
if(mysql_num_rows($result)>0){
//разбираем каждую строку в ассоциативный массив
while($row = mysql_fetch_assoc($result)){
//тут все поля из таблицы - которые вы в select прописали
echo $row['id'];
}
}

else{
echo 'Записей не найдено!';
}



вы запросы выводили сами? как они выглядят?
ошибки ловили - как я показал?


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
lansdorf  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 13
Пользователь №: 42870
На форуме: 1 год, 3 месяца, 4 дня
Карма:




Игорь_Vasinsky

Спасибо за участие и совет, все рецепты прописал.

Но ошибки так и не выводятся, как будто их нет.

Запрос на обновление данных срабатывает пока только когда вводится вручную в phpMyAdmin.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1607
Пользователь №: 28976
На форуме: 5 лет, 11 месяцев, 26 дней
Карма: 101




lansdorf
ini_set("display_errors",1);
error_reporting(E_ALL);
в самое начало скрипта, для вывода всех ошибок
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
lansdorf  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 13
Пользователь №: 42870
На форуме: 1 год, 3 месяца, 4 дня
Карма:




Запросы выводил сам.

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

mysql_num_rows($sql)=0, хотя в таблице есть строка, соответствующая условиям запроса.

Поэтому $row['id'] не выводит.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26440
Пользователь №: 21350
На форуме: 7 лет, 4 месяца, 10 дней
Карма: 739




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

ну чё ты даже не покажешь что в итоге из этого получается - то что ты в PMA суёшь.. эх.


выполни запрос в PMA

SELECT id FROM users WHERE check_mail = '0' and MD5(CONCAT(login,pass,'".date("z")."'))


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1607
Пользователь №: 28976
На форуме: 5 лет, 11 месяцев, 26 дней
Карма: 101




lansdorf
$code = mysql_real_escape_string($_GET['code']);
$sql="
SELECT
id
FROM
`users`
WHERE
`check_mail` = '0' AND
MD5(CONCAT(login,pass,'"
.date("z")."'))= '$code'
LIMIT
0, 1
"
;
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
echo 'Найдено '.mysql_num_rows($result).' строк';
} else {
echo 'Ничего не найдено';
}
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
lansdorf  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 13
Пользователь №: 42870
На форуме: 1 год, 3 месяца, 4 дня
Карма:




Kusss

Цитата (lansdorf @ 20.04.2016 - 13:39)
ini_set("display_errors",1);
error_reporting(E_ALL);


Да вставил. Один раз сообщило, насчет $date=date("d.m.y"); и все.

Буду искать.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1607
Пользователь №: 28976
На форуме: 5 лет, 11 месяцев, 26 дней
Карма: 101




покажи весь код, а не куски. может ты там "собак" напихал
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
lansdorf  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 13
Пользователь №: 42870
На форуме: 1 год, 3 месяца, 4 дня
Карма:




Извиняюсь, за задержку.

Цитата (Игорь_Vasinsky @ 20.04.2016 - 14:53)
выполни запрос в PMA

SELECT id FROM users WHERE check_mail = '0' and MD5(CONCAT(login,pass,'".date("z")."'))


Прикладываю картинку запроса .

PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
lansdorf  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 13
Пользователь №: 42870
На форуме: 1 год, 3 месяца, 4 дня
Карма:




Что то картинка исчезла. Сейчас исправлю.

Присоединённое изображение
Присоединённое изображение
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
lansdorf  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 13
Пользователь №: 42870
На форуме: 1 год, 3 месяца, 4 дня
Карма:




И вот картинка самой таблицы users, где видна строка с пользователем.

Присоединённое изображение
Присоединённое изображение
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса