Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
17 / 17 / 8
Регистрация: 03.06.2013
Сообщений: 92

двойной isset

26.08.2013, 19:49. Показов 2411. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
добро ночи, хотел узнать как сделать проверку двух переменных сразу, например если так написать то не проверяет

PHP
1
if (isset($_POST['zagolovok'] && $_POST['text']))
а как будет работать? например тут

PHP
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
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<?php
if (isset($_POST['zagolovok'])) 
{
$file = dirname(__FILE__).'\test.html';
$text = '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">'.$_POST['zagolovok'] .'<br><br>'. $_POST['text'];
if (file_put_contents($file, $text))
    {
        echo "страница добавлена - <a href=/test.html target=blank>открыть</a>";
    }
}
else
{
echo
"
<center>
<form action='' method=post>
<input type=text name=zagolovok value=Вопрос><br><br>
<textarea cols=30 rows=10 name=text>Как сделать форму?</textarea><br><br>
<input type=submit value=Отправить>
</form>
</center>
";
}
?>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.08.2013, 19:49
Ответы с готовыми решениями:

Isset и empty
Всем привет. Только что заметил такую запись в коде: isset($minimum_price, $maximum_price) &amp;&amp; !empty($minimum_price) &amp;&amp; ...

Переменная в isset()
Здравствуйте. Пробовал так if (isset($_POST)) { $opros.$d =$_POST; } Мне нужно, чтобы шла проверка в цикле, если существует...

Isset + SESSION
Господа, завис я вот на элементарном вопросе. Итак, имею такой скрипт для примера: &lt;?php session_start(); $b = 0; ...

12
 Аватар для AndreyDyakonov
122 / 120 / 7
Регистрация: 21.04.2013
Сообщений: 615
26.08.2013, 19:58
Что мешает писать не изобретая новый синтаксис языка?
PHP
1
if (isset($_POST['zagolovok']) && isset($_POST['text']))
1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
26.08.2013, 20:06
а что мешает писать, почитав про isset ?
PHP
1
if (isset($_POST['zagolovok'], $_POST['text']))
2
26.08.2013, 20:38

Не по теме:

Цитата Сообщение от KOPOJI Посмотреть сообщение
а что мешает писать, почитав про isset ?
пых - чудовищьный язык.. Никогда не знаешь где подвох :)

0
27.08.2013, 07:34

Не по теме:

Цитата Сообщение от KOPOJI Посмотреть сообщение
а что мешает писать, почитав про isset ?
Цитата Сообщение от AndreyDyakonov Посмотреть сообщение
пых - чудовищьный язык.. Никогда не знаешь где подвох
Особенно, когда начинаешь отрицать isset с несколькими переменными, полагаясь только на "логичный" внешний вид вместо здравого смысла:
PHP
1
if (!isset(..., ..., ...))

0
17 / 17 / 8
Регистрация: 03.06.2013
Сообщений: 92
07.09.2013, 00:40  [ТС]
чото не то... у меня не один вариант не работает, что я не так делаю

PHP
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
 
if( isset($_POST['ip']) 
    && isset($_POST['login']) 
    && isset($_POST['pass']) 
    && isset($_POST['owner']) 
    && isset($_POST['ns_one']) 
    && isset($_POST['ns_two']) 
    && isset($_POST['config'])
  )
 
 
/*if(isset(
    $_POST['ip'], 
    $_POST['login'],
    $_POST['pass'],
    $_POST['owner'],
    $_POST['ns_one'],
    $_POST['ns_two'],
    $_POST['config']
          )
  )
*/
 
/*if(!isset(
    $_POST['ip'], 
    $_POST['login'],
    $_POST['pass'],
    $_POST['owner'],
    $_POST['ns_one'],
    $_POST['ns_two'],
    $_POST['config']
           )
  )
*/
 
