Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что я упускаю? 
:(
    Опции темы
Muerto
Дата 22.4.2011, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Есть такой запрос 
Код

SELECT username,hash FROM users WHERE hash != '' and username = 'sanybak'


далее делаю var_dump, выдает:

Код

["hash"]=> string(8) ""


Далее идет проверка

Код

if(!empty($fd['hash']) && $fd['hash']!= '' && $fd['hash']!= null){//уже все наф сюда вбил, а то не догоняю 
    echo $fd['username'] . ' ' . $fd['hash'] . '<br />';
}


И что вы думайте? печатает гада  smile 

У меня уже был такой прикол... в прошлый раз я просто руки поднял... 
но в данный момент меня это уже реально бесит

Я не могу понять, в базе данных

hash varchar(8) 

Как такое возможно? у пользователя sanybak хэш пустой !!!

Это сообщение отредактировал(а) Muerto - 22.4.2011, 11:42


--------------------
user posted image
PM MAIL   Вверх
нуп
Дата 22.4.2011, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: нет
Всего: 33



Попробуйте ещё strlen  smile 
PM MAIL   Вверх
ksnk
Дата 22.4.2011, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Код

if(!empty($fd['hash']) && trim($fd['hash'])!= '') {
...
}

может пробелы?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Muerto
Дата 22.4.2011, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Цитата(нуп @ 22.4.2011,  11:46)
Попробуйте ещё strlen  smile

strlen = 8   smile 
Че за ...

Добавлено через 50 секунд
Код

if(!empty($fd['hash']) && $fd['hash']!= '' && $fd['hash']!= null){
    echo $fd['username'] . ' x' . $fd['hash'] . 'x ' . strlen($fd['hash']) . '<br />';
}


Выдает

Код

sanybak xx 8


Добавлено через 1 минуту и 34 секунды
Кодировка кстати у ячейки utf8_general_ci

Добавлено через 7 минут и 49 секунд
По умолчанию НЕ null , дефалтного значения нету

Добавлено через 9 минут и 15 секунд
Во загадка  smile 


--------------------
user posted image
PM MAIL   Вверх
Muerto
Дата 22.4.2011, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Вот так вроде уже правильней 
Код

WHERE hash > ''





--------------------
user posted image
PM MAIL   Вверх
ksnk
Дата 22.4.2011, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(Muerto @  22.4.2011,  12:06 Найти цитируемый пост)
Вот так вроде уже правильней 

WHERE hash > ''

Ух тыж... а что это за магия? Оно работает?

Может, проще почистить в таблице все пустые хеши?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Muerto
Дата 22.4.2011, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



ksnk, Да вот в гугле нашел  smile 

Работает   smile 

А насчет что там можно почистить подробней...
Но таблицу я создал вчера, там особо чистить нечего  smile 


--------------------
user posted image
PM MAIL   Вверх
ksnk
Дата 22.4.2011, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(Muerto @  22.4.2011,  12:50 Найти цитируемый пост)
Но таблицу я создал вчера

Тогда план таблицы можно посмотреть. Нет ли там дефолтных значений у хеша. В форме ввода можно посмотреть - нет ли там заполнения пробелами неопределенных полей и т.д. С мистикой надо бороться smile
Код

update users set hash=TRIM(hash);



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
lukas
Дата 22.4.2011, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15



Скорее всего там присутствует символ конца строки - #0, и поэтому вы не видите всей строки, а мож и какие другие специфические символы.


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
Muerto
Дата 22.4.2011, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



ksnk, Там формы никакой нету, пользователю высылается хэш после его генерации и записи в базу  smile 


Сделал 

Код

update users set hash=TRIM(hash);


Все равно на запрос

Код

SELECT * FROM `users` WHERE hash != ''

(16,763 всего, запрос занял 0.0011 сек.) в тот час как хэш есть гдет в 300 строк


Возвращает записи с "пустым" ( я уже не уверен что он пуст ) хэшэм 


lukas, 

Возможно, но в phpmyadmin я нифига не вижу  smile 

Это сообщение отредактировал(а) Muerto - 22.4.2011, 14:03


--------------------
user posted image
PM MAIL   Вверх
lukas
Дата 22.4.2011, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15



Цитата(Muerto @  22.4.2011,  13:59 Найти цитируемый пост)
lukas, 

Возможно, но в phpmyadmin я нифига не вижу  smile 


Можешь и не увидеть, попробуй вручную опустошить значение это через phpmyadmin или sql запросом.


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
Muerto
Дата 22.4.2011, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Цитата(lukas @ 22.4.2011,  14:03)
Цитата(Muerto @  22.4.2011,  13:59 Найти цитируемый пост)
lukas, 

Возможно, но в phpmyadmin я нифига не вижу  smile 


Можешь и не увидеть, попробуй вручную опустошить значение это через phpmyadmin или sql запросом.

Хм любопытно
Код

SELECT * FROM `users` WHERE hash = '' and id = 3


Вернул пользователя после того как я просто взял и сохранил запись в phpmyadmin

похоже что там таки что то есть...

Но что? при редактировании я ничего не вижу...

Это же не решение в ручную сохранять каждого пользователя

Это сообщение отредактировал(а) Muerto - 22.4.2011, 14:12


--------------------
user posted image
PM MAIL   Вверх
lukas
Дата 22.4.2011, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15



Цитата(Muerto @  22.4.2011,  14:11 Найти цитируемый пост)
Это же не решение в ручную сохранять каждого пользователя


Возможно база битая, скрипт можно написать который обойдет все записи и пересохранит.

А если интересно что там:

Код

for ($i = 0; $i < strlen($fd["hash"]); $i++){
   echo ord( $fd["hash"][$i] ) . " - ";
}


Выведет аски коды каждого символа.

Это сообщение отредактировал(а) lukas - 22.4.2011, 14:21


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
Muerto
Дата 22.4.2011, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Запрос: "SELECT * FROM users WHERE hash != '' and verifiedEmail = 0 "

Сам цикл:
Код

           echo 'id: ' . $fd['id'] . ' hash: ' . $fd['hash'] . '<br/>';
           echo 'Hash strlen: ' . strlen($fd['hash']) . ' ';
           for ($i = 0; $i < strlen($fd["hash"]); $i++){
              echo ord( $fd["hash"][$i] ) . " - ";
           }
    echo '<br />';    


Результат  smile 
Код

................
id: 1227 hash:
Hash strlen: 8 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 -
id: 1228 hash:
Hash strlen: 8 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 -
id: 1229 hash:
Hash strlen: 8 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 -
id: 1230 hash:
Hash strlen: 8 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 -
id: 1231 hash:
Hash strlen: 8 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 -
id: 1232 hash:
Hash strlen: 8 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 -
id: 1233 hash: jUpIZ2ec
Hash strlen: 8 106 - 85 - 112 - 73 - 90 - 50 - 101 - 99 -
id: 1234 hash:
Hash strlen: 8 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 -
id: 1235 hash:
Hash strlen: 8 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 -
id: 1236 hash:
Hash strlen: 8 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 -
id: 1237 hash:
Hash strlen: 8 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 -
id: 1238 hash:
Hash strlen: 8 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 -
id: 1239 hash:
Hash strlen: 8 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 
.............................


Добавлено через 1 минуту и 55 секунд
Судя по таблицу аськи кодов это означает NUL

Добавлено через 7 минут и 3 секунды
md5 хэш этого пустого чуда длиной в 8 будет 7dea362b3fac8e00956a4952a3d4f474

Добавлено через 8 минут и 19 секунд
Хотя бы терь решение есть, if md5($hash) === '7dea362b3fac8e00956a4952a3d4f474' то пусто  smile 


--------------------
user posted image
PM MAIL   Вверх
lukas
Дата 22.4.2011, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15



Muerto, 

Ну вот, строка состоит из одних нулевых символов, как я и говорил. 


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0793 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.