|
|
|
(php) Не работает проверка переменных
|
|||
|---|---|---|---|
|
#18+
Очень тупой вопрос ))) Через форму отправляю в скрипт данные о заказчике. В скрипте проверяю заполнены ли обязательные поля. Код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. p.s. "address" это не опечатка ))) так задуманно =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 21:33:37 |
|
||
|
(php) Не работает проверка переменных
|
|||
|---|---|---|---|
|
#18+
форма каким методом отпарвляет даные? get, post? Может тогда не $_GET а $_POST юзать нуна? И добавить вместо Код: plaintext Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 21:44:00 |
|
||
|
(php) Не работает проверка переменных
|
|||
|---|---|---|---|
|
#18+
Отправляется и принимается через GET. Ренат, что то получается мудрённый вариант для элементарной задачи! Что конструкция if в php не способна проверить 3 переменные в одной строчке ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 22:17:31 |
|
||
|
(php) Не работает проверка переменных
|
|||
|---|---|---|---|
|
#18+
Дык конструкция то работает правильно. Из формы приходят переменные. Они содержат пустую строку. Но приходят же. Вы проверяете на наличие - переменные есть. А на содержимое не проверяете. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 22:38:35 |
|
||
|
(php) Не работает проверка переменных
|
|||
|---|---|---|---|
|
#18+
Можно проверку сделать примерно такой: Код: plaintext Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 22:44:13 |
|
||
|
(php) Не работает проверка переменных
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 22:59:05 |
|
||
|
(php) Не работает проверка переменных
|
|||
|---|---|---|---|
|
#18+
an0nym,vkle спасибо действительно заработало как надо =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 23:28:51 |
|
||
|
(php) Не работает проверка переменных
|
|||
|---|---|---|---|
|
#18+
guest_112an0nym,vkle спасибо действительно заработало как надо =) Самое интересное я тоже самое написал в втором топике o_O ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 00:43:18 |
|
||
|
(php) Не работает проверка переменных
|
|||
|---|---|---|---|
|
#18+
Ренат, 1. не то же самое, 2. неэффективное, 3. неудобное. Уж если не хотите в отдельную функцию выносить - или пишите как мы, или хотя бы на подобии Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 00:59:01 |
|
||
|
(php) Не работает проверка переменных
|
|||
|---|---|---|---|
|
#18+
an0nymРенат, 1. не то же самое, 2. неэффективное, 3. неудобное. Уж если не хотите в отдельную функцию выносить - или пишите как мы, или хотя бы на подобии Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Не эффиктивно? А эффективно пользоваться вобще фореачем? Вы реально считатете что юзать бреак читабельно и эффективно? А если пользователь ввел пустую строку? ЧТо тода делать будите? А если нужно будет на шаблон еще проверять? У меня тремя простыми действиями дописываеться это все. Неудобно? Чтобы добавить новое поле у вас в скрипте нужно было дописывать isset(....) && $_GET[...] и ЭТО вы называете удобным? а то что вы туат привели: это тот же мой код тока более коряво переписаный. зы. где нить в начале определили вы $accept - и забыли. И щас ваш цикл начнет лазить по циклу, и допустим ни разу на $accept=false не наткнеться. И что тода - опана, а акепт то установлена - ошибочка значит! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 01:18:51 |
|
||
|
(php) Не работает проверка переменных
|
|||
|---|---|---|---|
|
#18+
<? session_start(); unset($_GET["fio"]); unset($_GET["phone"]); unset(isset($_GET["address"])); if (isset($_GET["fio"]) && isset($_GET["phone"]) && isset($_GET["address"])) { //тут добавляем данные в базу } else { $_SESSION['order_error'] = "Не заполнено одно из ключевых полей"; header('location:'.$_SERVER['HTTP_REFERER']); } ?> Если в таком варианте заработает, то значит твои переменные существуют, просто имеют NULL значение. Замени строку isset($_GET["fio"]) && isset($_GET["phone"]) && isset($_GET["address"]) на $_GET["fio"] != '' and $_GET["fio"] = '' and $_GET["address"] = '' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 01:27:25 |
|
||
|
(php) Не работает проверка переменных
|
|||
|---|---|---|---|
|
#18+
Сорри, последнее $_GET["fio"] != '' and $_GET["fio"] != '' and $_GET["address"] != '' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 01:28:57 |
|
||
|
(php) Не работает проверка переменных
|
|||
|---|---|---|---|
|
#18+
Ниджат<? unset($_GET["fio"]); unset($_GET["phone"]); unset(isset($_GET["address"])); if (isset($_GET["fio"]) && isset($_GET["phone"]) && isset($_GET["address"])) { //тут добавляем данные в базу } феерично... вы удаляете переменные а потом проверяете их существование? я могу вам сразу сказать - что условие IF - в вашем варианте НИКОГДА не сработает.. ))) и вообще, в чем проблема то? проверить 3 переменные на то что они пришли и непустые? Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 07:48:44 |
|
||
|
(php) Не работает проверка переменных
|
|||
|---|---|---|---|
|
#18+
r u, привед 3 нотиса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 10:26:25 |
|
||
|
(php) Не работает проверка переменных
|
|||
|---|---|---|---|
|
#18+
Ренатan0nymРенат, 1. не то же самое, 2. неэффективное, 3. неудобное. Уж если не хотите в отдельную функцию выносить - или пишите как мы, или хотя бы на подобии Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Не эффиктивно? А эффективно пользоваться вобще фореачем? Вы реально считатете что юзать бреак читабельно и эффективно? А если пользователь ввел пустую строку? ЧТо тода делать будите? А если нужно будет на шаблон еще проверять? У меня тремя простыми действиями дописываеться это все. Неудобно? Чтобы добавить новое поле у вас в скрипте нужно было дописывать isset(....) && $_GET[...] и ЭТО вы называете удобным? а то что вы туат привели: это тот же мой код тока более коряво переписаный. зы. где нить в начале определили вы $accept - и забыли. И щас ваш цикл начнет лазить по циклу, и допустим ни разу на $accept=false не наткнеться. И что тода - опана, а акепт то установлена - ошибочка значит! Еще раз. Ваш код неэффективен. Он неэффективен как по сравнению с isset($var1, $var2, $var3) and $var1 and $var2 and $var3 (или trim($var1) and trim($var2) and trim($var3)), так и с моим вариантом цикла как минимум потому, что цикл не остановится, найдя первое неудовлетворяющее значение. foreachем пользоваться не менее эффективно, чем for. Возможно, даже более - но разница явно очень мизерная. Предубеждения насчет break... почитайте побольше на эту тему. Не будете больше так безапеляционно заявлять о читабельности и эффективности. Хорошо, я могу переписать с while без break. Читаться будет хуже, но производительность будет та же. А если пользователь ввел строку ' \NUL ' (нуль-байт имею в виду), что тогда будете делать? А если для разных переменных нужна разная валидация. Тут уже должна быть нормальная функция (/класс), инкапсулирующие этот функционал. Если вы такие проверки для каждой переменной в каждом скрипте будете писать отдельно - быстро устанете. Мы разбираем простейший случай. Неудобно, потому что обычно нет-нет, да есть какое-нибудь одно поле, требующее доп. поведение, например проверка, что телефон из цифр. В вашем случае (и в моей переписи вашего цикла) потребуется if внутри цикла, который выполнится столько же раз, сколько и цикл, тогда как можно было обойтись вообще без него. То что тут приведено было мной - это ваш код, только переписанный оптимально и читабельно. Могу переписать оптимально и не читабельно, но без break. зы. Наверное, единственное, насчет чего соглашусь, так это насчет того, что $accept следует все таки определить до цикла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 10:42:03 |
|
||
|
(php) Не работает проверка переменных
|
|||
|---|---|---|---|
|
#18+
an0nym Еще раз. Ваш код неэффективен. Он неэффективен как по сравнению с isset($var1, $var2, $var3) and $var1 and $var2 and $var3 (или trim($var1) and trim($var2) and trim($var3)), так и с моим вариантом цикла как минимум потому, что цикл не остановится, найдя первое неудовлетворяющее значение. foreachем пользоваться не менее эффективно, чем for. Возможно, даже более - но разница явно очень мизерная. Предубеждения насчет break... почитайте побольше на эту тему. Не будете больше так безапеляционно заявлять о читабельности и эффективности. Хорошо, я могу переписать с while без break. Читаться будет хуже, но производительность будет та же. А если пользователь ввел строку ' \NUL ' (нуль-байт имею в виду), что тогда будете делать? А если для разных переменных нужна разная валидация. Тут уже должна быть нормальная функция (/класс), инкапсулирующие этот функционал. Если вы такие проверки для каждой переменной в каждом скрипте будете писать отдельно - быстро устанете. Мы разбираем простейший случай. Неудобно, потому что обычно нет-нет, да есть какое-нибудь одно поле, требующее доп. поведение, например проверка, что телефон из цифр. В вашем случае (и в моей переписи вашего цикла) потребуется if внутри цикла, который выполнится столько же раз, сколько и цикл, тогда как можно было обойтись вообще без него. То что тут приведено было мной - это ваш код, только переписанный оптимально и читабельно. Могу переписать оптимально и не читабельно, но без break. зы. Наверное, единственное, насчет чего соглашусь, так это насчет того, что $accept следует все таки определить до цикла. 1. а вы всегда выводите только сообщение об первой ошибке забыв на остальные? 2. вы реально считате что цикл по ассоциированому массиву, да еще и предварительным его копированием быстрее чем цикл по нумерованому по порядку оригенальному массиву? 3. Если пользователь ввел нуль то ет неверно и trim(\NUL) не даст скрипту выполнить дальше. 4. хорошо, и как можно без цикла и ифа определить в заданой группе присылаемых ппараметров удовлетворяют они шаблону или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 10:53:18 |
|
||
|
(php) Не работает проверка переменных
|
|||
|---|---|---|---|
|
#18+
an0nymr u, привед 3 нотиса. да вы правы... тогда isset() Добавить придется вчеравно... а вообще, лучче написать микро-валидатор и забыть все эти бесконечные IF и ISSET и EMPTY().... как страшный сон.. либо юзать готовые из фреймворков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 10:58:22 |
|
||
|
(php) Не работает проверка переменных
|
|||
|---|---|---|---|
|
#18+
Ренат1. а вы всегда выводите только сообщение об первой ошибке забыв на остальные? 2. вы реально считате что цикл по ассоциированому массиву, да еще и предварительным его копированием быстрее чем цикл по нумерованому по порядку оригенальному массиву? 3. Если пользователь ввел нуль то ет неверно и trim(\NUL) не даст скрипту выполнить дальше. 4. хорошо, и как можно без цикла и ифа определить в заданой группе присылаемых ппараметров удовлетворяют они шаблону или нет? 1. А ваш код позволяет без модификации? С минимальной модификацией и мой моментально позволит. 2. Почитайте про хранение переменных в PHP. Копироваться массив не будет. И да, я считаю, что итерация по хэш-карте во внутреннем порядке следования элементов в оной, как минимум не медленнее, чем последовательное выдергивание из неё элементов в произвольном порядке (ибо PHP не будет ни с того ни с сего узнавать, что порядок дерганья 0-1-2 является внутренним порядком массива). 3. Хорошо, согласен. \1 (chr(1)), а не \0? 4. if (isset($var1, $var2, $var3) and trim($var1) and trim($var2) and preg_match('/pattern/', $var3)) - в этом случае не будет оверхеда от исполнение в каждой итерации цикла проверки на то, является ли этот элемент исключительным и надо ли его соответственно обработать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 11:03:00 |
|
||
|
(php) Не работает проверка переменных
|
|||
|---|---|---|---|
|
#18+
r uan0nymr u, привед 3 нотиса. да вы правы... тогда isset() Добавить придется вчеравно... а вообще, лучче написать микро-валидатор и забыть все эти бесконечные IF и ISSET и EMPTY().... как страшный сон.. либо юзать готовые из фреймворков. Именно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 11:03:18 |
|
||
|
(php) Не работает проверка переменных
|
|||
|---|---|---|---|
|
#18+
r u Код: plaintext 1. 2. 3. 4. 5. 6. И, ИМХО, не следует прикасаться к GPC и менять в них данные. Они должны быть доступны в первоначальном виде в любой части скрипта, потому что помимо вашего модуля, они могут понадобиться другому модулю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 11:08:24 |
|
||
|
(php) Не работает проверка переменных
|
|||
|---|---|---|---|
|
#18+
пример нано-валидатора ) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 12:07:32 |
|
||
|
(php) Не работает проверка переменных
|
|||
|---|---|---|---|
|
#18+
Здесь пример кода для проверки переменной на целое число, у меня заработало ))) Проверка переменной на целое число ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2012, 17:50:16 |
|
||
|
|

start [/forum/topic.php?fid=23&fpage=131&tid=1464582]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 343ms |

| 0 / 0 |
