Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не могу вкурить!!!!!

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Что не так, выручайте!
Хенаро
Отправлено: 13 Сентября, 2015 - 16:53:54
Post Id



Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Нояб. 2014  


Помог: 0 раз(а)




Здравствуйте! Делаю тестовое для приёма на работу и как всегда на самом простом валюсь!
Задача - сделать регистрацию и авторизацию пользователей. Делаю на "чистом" аяксе без джейкверию Кусочек остался, добавление дополнительных сведений о себе. Смотрите:
PHP:
скопировать код в буфер обмена
  1. namespace reggiAuth;
  2. require 'registrator.php';
  3.  
  4. $user = new registrator();
  5.  
  6. $dateBirth = htmlspecialchars(trim($_POST['dateBirth']));
  7.  
  8. $error     = '';
  9.  
  10. if($dateBirth){
  11.    $error .= $user->validate($dateBirth, '/\d{4}\.\d{1,2}\.\d{1,2}/', 'Неверный формат даты, должна быть в формате 2015.09.11');
  12. }
  13. if($error){
  14.     exit($error);
  15. }
  16. // функция, которая используется::
  17. // проверка введённых данных
  18.     public function validate($value, $pattern, $message){
  19.         if(!empty($value)){
  20.             if(preg_match($pattern, $value)) return '';
  21.         }
  22.         else return $message;
  23.     }
  24.  

И всё дело в том, что не делает проверки, во всех случаях, что ни вводи, $error всё равно пустая строка. Ну почему??? Выручите, пожалуйста!!!
 
 Top
Мелкий Супермодератор
Отправлено: 13 Сентября, 2015 - 17:03:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Выкиньте ненужные сущности и посмотрите частности.

PHP:
скопировать код в буфер обмена
  1. function validate($value, $pattern, $message){
  2.         if(!empty($value)){
  3.             if(preg_match($pattern, $value)) return '';
  4.         }
  5.         else return $message;
  6.     }
  7.  
  8. var_dump(validate('2015-05-01', '/\d{4}\.\d{1,2}\.\d{1,2}/', 'Неверный формат даты, должна быть в формате 2015.09.11'));

Характерный результат сразу показывает ошибку.


-----
PostgreSQL DBA
 
 Top
Хенаро
Отправлено: 13 Сентября, 2015 - 17:20:10
Post Id



Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Нояб. 2014  


Помог: 0 раз(а)




Мелкий пишет:
Выкиньте ненужные сущности и посмотрите частности.
Характерный результат сразу показывает ошибку.


Спасибо за ответ. Ничего не понял, конечно, эта функция отлично работала и работает в других файлах. Обьясни, пожалуйста, как сделать, чтоб работало??

Ну пи**ец!! Ну вчера ж только проверял, работала ****!! Какого беса NULL? Откуда бЛ***

(Отредактировано автором: 13 Сентября, 2015 - 17:43:02)

 
 Top
Мелкий Супермодератор
Отправлено: 13 Сентября, 2015 - 17:42:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Хенаро пишет:
Делаю тестовое для приёма на работу

Нет, готового кода я не дам принципиально.

Хенаро пишет:
эта функция отлично работала и работает в других файлах

Это высказывание ложно.


С указанным набором аргументов, как легко заметить, функция возвращает NULL.
При конкатенации строки с NULL результатом будет что? Объясните самому себе, почему наблюдаемое вами дальнейшее поведение системы является логичным и единственно-возможным.

NULL же из функции можно получить в 3 случаях:
0) если сделан return значения NULL.
1) если сделан return без аргумента, "return;" т.е.
2) если return не был вызван вовсе.
Найдите свой случай.


-----
PostgreSQL DBA
 
 Top
Хенаро
Отправлено: 13 Сентября, 2015 - 17:51:01
Post Id



Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Нояб. 2014  


Помог: 0 раз(а)




Мелкий пишет:

Хенаро пишет:
эта функция отлично работала и работает в других файлах

Это высказывание ложно.

Как же ложно, отключаю яваскрипт, делаю регистрацию, возвращается
1Неправильный логин, только английские буквы и цифры
Неправильный формат E-mail
Пароль содержит пробелы

Ну если не дашь принципиально, тогда поздравляю
 
 Top
Мелкий Супермодератор
Отправлено: 13 Сентября, 2015 - 18:44:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Хенаро пишет:
Как же ложно