{
 
    $ip = $_POST['ip'];
    $login = $_POST['login'];
    $owner = $_POST['owner'];
 
    echo $ip . $login . $owner;
 
}
else
{
?>
 
<center>
<form method="post" action="">
IP<br><input type="text" name="ip"><br><br>
Логин<br><input type="text" name="login"><br><br>
Пароль<br><input type="text" name="pass"><br><br>
Владелец домена(ips manager)<br><input type="text" name="owner"><br><br>
ns1<br><input type="text" name="ns_one"><br><br>
ns2<br><input type="text" name="ns_two"><br><br>
Название конфига<br><input type="text" name="config"><br><br>
<input type="submit" value="Замутить конфиг"><br><br>
</form>
</center>
 
<?php 
}
?>
0
91 / 91 / 23
Регистрация: 02.09.2013
Сообщений: 276
07.09.2013, 09:28
А как вы определили что они не работают? Ошибку какую-то высыпает?
0
17 / 17 / 8
Регистрация: 03.06.2013
Сообщений: 92
07.09.2013, 18:16  [ТС]
эти функции проверяют существует ли переменная или нет, если хоть одна форма пустая, то показывается форма отправки, а если форма полностью заполнена то код обрабатывается. Сейчас я полупустую форму отправляю и она обрабатывается...
0
91 / 91 / 23
Регистрация: 02.09.2013
Сообщений: 276
07.09.2013, 19:25
Цитата Сообщение от zilone Посмотреть сообщение
эти функции проверяют существует ли переменная или нет, если хоть одна форма пустая, то показывается форма отправки, а если форма полностью заполнена то код обрабатывается. Сейчас я полупустую форму отправляю и она обрабатывается...
PHP
1
2
3
4
5
6
7
8
if( isset($_POST['ip']) 
    && isset($_POST['login']) 
    && isset($_POST['pass']) 
    && isset($_POST['owner']) 
    && isset($_POST['ns_one']) 
    && isset($_POST['ns_two']) 
    && isset($_POST['config'])
  )
Этим кодом вы проверяете параметры не на пустоту, а на существование. А это разные вещи. Сделайте вот так, и попробуйте:

PHP
1
if ($_POST['ip'] && $_POST['login'] && $_POST['pass']) // ...
1
Заблокирован
07.09.2013, 22:15
ТС, вам ясно сказали - можете использовать в качестве аргументов функции все переменные сразу, через запятую. Вы все равно наделали толпу иссетов.

If multiple parameters are supplied then isset() will return TRUE only if all of the parameters are set. Evaluation goes from left to right and stops as soon as an unset variable is encountered.
http://php.net/manual/en/function.isset.php

Добавлено через 6 минут
Это не самое главное. Откуда вы знаете какие там поля на вашей форме лежат и какие должны быть, а какие могут не быть заполнены?

Даже если вы их вывели не из бд, а из массива, даже если не из массива, а вручную прописали в скрипте где форм-дата, за каким пыхом вновь все перечислять в скрипте где проверяется дата?

Запишите цикл который тупо проверит все поля пропуская те, которые не надо проверять по какому-то переданному признаку. О котором, конечно, надо позаботиться до того как.

Добавлено через 10 минут
Цитата Сообщение от zilone Посмотреть сообщение
если хоть одна форма пустая
Так проверяются только элементы массива которых может не быть из-за того, что соответствующее поле может быть не successfull. Например не нажатая кнопка, не отчекрыженный чек-бокс.

Добавлено через 31 минуту
Преамбула

PHP
1
2
3
4
5
6
7
8
if( isset($_POST['ip']) 
    && isset($_POST['login']) 
    && isset($_POST['pass']) 
    && isset($_POST['owner']) 
    && isset($_POST['ns_one']) 
    && isset($_POST['ns_two']) 
    && isset($_POST['config'])
  )
Амбула. Признаком можно сделать заранее известный контекст. Скажем скрипт предлагает заполнить форму заказа. Значит имя контекста - order. Делаем имена полей в текущем контексте.

Code
1
2
3
name="order[login]";
...
name="order[pass]"
и так далее.

