Vérifiez si $ POST existe

J'essaie de vérifier si un $_POST existe et si c'est le cas, imprimez-le dans une autre chaîne, sinon, n'imprimez pas du tout.

Quelque Chose comme ceci:

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

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

$newString = fromPerson();

Toute aide serait géniale!

77
php
demandé sur eliwedel 2010-08-17 00:15:49

13 réponses

if( isset($_POST['fromPerson']) )
{
     $fromPerson = '+from%3A'.$_POST['fromPerson'];
     echo $fromPerson;
}
135
répondu ehmad 2010-08-16 20:29:35

Simple. Vous avez deux choix:

1. Vérifiez s'il y a des données 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;
}

(ou)

2. Vérifiez uniquement si une clé particulière est disponible dans POST data

if (isset($_POST['fromPerson']) )
{
    $fromPerson = '+from%3A'.$_POST['fromPerson'];
    echo $fromPerson;
}
44
répondu Dheeraj Bhaskar 2015-10-28 17:59:40

Tout le monde dit d'utiliser isset() - ce qui fonctionnera probablement pour vous.

Cependant, il est important que vous compreniez la différence entre

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

isset($_POST['x']) retournera false sur le premier exemple, mais retournera true sur le second même si si vous avez essayé d'imprimer l'un ou l'autre, les deux retourneront une valeur vide.

Si votre $_POST provient d'un champ/formulaire entré par l'utilisateur et est laissé vide, je crois (Je ne suis pas sûr à 100% à ce sujet) que la valeur sera "" mais pas NULL.

Même si cette hypothèse est incorrecte (quelqu'un s'il vous plait corrigez-moi si je me trompe!) ce qui précède est toujours bon à savoir pour une utilisation future.

30
répondu Rafael 2011-07-01 08:07:17

Surpris qu'il n'a pas été mentionné

if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['fromPerson'])){
23
répondu John Magnolia 2015-06-10 08:50:00
isset($_POST['fromPerson']) 
17
répondu h3xStream 2011-09-04 03:54:24
  • dans ce cas, l'utilisation de la méthode isset n'est pas appropriée.

Selon la documentation PHP: http://php.net/manual/en/function.array-key-exists.php
(voir l'Exemple #2 array_key_exists() vs isset())
La méthode array_key_exists est destinée à vérifier la présence de clé dans le tableau.

Donc, le code dans la question pourrait être changé comme suit:

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

$newString = fromPerson();


  • Vérifier la présence du tableau $_POST n'est pas nécessaire car C'est PHP environnement variable globale depuis la version 4.1.0 (de nos jours, nous ne rencontrons pas les anciennes versions de PHP).
8
répondu Bronek 2012-07-19 10:12:20

La bonne façon de vérifier si la clé de tableau existe est function array_key_exists()

La différence est que lorsque vous avez $_POST['variable'] = null cela signifie que la clé existe et a été envoyée mais que la valeur était null

L'autre option est isset() qui vérifiera si la clé de tableau existe et si elle a été définie

La dernière option consiste à utiliser empty() qui vérifiera si la clé du tableau existe si est définie et si la valeur n'est pas considérée comme vide.

Exemples:

$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

Concernant votre question

La bonne façon pour vérifier si la valeur a été envoyée, utilisez array_key_exists() avec la vérification de la méthode request

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

, Mais il y a certains cas dépend de votre logique où isset() et empty() peut être bien aussi.

8
répondu Robert 2016-04-13 13:03:07

, Toutes les méthodes sont réellement découragé, c'est un avertissement dans Netbeans 7.4 et c'est sûrement une bonne pratique de ne pas l'accès superglobale variables directement, utiliser un filtre au lieu

$fromPerson = filter_input(INPUT_POST, 'fromPerson', FILTER_DEFAULT);
if($fromPerson === NULL) { /*$fromPerson is not present*/ }
else{ /*present*/ }
var_dump($fromPerson);exit(0);
5
répondu linuxatico 2013-12-05 08:43:12

Essayez

if (isset($_POST['fromPerson']) && $_POST['fromPerson'] != "") {
    echo "Cool";
}
3
répondu Augustus Francis 2014-07-30 03:18:10

Essayer isset($_POST['fromPerson'])?

2
répondu strager 2010-08-16 20:17:10
if (is_array($_POST) && array_key_exists('fromPerson', $_POST)) {
    echo 'blah' . $_POST['fromPerson'];
}
2
répondu jezmck 2011-02-10 09:06:58

if( isset($_POST['fromPerson']) ) c'est vrai.

Vous pouvez utiliser une fonction et retourner, mieux que diriger l'écho.

1
répondu Cristian Weiser 2014-07-14 13:51:22

J'aime vérifier s'il est défini et s'il est vide dans un opérateur ternaire.

// 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;
0
répondu Raymondim 2016-07-03 18:15:30