пожалуйста, помогите, я только учусь... у меня есть выражение if (!preg_match('/^([1|2|3|4|5]{1})$/', $kipu)) { $ kipuError = "число должно быть от 1 до 5"} которое должно вывести значение одного числа от 1 до 5. Почему то 0 проходит тоже. Бьюсь два дня уже, пожалуйста, помогите((( только не обзывайтесь на слабый пол))
if (empty($_POST["kipu"])) { $kipu = ""; } else { $kipu = test_input($_POST["kipu"]); if (!preg_match('/^[1-5]$/', $kipu)) { //if (!preg_match('/^([1|2|3|4|5]{1})$/', $kipu)) { $kipuErr = "on oltava ainoa luku astekkolla 1-5"; } } Добавлено спустя 3 минуты 56 секунд: ой,часть текста выпала.....спасибо за ответ, но 0 все равно проходит(( вот все часть кода... с Вашим исправлением... может там что то не так? помогите, плиззз делитанту((( if (empty($_POST["kipu"])) { $kipu = ""; } else { $kipu = test_input($_POST["kipu"]); if (!preg_match('/^[1-5]$/', $kipu)) { $kipuErr = "on oltava ainoa luku astekkolla 1-5"; } }
Регулярка должна работать правильно. Тест: Код (Text): $s = '0'; $ok = preg_match('/^[1-5]$/', $s, $out); var_dump($ok, $out); Добавлено спустя 2 минуты 43 секунды: Вероятно у Вас ошибка в условии Код (Text): if (empty($_POST["kipu"])) Если $_POST["kipu"] == '0' это тоже пустое значение. Должно быть так, скорее всего: Код (Text): if (!isset($_POST["kipu"]))
Ошибаешься. Пустота это '' попробуй сравнить с ''=='0' они не будут равны. Код (PHP): if(''=='0') { echo'равно'; } else { echo'не равно'; } Выводит не равно. А вот: Код (PHP): if(''==0) { echo'равно'; } else { echo'не равно'; } Выводит равно. Но это катастрофа так делать. Код (PHP): if('равно'==0) { echo'равно'; } else { echo'не равно'; } Выводит равно. Осторожнее с этим... Во избежании нужно использовать === жестокое равенство или еще строгое сравнение типов, в случае разных типов возвращается лож.
Верю, что Вы крутой спец и Вам не нужно читать документацию. И всё же почитайте, это ещё более повысит Вашу самооценку.
Спасибо, огромное )))) вы все большие специалисты.))) пожалуйста, помогите еще..вам может быть с одного взгляда будет понятна в чем проблема...а я вторые сутки не могу сделать. Это страница, на которую были отправлены данные из анкеты. Все работает, кроме кнопок внизу... они должны перенаправлять пользователя на другую страницу и удалять сессию. Может быть кто то поможет? я учусь, и у нас это обязательный курс..... в котором я ничего не понимаю Код (PHP): <?php require_once "virheilmoitus.php"; session_start (); if (! isset($_GET["varvara"])) { header ( "location: index.php" ); exit (); } else if (isset ( $_SESSION ["virheilmoitus"] )) { $virheilmoitus = $_SESSION ["virheilmoitus"]; } else { header ( "location: index.php" ); exit (); } if (isset ( $_POST ["korjaa"] )) { header ( "location: lomake.php" ); exit (); } if (isset ( $_POST ["talleta"] )) { unset($_SESSION["virheilmoitus"]); header ( "location: asetukset.php" ); exit (); } elseif (isset ( $_POST ["peruuta"] )) { unset($_SESSION["virheilmoitus"]); header ( "location: asetukset.php" ); exit (); } else { } ?> <!DOCTYPE HTML> <html> <head> <style type="text/css"> @import url("tyylit2.css"); </style> </head> <div id="links">[url="#"]Asetukset[/url]</div> <div id ="header"> </div> <div id="laatikko"> <div id ="header"> </div> <p> <h2>Annoit tiedot</h2></p> <?php print ("<p>Etu -ja sukunimi: " . $virheilmoitus->getName ()) ; print ("<br>Henkilötunnuksen loppuosa: " . $virheilmoitus->getHlo()) ; print ("<br>Puhelinnumero: " . $virheilmoitus->getPnro()); print ("<br>Sähköposti: " . $virheilmoitus->getEmail()); print ("<br>Sähköposti: " . $virheilmoitus->getEmail()); print ("<br>Kipu: " . $virheilmoitus->getKipu()); print ("<br>Komentti: " . $virheilmoitus->getComment() . "</p>\n") ?> <p><input class="blue" type="submit" name="korjaa" value="Korjaa"> <input class="blue" type="submit" name="talleta" value="Talleta"> <input class="red" type="submit" name="peruuta" value="Peruuta"></p> </div> </html>
По кнопкам должно что-то отправляться или просто переадрессация? Если отправляться, то данные должны быть в форме. Если просто переадрессация, то для этого есть ссылки. Ну если уж очень хочется использовать вместо ссылки кнопки, то Код (Text): <input onclick="location.href='мегассылко'" class="blue" name="korjaa" value="Korjaa">
Cпасибо большое за ответ. Нет, просто такое задание.....надо чтобы перенаправлялось например, когда нажимаешь кнопку <input class="blue" type="submit" name="исправить_информацию_o_себе" value="Исправить"> переправляла на начальную страницу, где пользователь заполнял анкету. if (isset ( $_POST ["исправить_информацию_o_себе"] )) { // вот здесь я написала по русски, может так понятнее... header ( "location: анкета.php" ); exit (); } if (isset ( $_POST ["talleta"] )) { unset($_SESSION["virheilmoitus"]); header ( "location: asetukset.php" ); exit (); } elseif (isset ( $_POST ["peruuta"] )) { unset($_SESSION["virheilmoitus"]); header ( "location: asetukset.php" ); exit (); } else { } Добавлено спустя 21 минуту 26 секунд: я наверное, не правильно объяснила.... надо использовать форму для отправки.... и надо например чтобы сессия удалялась, когда пользователь нажал кнопку "удалить" а когда "исправить",чтобы перенаправлялось на страницу анкеты с сохраненной сессией.
Тут придется сделать 3 формы и 3 кнопки и все заработает. Либо просто 3 кнопки и js обработчик который будет смотреть какую кнопку жмем, а уже внутри будет слать одну из нажатых кнопок.
Почему? Можно и одной формой обойтись, а на сервере делать проверку присланных данных. у кнопки есть name Код (PHP): <input class="red" type="submit" name="peruuta" value="Peruuta"> А на сервере смотреть, какая кнопка сработала: Код (PHP): if(isset($_POST['peruuta'])) Добавлено спустя 5 минут 24 секунды:А. Стоп. Так она так и делает, госпаде. Код (PHP): if (isset($_POST["исправить_информацию_o_себе"])) { // вот здесь я написала по русски, может так понятнее... header("Location: анкета.php"); exit(); } if (isset($_POST["talleta"])) { unset($_SESSION["virheilmoitus"]); header("Location: asetukset.php"); exit(); } if (isset($_POST["peruuta"])) { unset($_SESSION["virheilmoitus"]); header("Location: asetukset.php"); exit(); }
varvara, убедительная просьба пройти по ссылке у меня в подписи и прочитать пункт 8. Все остальные тоже желательно, на всякий случай, но пункт 8 - особенно.
да,спасибо большое, учту замечание по поводу оформления темы.... И еще раз спасибо большое за помощь..... разобралась с вашей помощью)))
Код (PHP): exit(header("Location: анкета.php")); Код (PHP): if ((isset($_POST["исправить_информацию_o_себе"]) && ($info=true) && $loc='анкета.php') || (isset($_POST["talleta"]) || isset($_POST["peruuta"])) && $loc='asetukset.php') { if(!isset($info)) { unset($_SESSION["virheilmoitus"]); } exit(header('Location: '.$loc)); } Ну это так... =)))
rodent90, у Вас явно нет начальника, - за один только "exit(header(...))" Вас надо бы уволить. Вот наплодят такие "индусы" кода кучу, а нам потом разгребай.
Тоже вижу такое впервые, но в чем принципиальная разница между выставлением локейшена и, затем exit'а и между выставлением локейшена внутри экзита? Все равно офдоки рекомендуют экзит делать после переадресации.
Разница в стиле кода, которой влияет на чтение его логики. Один и тот же эффект можно получить разными способами, - простым/логичным, сложным, заковыристым и т.д. Достижение результата странными/заковыристыми/нелогичными способами называется "индусским" кодом. У rodent90 типичный индусский код.
Ну хз, конкретно в Код (Text): exit(header('Location: '.$loc)); Лично я не вижу ничего неочевидного и странного.
Это плохо, что Вам не чужд индусский код В частности, использование процедуры как функции. В классических языках за такую вольность компилятор по рукам бы надавал, большой толстой линейкой.
отправили заголовок. вышли. или вышли со статусом, равным результату выполнения функции отправки заголовка... к слову хидер ничего не возвращает (войд) следовательно её использование в контексте генератора статуса выходя является бессмысленным. ну и как бы слишком неочевидный кусок кода получается.
А стоп, header же не возвращает никаких значений. Да, тогда согласен, индусово немного. Сомневаюсь. Тут, на деле нет ничего сверхъестественного, exit ждет на вход параметр, вместо параметра вызов функции, который будет выполнен, после чего неявно будет возвращено undefined. Или void в классических языках. С точки зрения логики это не отличается от какого-нить Код (Text): exit(get_reason());// где get_reason() возвращает причину, по которой был инициирован выход. Тут по пальцам давать не за что. Разве что в классическом языке у входящего параметра строгий тип, тогда да. Добавлено спустя 1 минуту: В общем да, согласен, такая конструкция не очень правильная.
Chushkin, Так и скажи правда тебя закалола, ты увидел, скрипт и никогда до этого не догадывался. Эм. Возвращения нет. Окай. Но exit'у оно и не обязательно. Код (PHP): $var=... || exit(header(...)); if($var) { ... }