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. Armada12 - 13 Января, 2012 - 11:21:32 - перейти к сообщению
Всем привет. Подскажите плз, как реализовать вот такую штуку.
Например есть вот такая форма в 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.  

Как сделать так чтобы когда условие не соблюдается, скрипт останавливался, НО текст ошибки показывался в индексе а не обработчике.
Вот так, например.
2. garvey - 13 Января, 2012 - 11:53:29 - перейти к сообщению
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. }
3. Armada12 - 13 Января, 2012 - 15:27:16 - перейти к сообщению
garvey
Да, первый вариант-не вариант, второй работает, большое спасибо Улыбка А есть другие способы?
4. IllusionMH - 13 Января, 2012 - 15:41:06 - перейти к сообщению
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 символов может многим не понравится ;)
5. Armada12 - 13 Января, 2012 - 15:53:11 - перейти к сообщению
IllusionMH
JS вообще не знаю, даже немного, проще на сессиях, но всё равно спасибо.
Цитата:
P.S. Немного не в тему, но пароль в 10 символов может многим не понравится ;)

не понял Улыбка
6. armancho7777777 - 13 Января, 2012 - 16:00:41 - перейти к сообщению
Armada12 пишет:
JS вообще не знаю, даже немного, проще на сессиях.
Тогда хоть обработчик поключите инклюдом в том же файле что и форма, а экшен уберите.
7. Okula - 13 Января, 2012 - 16:07:23 - перейти к сообщению
Просто составить условие грамотно надо.
Например:
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 форма
8. Armada12 - 13 Января, 2012 - 17:45:43 - перейти к сообщению
armancho7777777
Тоже выход, запомню как вариант. Улыбка
Okula
Спасибо, только мне надо чтобы обработчик был отдельно от формы, чтобы результат ошибки возвращался в индекс после остановки скрипта обработчика.
Как так сделать если обработчик будет по вашему типу?
9. Okula - 14 Января, 2012 - 15:28:41 - перейти к сообщению
Если сайт сделан на основе шаблонов то можно подгружать файл шаблона вместо формы, если кнопка была нажата (передан параметр vs через POST запрос).

 

Powered by ExBB FM 1.0 RC1