Потому что отклонение от желаемого поведения стабильно воспроизводится на каждом запуске. Поведение кода стабильно. Значит, в других местах функция ведёт себя идентично либо там вызывается другая функция.
Следовательно с отключенным JS или другие параметры передаются (например, что-то, приводимое к empty) или вызывается другая функция.


-----
PostgreSQL DBA
 
 Top
Хенаро
Отправлено: 13 Сентября, 2015 - 19:05:36
Post Id



Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Нояб. 2014  


Помог: 0 раз(а)




Мелкий пишет:
Хенаро пишет:
Как же ложно

Потому что отклонение от желаемого поведения стабильно воспроизводится на каждом запуске. Поведение кода стабильно. Значит, в других местах функция ведёт себя идентично либо там вызывается другая функция.
Следовательно с отключенным JS или другие параметры передаются (например, что-то, приводимое к empty) или вызывается другая функция.


Да в том-то и дело, нет там другой функции validate. С этим кодом бляха, и так обидно, всегда на чём-то самом простом Огорчение
 
 Top
Panoptik
Отправлено: 13 Сентября, 2015 - 23:18:21
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




обходя расставленные грабли - теряешь бесценный опыт (с)

ищите ошибку. там всего 3 строчки и советов дано уже более чем


-----
Just do it
 
 Top
Хенаро
Отправлено: 15 Сентября, 2015 - 20:51:29
Post Id



Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Нояб. 2014  


Помог: 0 раз(а)




Panoptik пишет:
обходя расставленные грабли - теряешь бесценный опыт (с)

ищите ошибку. там всего 3 строчки и советов дано уже более чем

Я просто не понимаю, почему сегодня функция работает, а завтра уже нет..
И даже не знаю как начать думать чтоб до этого додуматься. В самом деле, ну откуда? ну откуда в функции на 3 строки может взяться ошибка, причём скрытая без сигналов.
Проверено: везде работает как надо, только в одном файле косяк выходит Огорчение
 
 Top
Мелкий Супермодератор
Отправлено: 15 Сентября, 2015 - 22:26:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Серьёзно?
Мелкий пишет:
NULL же из функции можно получить в 3 случаях:
0) если сделан return значения NULL.
1) если сделан return без аргумента, "return;" т.е.
2) если return не был вызван вовсе.
Найдите свой случай.

Вы за столько времени не смогли проверить всего 3 причины? В коде из 3 строк?


-----
PostgreSQL DBA
 
 Top
DelphinPRO
Отправлено: 15 Сентября, 2015 - 22:30:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




смотреть что приходить на вход функции не пробовали?
Если данные не проходят валидацию - изучите, что за данные приходят. Залогируйте если нужно ошибочные проверки в файл и посмотрите.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
andrewkard
Отправлено: 15 Сентября, 2015 - 23:21:20
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Пишите операторы ветвления с фигурными скобками, так код более понятен.
PHP:
скопировать код в буфер обмена
  1.  
  2. function validate($value, $pattern, $message){
  3.     if(!empty($value)){
  4.         if(preg_match($pattern, $value)){
  5.             return '';
  6.         }
  7.     } else {
  8.         return $message;
  9.     }
  10. }
  11.  

Логичнее, что бы данная функция выдавала не сообщение, а true либо false, как результат проверки.
 
 Top
DelphinPRO
Отправлено: 16 Сентября, 2015 - 01:51:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




andrewkard так вот где собака зарыта )
действительно, с правильным форматированием сразу видно почему функция может вернуть null


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Panoptik
Отправлено: 16 Сентября, 2015 - 11:58:03
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




всем кто помог дать прямой ответ - жирный минус.
как минимум помогли человеку НЕ научиться разбираться с кодом, искать ошибки, отлаживать, и приучили бегать на форум по любому мелочному поводу


-----
Just do it
 
 Top
Хенаро
Отправлено: 16 Сентября, 2015 - 13:47:52
Post Id



Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Нояб. 2014  


Помог: 0 раз(а)




Panoptik пишет:
всем кто помог дать прямой ответ - жирный минус.
как минимум помогли человеку НЕ научиться разбираться с кодом, искать ошибки, отлаживать, и приучили бегать на форум по любому мелочному поводу


Ничёсе мелочи! И никто не дал, не волнуйся ты так

И я в жизни никогда, слышите, НИКОГДА не пойму почему в ней получается пустое value

Голимая МИСТИКА брошу всё и уйду в монархи

(Отредактировано автором: 16 Сентября, 2015 - 14:54:43)

 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB