2016-08-08 19 views
1

Ich verwende isset, um zu überprüfen, ob eine Variable gesetzt ist und nicht null, dann verarbeite ich es (z. B. per E-Mail oder an eine Google-Tabelle). Manchmal erhalte ich leere Ergebnisse, etwa wenn die Variable leer oder leer ist, nicht einmal ein leerer Bereich. Warum passiert dies? Fehle ich etwas?Überprüfen, ob Variable gesetzt ist, nicht null und nicht leer

if(isset($_POST["name"]) && isset($_POST["phone"])){ 
      $name = $_POST["name"]; 
      $phone = $_POST["phone"]; 
      $message="Nom: $name \nPhone: $phone \n"; 

      require 'PHPMailer/PHPMailerAutoload.php'; 
      $mail = new PHPMailer; 
      $mail->setFrom('[email protected]', 'Name From'); 
      $mail->addAddress('[email protected]', 'Name To'); 
      $mail->Subject = 'Subject'; 
      $mail->Body  = $message; 
     } 
+0

Wenn die Variable leer ist, aber 'isset' gesetzt wird, wird true zurückgegeben. Überprüfen Sie es mit 'isset ($ _ POST [" name "]) && leer ($ _ POST [" name "])'. – csabinho

+0

http://kunststube.net/isset/ – Ghost

+0

wenn '$ a =" ";' dann 'isset ($ a);' wird "' true "sein ' isset' ist keine gute Funktion, um eine leere Zeichenkette zu unterscheiden – MiKeNeko

Antwort

1

!empty($_POST["name"]) Überprüfen Sie, ob die Variable einen Wert hat. Wenn ein Name nicht leer ist, fahren Sie mit anderem Code fort.

if(isset($_POST["name"]) && !empty($_POST["name"]) && isset($_POST["phone"]) !empty($_POST["phone"])){ 
     $name = $_POST["name"]; 
     $phone = $_POST["phone"]; 
     $message="Nom: $name \nPhone: $phone \n"; 

     require 'PHPMailer/PHPMailerAutoload.php'; 
     $mail = new PHPMailer; 
     $mail->setFrom('[email protected]', 'Name From'); 
     $mail->addAddress('[email protected]', 'Name To'); 
     $mail->Subject = 'Subject'; 
     $mail->Body  = $message; 
    } 

eine weitere Option

if($_POST["name"] != "") 

, wenn die Variable eine leere Zeichenfolge innerhalb der den Code, wenn nicht vorgegangen.

Zusätzliche referenz In where shall I use isset() and !empty()

0

isset() gibt TRUE zurück, wenn var existiert und anderen Wert als NULL, ansonsten FALSE.

Beispiel: $ var = "";

isset ($ var) gibt true zurück;

Ich empfehle die Verwendung von! Empty() anstelle von isset().

1

Die beiden in den vorangegangenen Antworten geäußerten Gefühle, ich würde feststellen, dass "die immer hilfreiche PHP-Sprache eine Varietät von Funktionen bietet, die versuchen, in verschiedenen Situationen hilfreich zu sein." Aber diese "verschiedenen Situationen" können ganz anders sein! So "eine Größe" passt nicht "alle". Wenn Sie beispielsweise mit einem HTTP-GET/POST-Datenstrom arbeiten, sollte Ihre erste Bestellung sein, ob der Web-Client eine bestimmte Variable in seiner Antwort bereitgestellt hat. Wenn Sie feststellen, dass es tat, dann sollten Sie danach behandeln, was es ist: "eine Zeichenkette." Gehe geradeaus, dann (IMHO ...) zu Jees Dennys "andere Option", um zu testen, ob diese Zeichenfolge leer ist.

Tests für "NULL", auf der anderen Seite, sollte nur für die Ergebnisse von Datenbankabfragen gelten. In diesem Fall wissen Sie, dass ein Wert vom SQL-Server zur Verfügung gestellt wurde, da Sie wissen, dass der Server einen Wert für jede Spalte bereitstellen, die Sie anfordern. In dieser Fall möchten Sie zunächst wissen, ob dieser Wert NULL ist oder nicht. (welcher Wert, kindlynote „ist nicht die gleichen wie‚eine leere Zeichenfolge.‘“)

Deshalb, auch wenn die PHP-Sprache viele „scheinbar-sehr-ähnliche Funktionen, von denen alle liefern Sie Natürlich kann man verwenden, "Sie sollten es einen Punkt nur machen, diejenigen zu verwenden, die am engsten mit der tatsächlichen Situation verbunden sind, von der Sie wissen, dass Sie es zu tun haben.