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
Форумы портала PHP.SU :: Версия для печати :: Область видимости переменной
Форумы портала PHP.SU » » Вопросы новичков » Область видимости переменной

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

1. teddy - 01 Мая, 2013 - 14:51:43 - перейти к сообщению
Добрый день. Хочу написать функцию фильтрации данных, но столкнулся со следующей проблемой: Если попадаем в нужный кейс с определенной ошибкой, то не могу вывести ошибку в нужном для меня месте. Вот код - далее объясню что и как я делаю
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if(isset($_POST['submit'])){
  3. $error_login = "";
  4. function clearData($data,$type="login") {
  5.         switch($type){
  6. case "login": if(strlen($data)<3 or strlen($data)>8){
  7.                         global $error_login;
  8.                         $error_login = "Некорректный логин";
  9.                        
  10.                         return $data;
  11.                         }
  12. }
  13.  
  14. }
  15. $login = clearData($_POST['login'],"login");
  16. }
  17. ?>
  18. <pre>
  19. <form action="clearData.php" method="post">
  20. Login: <input type='text' name='login'>
  21. Passw: <input type='text' name='password'>
  22. <input type='submit' name='submit'>
  23. </pre>
  24. <?PHP
  25. if(isset($error_login)){echo $error_login;}
  26. ?>


Если вместо global использовать return, то он возвращает ошибку. А мне нужно что бы не где то наверху появлялось уведомление об ошибке, а под каждым полем. Соответственно я проверяю переменную на isset, и если попали в кейс, значит ошибка должна показаться в нужном для меня месте, а именно там, где она проверяется на isset. А у меня на isset не проверяется, хотя попадаем в этот кейс с ошибкой. static тоже использовал, не помогает... Подскажите пожалуйста как можно это реализовать? В чем моя ошибка?
2. DelphinPRO - 01 Мая, 2013 - 15:22:33 - перейти к сообщению
teddy пишет:
Если вместо global использовать return, то он возвращает ошибку.
teddy пишет:
static тоже использовал, не помогает...
От балды чтоли языковые конструкции вставляешь? авось, повезет Улыбка

вариант: сделай массив. В него добавляй ошибки. Если он пуст - ошибок нет. Если не пуст - выводи все ошибки там где тебе удобно.
3. OrmaJever - 01 Мая, 2013 - 15:34:24 - перейти к сообщению
Учитывая что функция ничего интересного не возвращает то можно возвращать ошибки.
4. teddy - 01 Мая, 2013 - 16:14:16 - перейти к сообщению
DelphinPRO
Сделать массив можно, но меня интересует именно вариант с функцией через свитч
(Добавление)
Хех, пофиксил... все работает так как я хотел и без массива )

 

Powered by ExBB FM 1.0 RC1