В контрольном скрипте берете элемент массива $_POST['order'] в котором находится массив значения которого можно проверить конкретно на "" вот так:

PHP
1
2
3
$order = $_POST['order'];
$values = array_values($order);
if(in_array("", $values, true) die('Не айс!');
Если айс - юзаете $order в порядке $order['login']; $order['password'] и так далее.

Однако все это очень тупо и неопрятно. Чтобы узнать какое именно поле не заполнено надо проверять отдельно, а может там два, или три, или слишком коротко, или не на том языке, или такое имя уже занято, или такой улицы нет и так далее и так далее.
1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
07.09.2013, 22:41
PHP
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
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
 
$post = array('form' => array('field1'=>'value1','field2'=>'  ','field3'=>'value3')); //$_POST['form']
 
$fields = array(
    'field1'=>array('required'=>true, 'integer'=>true),
    'field2'=>array('required'=>true),
    'field3'=>array(),
);
 
function checkInput($fields, $input, $messages=array())
{
    if(empty($messages))
        $messages = array(
            'empty'=>'Заполните поле "{attribute}"',
            'integer'=>'Поле "{attribute}" должно быть числом',
            'wrongAttribute'=>'Неверный формат поля "{attribute}"',
        );
    $errors = array();
    foreach($fields as $field=>$value)
    {
        if(!isset($input[$field]))
        {
            if(!empty($value['required']))
                $errors[] = strtr( $messages['empty'], array('{attribute}'=>$field) );
        }
        else
        {
            if( !is_scalar($input[$field]) )
            {
                $errors[] = strtr( $messages['wrongAttribute'], array('{attribute}'=>$field) );
                continue;
            }
 
            if( !empty($value['required']) && trim($input[$field]) == '' )
                $errors[] = strtr( $messages['empty'], array('{attribute}'=>$field) );
            if( !empty($value['integer']) && !is_numeric($input[$field]) )
                $errors[] = strtr( $messages['integer'], array('{attribute}'=>$field) );
        }
            
    }
    return !empty($errors) ? $errors : true;
}
 
var_dump( checkInput($fields, $post['form']) );
 
/*
array(2) {
  [0]=>
  string(52) "Поле "field1" должно быть числом"
  [1]=>
  string(36) "Заполните поле "field2""
}
*/
0
Заблокирован
08.09.2013, 06:45
По той же схеме легко передать все атрибуты через имя поля. Было

PHP
1
order['login']
Проверить можно на пустую строку, остальное надо знать заранее, типа именно login не может быть короче 3 символов.

Стало

PHP
1
name = "order[login][s][3]"
Это значит логин - строка, длиной не меньше 3.

Стало быть генеральная проверка на длину не меньше 1 (на "") уже смысла не имеет.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
08.09.2013, 12:56
Цитата Сообщение от sqlnub Посмотреть сообщение
name = "order[login][s][3]"
вот уж это точно не имеет смысла. Во-первых, это лишняя головная боль с параметрами (сами же запутаетесь), во-вторых, никто не помешает мне изменить название поля или попросту удалить его. По вашей схеме получается, что если ты удалил все поля из консоли - то значит все поля необязательные. Задавать надо на стороне сервера, а не клиента
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.09.2013, 12:56
Помогаю со студенческими работами здесь

не работает isset
почему может не работать такая конструкция? &lt;?php if(isset($_POST)) { echo('wdger'); $link =...

не работает isset
Добрый день уважаемые программисты. Помогите с такой проблемой: Есть фома в php странице, в ней есть submit ... &lt;form...

Isset и вложенный if
Приветствую всех. Помогите разобраться. Есть форма ввода поля даты в этом же файле, откуда методом POST получаются значения. ...

Использование isset
Поюзал я поиск, увидел множество сложных примеров и понял, что мне нужна самая база. Так что не прогневайтесь. Поясните, пожалуйста, почему...

Условие isset
Помоги понять, почему не выполняется условие &quot;//Если тема выбрана&quot; ? //Если кнопка &quot;Начать тест&quot; не нажата ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru