Frage Überprüfen Sie, ob $ _POST existiert


Ich versuche zu überprüfen, ob ein $ _POST vorhanden ist, und wenn dies der Fall ist, drucken Sie es in eine andere Zeichenfolge, wenn nicht, drucken Sie überhaupt nicht.

etwas wie das:

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

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

$newString = fromPerson();

Jede Hilfe wäre großartig!


74
2017-08-16 20:15


Ursprung


Antworten:


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

129
2017-08-16 20:29



Einfach. Sie haben zwei Möglichkeiten:

1. Überprüfen Sie, ob überhaupt Post-Daten vorhanden sind

//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;
}

(ODER)

2. Prüfen Sie nur, ob in den Postdaten ein BESONDERER Schlüssel verfügbar ist

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

42
2017-10-06 18:33



Alle sagen, dass Sie isset () benutzen - was wahrscheinlich für Sie funktioniert.

Es ist jedoch wichtig, dass Sie den Unterschied zwischen

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

isset($_POST['x']) wird zurückkehren false im ersten Beispiel, wird aber zurückkehren true auf der zweiten, obwohl, wenn Sie versuchten, einen zu drucken, beide einen leeren Wert zurückgeben würden.

Wenn dein $_POST kommt von einem Benutzer eingegebenen Feld / Formular und ist leer gelassen, ich glaube (ich bin nicht 100% sicher, aber das), dass der Wert wird "" aber nicht Null.

Selbst wenn diese Annahme falsch ist (jemand korrigiert mich bitte, wenn ich falsch liege!), Das oben genannte ist immer noch gut für zukünftige Verwendung zu wissen.


30
2017-08-16 21:15



Überrascht wurde es nicht erwähnt

if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['fromPerson'])){

23
2018-02-18 08:45



isset($_POST['fromPerson']) 

17
2017-08-16 20:16



  • In diesem Fall mit Methode isset Ist nicht angemessen.

Laut PHP-Dokumentation: http://php.net/manual/en/function.array-key-exists.php
(Siehe Beispiel 2 array_key_exists () vs isset ())
Die Methode array_key_exists dient zur Überprüfung der Schlüsselpräsenz im Array.

So könnte Code in der Frage wie folgt geändert werden:

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

$newString = fromPerson();


  • Das Vorhandensein des Arrays $ _POST zu überprüfen, ist nicht notwendig, da es sich um eine globale Variable der PHP-Umgebung seit der Version 4.1.0 handelt (heutzutage treffen wir die älteren Versionen von PHP nicht mehr).

8
2017-07-19 10:12



Die richtige Art zu überprüfen, ob ein Array-Schlüssel existiert, ist die Funktion array_key_exists()

Der Unterschied ist, dass wenn du hast $_POST['variable'] = null Es bedeutet, dass der Schlüssel existiert und gesendet wurde, aber der Wert null war

Die andere Option ist isset() was überprüft, ob der Array-Schlüssel existiert und ob er gesetzt wurde

Die letzte Option ist zu verwenden empty() Das prüft, ob der Array-Schlüssel existiert, wenn er gesetzt ist und ob der Wert nicht leer ist.

Beispiele:

$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

Was Ihre Frage betrifft

Der richtige Weg, um zu überprüfen, ob der Wert gesendet wurde, ist die Verwendung von array_key_exists () mit Überprüfung der Anfrage-Methode

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

Aber es gibt einige Fälle, die von Ihrer Logik abhängen isset() und empty() kann auch gut sein.


8
2018-04-13 13:03



Alle Methoden sind eigentlich abgeraten, es ist eine Warnung in Netbeans 7.4 und es ist sicherlich eine gute Praxis nicht auf superglobale Variablen direkt zugreifen, verwenden Sie eine Filter stattdessen

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

5
2017-12-05 08:43



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


2
2017-08-16 20:17



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

2
2017-08-16 20:25



Versuchen

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

2
2017-09-02 17:53