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!
13 réponses
if( isset($_POST['fromPerson']) )
{
$fromPerson = '+from%3A'.$_POST['fromPerson'];
echo $fromPerson;
}
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;
}
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.
Surpris qu'il n'a pas été mentionné
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['fromPerson'])){
- 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).
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.
, 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);
Essayez
if (isset($_POST['fromPerson']) && $_POST['fromPerson'] != "") {
echo "Cool";
}
if (is_array($_POST) && array_key_exists('fromPerson', $_POST)) {
echo 'blah' . $_POST['fromPerson'];
}
if( isset($_POST['fromPerson']) )
c'est vrai.
Vous pouvez utiliser une fonction et retourner, mieux que diriger l'écho.
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;