Проверьте, существует ли $ POST



Я пытаюсь проверить, существует ли $_POST, и если это так, распечатайте его внутри другой строки, если нет, не печатайте вообще.



что-то вроде этого:



$fromPerson = '+from%3A'.$_POST['fromPerson'];

function fromPerson() {
if !($_POST['fromPerson']) {
print ''
} else {
print $fromPerson
};
}

$newString = fromPerson();


любая помощь будет здорово!

400   13  
PHP

13 ответов:

if( isset($_POST['fromPerson']) )
{
     $fromPerson = '+from%3A'.$_POST['fromPerson'];
     echo $fromPerson;
}

простой. У вас есть два варианта:

1. Проверьте, есть ли вообще какие-либо данные post

//Note: This resolves as true even if all $_POST values are empty strings
if (!empty($_POST))
{
    // handle post data
    $fromPerson = '+from%3A'.$_POST['fromPerson'];
    echo $fromPerson;
}

(или)

2. Только проверьте, доступен ли конкретный ключ в post data

if (isset($_POST['fromPerson']) )
{
    $fromPerson = '+from%3A'.$_POST['fromPerson'];
    echo $fromPerson;
}

все говорят, чтобы использовать isset () - который, вероятно, будет работать для вас.

однако, важно, что вы понимаете разницу между

$_POST['x'] = NULL; и $_POST['x'] = '';

isset($_POST['x']) вернутся false на первом примере, но вернется true на втором, даже если вы попытаетесь распечатать любой из них, оба вернут пустое значение.

если $_POST исходит из введенного пользователем поля / формы и остается пустым, I Поверьте (я не уверен на 100% в этом, хотя), что значение будет"", но не NULL.

даже если это предположение неверно (кто-то пожалуйста, поправьте меня, если я ошибаюсь!) выше все еще хорошо знать для будущего использования.

удивлен, что это не было упомянуто

if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['fromPerson'])){
isset($_POST['fromPerson']) 
  • в этом случае с помощью метода isset не подходит.

согласно документации PHP:http://php.net/manual/en/function.array-key-exists.php
(см. Пример #2 array_key_exists () vs isset ())
Метод array_key_exists предназначен для проверки наличия ключа в массиве.

поэтому код в вопросе может быть изменен следующим образом:

function fromPerson() {
   if (array_key_exists('fromPerson', $_POST) == FALSE) {
        return '';
   } else {
        return '+from%3A'.$_POST['fromPerson'];
   };
}

$newString = fromPerson();


  • проверка наличие массива $_POST не обязательно, потому что это глобальная переменная среды PHP начиная с версии 4.1.0 (в настоящее время мы не встречаем более старых версий PHP).

правильный способ проверки наличия ключа массива-это функция array_key_exists()

разница в том, что когда у вас есть $_POST['variable'] = null это означает, что ключ существует и послать, но значение было null

другой вариант-это isset() который будет проверять, существует ли ключ массива, и если он был установлен

последний вариант-использовать empty() который будет проверять, существует ли ключ массива, если он установлен, и если значение не учитывается пустой.

примеры:

$arr = [
  'a' => null,
  'b' => '',
  'c' => 1
];

array_key_exists('a', $arr); // true
isset($arr['a']); // false
empty($arr['a']); // true


array_key_exists('b', $arr); // true
isset($arr['b']); // true
empty($arr['b']); // true


array_key_exists('c', $arr); // true
isset($arr['c']); // true
empty($arr['c']); // false

Что касается вашего вопроса

правильный способ проверить, было ли значение send-использовать array_key_exists () с проверкой метода запроса

if ($_SERVER['REQUEST_METHOD'] == 'POST' && array_key_exists('fromPerson', $_POST)    
{
   // logic
}

но есть некоторые случаи, зависит от вашей логики, где isset() и empty() может быть хорошо, как хорошо.

все методы на самом деле не рекомендуется, это предупреждение в Netbeans 7.4, и это, безусловно, хорошая практика, чтобы не обращаться к суперглобальным переменным напрямую, используйте фильтр

$fromPerson = filter_input(INPUT_POST, 'fromPerson', FILTER_DEFAULT);
if($fromPerson === NULL) { /*$fromPerson is not present*/ }
else{ /*present*/ }
var_dump($fromPerson);exit(0);

попробовать

if (isset($_POST['fromPerson']) && $_POST['fromPerson'] != "") {
    echo "Cool";
}

попробовать isset($_POST['fromPerson'])?

if (is_array($_POST) && array_key_exists('fromPerson', $_POST)) {
    echo 'blah' . $_POST['fromPerson'];
}

if( isset($_POST['fromPerson']) ) прав.

вы можете использовать функцию и возврат, лучше, чем направляя Эхо.

Мне нравится проверять, если он isset и если он пуст в тернарном операторе.

// POST variable check
$userID  = (isset( $_POST['userID'] )    && !empty( $_POST['userID'] ))   ? $_POST['userID']   :  null;
$line    = (isset( $_POST['line'] )      && !empty( $_POST['line'] ))     ? $_POST['line']     :  null;
$message = (isset( $_POST['message'] )   && !empty( $_POST['message'] ))  ? $_POST['message']  :  null;
$source  = (isset( $_POST['source'] )    && !empty( $_POST['source'] ))   ? $_POST['source']   :  null;
$version = (isset( $_POST['version'] )   && !empty( $_POST['version'] ))  ? $_POST['version']  :  null;
$release = (isset( $_POST['release'] )   && !empty( $_POST['release'] ))  ? $_POST['release']  :  null;

Comments

    Ничего не найдено.