2016-07-29 11 views
0

Ich habe ein Formular, wo E-Mail optional ist. Um das zu kontrollieren, gibt es ein Kontrollkästchen. Wenn dieses Kontrollkästchen deaktiviert ist, wird das E-Mail-Textfeld deaktiviert und daher nicht beim Senden bereitgestellt. Wenn ich jedoch auf der nächsten Seite einen Code wie den folgenden habe, erhalte ich einen Fehler, wenn das E-Mail-Textfeld deaktiviert ist.Wie sehen, wenn ein Formularelement nicht gebucht wurde

if (isset($_POST['submit'])) 
{ 
    $_SESSION["email"]  = $_REQUEST['YourEMail']; 
    .... 
} 

Um dieses Problem zu umgehen, ich progammatically eine deaktivierte E-Mail Textbox ermöglichen, kurz bevor neben der Einreichung seinen Wert auf einen leeren String zu setzen. Der Code dafür ist unten gezeigt.

document.getElementById('YourEMail').disabled = false 
document.getElementById('YourEMail').value = '' 

, jedoch ein ärgerliches Problem bleibt, das ist, dass, wenn der Benutzer auf die ursprüngliche Seite zurückgeht, wird die E-Mail-Textfeld aktiviert ist, da ich es vor Absenden des Formulars problematically gerade aktiviert ist. Ich möchte jedoch, dass es in diesem Fall deaktiviert ist. Wie kann ich das erreichen? Alternativ, wie auf der nächsten Seite, konnte ich sehen, dass die E-Mail-Box deaktiviert war und daher nicht versuchen, $_REQUEST['YourEmail'] zu lesen?

+0

Überprüfen Sie, ob '$ _REQUEST ['YourEMail']' gesetzt ist, bevor Sie versuchen, darauf zuzugreifen. – chris85

+0

Das war genau meine Frage. Wie kann ich das machen? – pythonic

+0

Sie können eine 'isset' oder' leere' Prüfung verwenden. Beide werden keine Nachrichten werfen. – chris85

Antwort

4

Wenn das Feld "#YourEMail" optional ist, können Sie prüfen, ob es in PHP existiert. Es ist nicht erforderlich, das Feld mit JS zu aktivieren/deaktivieren.

if (isset($_POST['submit'])) 
{ 
    if (isset($_REQUEST['YourEMail']) && !empty($_REQUEST['YourEMail'])){ 
     $_SESSION["email"] = $_REQUEST['YourEMail']; 
    } 
} 
+0

! Leer ($ _ REQUEST ['YourEMail'] ist genug für diese Überprüfung: [link] (http://php.net/manual/en/function.empty.php) – jaro1989

1

Sie können es wie folgt testen ein ternäres mit:

(isset($_REQUEST['YourEMail']) && !empty($_REQUEST['YourEMail'])) ? $_SESSION["email"] = $_REQUEST['YourEMail'] : FALSE; 

Dies würde nur die Session-Variable gesetzt, wenn die Anforderung variabel eingestellt ist.

+0

Niemals ein ternäres verwenden, wenn das "else" keinen Sinn ergibt. Verwenden Sie einfach 'if' – 4castle

+0

Welchen Teil des Zurückgebens eines FALSE macht @ 4castle keinen Sinn? –

+0

Es ist völlig willkürlich, weil es nichts zugewiesen ist. Es schwimmt einfach da draußen. – 4castle