[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Возврат текста при остановке скрипта
Armada
Всем привет. Подскажите плз, как реализовать вот такую штуку.
Например есть вот такая форма в index.php

<form action="obrab.php" method="post">
<
label>Ваш логин:<br></label>
<
input name="login" type="text" size="10" maxlength="10">
<
input type="submit" name="submit" value="Ввод">

и обработчик obrab.php

if (strlen($login) < 4 or strlen($login) > 10) {
exit ("Логин должен должен быть не меньше 4 символов и не больше 10.");
}

Как сделать так чтобы когда условие не соблюдается, скрипт останавливался, НО текст ошибки показывался в индексе а не обработчике.



Спустя 7 минут, 41 секунда (13.01.2012 - 15:17) Adil написал(а):
в обработчике сделай:
$error = 'Логин должен должен быть не меньше 4 символов и не больше 10.';

А на странице <?=$error?>

Спустя 21 минута, 8 секунд (13.01.2012 - 15:38) Armada написал(а):
Тоесть в обработчике так?
exit ($error = 'Логин должен должен быть не меньше 4 символов и не больше 10.');


И
<?
=$error //что это значит? имею ввиду = перед переменной, строго не судите, новичок.
?>

Спустя 9 минут, 21 секунда (13.01.2012 - 15:47) nugle написал(а):
Armada
<?=$error;?> тоже самое что и <?php echo $error; ?>

Спустя 33 минуты, 19 секунд (13.01.2012 - 16:20) Armada написал(а):
nugle
Аа, ясно ) Не работает только.

Спустя 7 минут, 4 секунды (13.01.2012 - 16:27) nugle написал(а):
потому что не так
exit ($error = 'Логин должен должен быть не меньше 4 символов и не больше 10.');

а просто
$error = 'Логин должен должен быть не меньше 4 символов и не больше 10.';

Спустя 17 минут, 6 секунд (13.01.2012 - 16:45) Armada написал(а):
Не понял...
Если так,

if (strlen($login) < 4 or strlen($login) > 10) {
$error = 'Логин должен должен быть не меньше 4 символов и не больше 10.';
}

то скрип идет выполняться дальше, а там дополнительные проверки, стрипслеши итд и ничего не получается.
Если так,

if (strlen($login) < 4 or strlen($login) > 10) {
$error = 'Логин должен должен быть не меньше 4 символов и не больше 10.';
exit ();
}

то выходит пустой obrab.php

Спустя 12 минут, 57 секунд (13.01.2012 - 16:58) nugle написал(а):
а ты как возвращаешь результат в индекс?

Спустя 1 час, 24 минуты, 41 секунда (13.01.2012 - 18:22) Armada написал(а):
nugle
Вот, у меня тот же вопрос, как это сделать?)))

Спустя 10 минут, 16 секунд (13.01.2012 - 18:32) Игорь_Vasinsky написал(а):
В index.php в самом верху добавь

<?php 

$error = isset($_GET['error']) ? 'Логин должен должен быть не меньше 4 символов и не больше 10' : null;

?>



Там где хочешь вывести ошибку напиши

<?=$error;?>



в обработчике
if (strlen($login) < 4 or strlen($login) > 10) {
header("Location: /index.php?error=1");
}


Работает так: в обработчике - если ошибка - переадресация на обработчик формируя GET переменную в url

В index.php проеряется есть ли в url $_GET['error'] - если есть то переменная $error заполняется текстом ошибки в тернарном операторе и ошибка выводиться.


Спустя 1 минута, 12 секунд (13.01.2012 - 18:34) nugle написал(а):
Armada
через сессию можно или через гет, как написал Игорь

Спустя 36 минут, 4 секунды (13.01.2012 - 19:10) Armada написал(а):
Игорь_Vasinsky
Отлично, тоже подходит, спасибо. smile.gif

Последний вопрос, как безопаснее и через что сделали бы сами через GET или сессию?))

Спустя 7 минут, 36 секунд (13.01.2012 - 19:17) nugle написал(а):
Armada
ну я бы через гет не делал,
во-первых - сообщение не маленькое получиться, а если их больше будет?
а во-вторых, потому что гет можно подменить.

а если потом мешаться будет, то вначале делаешь вывод сессии, а потом сразу же удаляешь ее

Спустя 1 день, 3 часа, 6 минут, 5 секунд (14.01.2012 - 22:23) Armada написал(а):
ясно smile.gif буду делать через сессии smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.