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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Armada12
Отправлено: 13 Января, 2012 - 11:21:32
Post Id


Новичок


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


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




Всем привет. Подскажите плз, как реализовать вот такую штуку.
Например есть вот такая форма в index.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <form action="obrab.php" method="post">
  3.     <label>Ваш логин:<br></label>
  4.     <input name="login" type="text" size="10" maxlength="10">
  5. <input type="submit" name="submit" value="Ввод">
  6.  

и обработчик obrab.php
PHP:
скопировать код в буфер обмена
  1.  
  2. if (strlen($login) < 4 or strlen($login) > 10) {
  3. exit ("Логин должен должен быть не меньше 4 символов и не больше 10.");
  4. }
  5.  

Как сделать так чтобы когда условие не соблюдается, скрипт останавливался, НО текст ошибки показывался в индексе а не обработчике.
Вот так, например.
 
 Top
garvey
Отправлено: 13 Января, 2012 - 11:53:29
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


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




1. Мы можете отправить запрос на этот же адрес. Но, возможно, по какой-то причине вам так сделать нельзя. Тогда пункт 2.
2. Сохранить текст в сессии.
index.php:
PHP:
скопировать код в буфер обмена
  1. //...
  2. if (isset($_SESSION['message'])) {
  3.     echo $_SESSION['message'];
  4.     unset($_SESSION['message']);
  5. }

obrab.php
PHP:
скопировать код в буфер обмена
  1. if (strlen($login) < 4 || strlen($login) > 10) {
  2.     $_SESSION['message'] = 'Логин должен должен быть не меньше 4 символов и не больше 10.';
  3.     header('Location: index.php');
  4. }

(Отредактировано автором: 13 Января, 2012 - 11:59:54)

 
 Top
Armada12
Отправлено: 13 Января, 2012 - 15:27:16
Post Id


Новичок


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


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




garvey
Да, первый вариант-не вариант, второй работает, большое спасибо Улыбка А есть другие способы?
 
 Top
IllusionMH
Отправлено: 13 Января, 2012 - 15:41:06
Post Id



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


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


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




Armada12, лучше сделать проверку на JS на стороне клиента. Это будет правильнее, чем по 10 раз туда-сюда гонять его.
CODE (html):
скопировать код в буфер обмена
  1. <script type="text/javascript">
  2. function checkform() {
  3.   var login = document.getElementById("login").value;
  4.   if(login.length<4 || login.length>10) {
  5.     alert("Логин должен должен быть не меньше 4 символов и не больше 10.");
  6.     return false;
  7.   } else {
  8.     return true;
  9.   }
  10. }
  11. </script>
  12.  
  13. <form action="obrab.php" method="post" onsubmit="checkform();">
  14.  
  15.     <label>Ваш логин:<br></label>
  16.  
  17.     <input id="login" name="login" type="text" size="10" maxlength="10">
  18.  
  19. <input type="submit" name="submit" value="Ввод">


Вроде так. Вроде значения из формы можно получить не через ид элемента, но не помню как.

P.S. Немного не в тему, но пароль в 10 символов может многим не понравится ;)
 
 Top
Armada12
Отправлено: 13 Января, 2012 - 15:53:11
Post Id


Новичок


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


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




IllusionMH
JS вообще не знаю, даже немного, проще на сессиях, но всё равно спасибо.
Цитата:
P.S. Немного не в тему, но пароль в 10 символов может многим не понравится ;)

не понял Улыбка
 
 Top
armancho7777777 Супермодератор
Отправлено: 13 Января, 2012 - 16:00:41
Post Id



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


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


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




Armada12 пишет:
JS вообще не знаю, даже немного, проще на сессиях.
Тогда хоть обработчик поключите инклюдом в том же файле что и форма, а экшен уберите.

(Отредактировано автором: 13 Января, 2012 - 16:01:29)

 
 Top
Okula
Отправлено: 13 Января, 2012 - 16:07:23
Post Id



Участник


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


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




Просто составить условие грамотно надо.
Например:
PHP:
скопировать код в буфер обмена
  1. $vs = !empty($_POST['vs']) ? TRUE : FALSE; // имя кнопки из формы
  2. if($vs == TRUE) {
  3.  if(empty($_POST['name'])) $err = 'Не введено имя пользователя';
  4.  elseif(empty($_POST['fname'])) $err = 'Не введена фамилия пользователя'
  5.  // ну и так далее
  6.  
  7.   if(empty($err)) {
  8.       //выполняем операцию, если не возникло ошибок
  9.       exit();
  10.   }
  11. }
  12.  
  13.  
  14. if(!empty($err)) echo $err;
  15. // тут совственно html форма
 
 Top
Armada12
Отправлено: 13 Января, 2012 - 17:45:43
Post Id


Новичок


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


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




armancho7777777
Тоже выход, запомню как вариант. Улыбка
Okula
Спасибо, только мне надо чтобы обработчик был отдельно от формы, чтобы результат ошибки возвращался в индекс после остановки скрипта обработчика.
Как так сделать если обработчик будет по вашему типу?

(Отредактировано автором: 13 Января, 2012 - 18:14:28)

 
 Top
Okula
Отправлено: 14 Января, 2012 - 15:28:41
Post Id



Участник


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


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




Если сайт сделан на основе шаблонов то можно подгружать файл шаблона вместо формы, если кнопка была нажата (передан параметр vs через POST запрос).
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB