Мне нужно проверить, если множество элементов установлено и не пусто в PHP - PullRequest
1 голос
/ 17 января 2010

Ниже приведен фрагмент PHP, который мне нужен для работы, мне нужно убедиться, что 3 элемента еще не установлены и не === ''

У меня есть часть, чтобы проверить это, если не установлено, но когда я пытаюсь увидеть, являются ли значения также пустыми (я, возможно, даже не думаю, что прямо сейчас, мне, возможно, не нужно делать все это) Но мне нужно чтобы убедиться, что redirect, login_name и password все еще не установлены в значение, если они установлены в значение, мне нужно убедиться, что значение не пустое.

Может ли кто-нибудь помочь, когда я добавляю проверку, чтобы увидеть, являются ли значения пустыми, я получаю ошибки с моим синтаксисом, а также не уверен, что у меня должно быть 5-6 проверок, подобных этой, в 1 блоке if / else, пожалуйста, помогите

Мне нужно проверить следующее:
- $ _GET ['redirect'] не установлен
- $ _REQUEST ['login_name'] не установлено
- $ _REQUEST ['login_name'] не равно! = To ''
- $ _REQUEST ['пароль'] не установлено
- $ _REQUEST ['password'] не равно! = To ''

if (!isset($_GET['redirect']) && (!isset($_REQUEST['login_name'])) && (!isset($_REQUEST['password']))){
    //do stuff
}



ОБНОВЛЕНИЕ

Извините. Не очень понятно, я был немного смущен этим. Основываясь на ответе Хободавеса, я смог изменить его и заставить его работать так, как мне нужно. Ниже приведен код, как мне это нужно, он отлично работает вот так ... Так что, если это можно улучшить, то это та функциональность, которая мне нужна, я только что проверил это

if (!isset($_GET['redirect']) 
    && empty($_GET['redirect'])
    && isset($_REQUEST['login_name'])
    && !empty($_REQUEST['login_name'])
    && isset($_REQUEST['password'])
    && !empty($_REQUEST['password'])
) {
    echo 'load user';
}

если он был загружен, то он запустит процесс входа в систему

login.php?login_name=test&password=testing

Если он загружен, он НЕ будет запускать процесс входа в систему

login.php?login_name=test&password=  

Ответы [ 4 ]

4 голосов
/ 17 января 2010
if (!isset($_GET['redirect']) 
    && !isset($_REQUEST['login_name'])
    && empty($_REQUEST['login_name'])
    && !isset($_REQUEST['password'])
    && empty($_REQUEST['password'])
) {
    // do stuff
}

Это точно то, что вы описываете (не! = Пусто === пусто). Я думаю, что вы должны отредактировать свой вопрос, чтобы объяснить, что вы делаете, поэтому мы можем предложить лучшие альтернативы.

Edit:

Ваш обновленный вопрос может быть упрощен как:

if (empty($_GET['redirect'])
    && !empty($_REQUEST['login_name'])
    && !empty($_REQUEST['password'])
} {
    // load user
}
2 голосов
/ 17 января 2010

Более приемлемым решением будет сохранение каждого ключа в массиве, а затем указание над ним и проверка, установлен ли он или пуст. Вы не очень СУХОЕ с вашим текущим решением.

Реализация будет выглядеть примерно так:

<?php
$keys = array('login_name', 'password');

foreach($keys as $key)
{
   if(!isset($_REQUEST[$key]) || empty($_REQUEST['key'])
      // Show error message, kill script etc.
}


// Dot stuff

?>
1 голос
/ 17 января 2010

Если глобальная переменная не задана, это то же самое, что и пустая. Таким образом:

!is_set(($_REQUEST['username'])) совпадает с empty($_REQUEST['username'])

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

if (empty($_GET['redirect'])
    && !empty($_REQUEST['login_name'])
    && !empty($_REQUEST['password'])
) {
    echo 'load user';
}

пожалуйста, прочитайте!

Извините, предыдущий ответ, который я дал, не даст вам того, что вы хотите. Вот почему:

Если вы используете !_REQUEST['password'], он вернет true, если пароль пуст или не установлен. Однако , если вы используете if($_REQUEST['password']), он будет проходить условное выражение в любое время, когда установлена ​​глобальная переменная, даже если она пуста.

Поэтому я рекомендую:

$no_redirect = (!$_GET['redirect']);
$login_name = (!$_REQUEST['login_name']) ? false : true;
$password = (!$_REQUEST['login_name']) ? false : true;

if($no_redirect && $login_name && $password) {
    echo 'load user';
}

Извините за ранее неверную информацию.

0 голосов
/ 17 января 2010

Вы можете создать массив

$array = array(
               $_GET['redirect'], 
               $_GET['redirect'],
               $_REQUEST['login_name'],
               $_REQUEST['login_name'],
               $_REQUEST['password'],
               $_REQUEST['password']
);

foreach($array as $stuf)
{
   if(!empty($stuff) && $tuff !=0) 
      //do something
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...