2016-04-19 42 views
0

我一直在構建php表單一段時間,並已通過驗證的各個階段。我已經解決了與PHP驗證。然而;我不知道如何殺死腳本或中止提交如果驗證失敗。我原以爲它會像exit()如果驗證失敗,則中止提交php

這是我在的地方;

// condition 
    $cont = ''; 
    $msg = ''; 

// define variables and set to empty values 
$fnameErr = $lnameErr = $titleErr = $emailErr = $dayErr = $monthErr = $timeErr = $chkErr = ""; 
$fnameField = $lnameField = $titleField = $emailField = $daySelect = $monthSelect = $timeSelect = $chk = ""; 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if (empty($_POST["time"])) { 
    $timeErr = "Please select a time from the list"; 
    exit(); 
    } else { 
    $timeSelect = test_input($_POST["time"]); 
    } 

} 
    function test_input($data) { 

    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 

    return $data; 
} 

if (isset($_POST['btn-sub'])) { 
    // code executed on submit 
    $headers = "From: $emailField\r\n"; 
    $headers .= "Content-type: text/html\r\n"; 
    $success = mail($emailAcc, $emailSub, $body, $headers); 

    if(!$success) { 
    $cont = "<b>Fatal Error:</b> Mail was not sent successfully."; 
    exit(); 
    } else { 
    $cont = "Success! Thank you! <br/> We'll see you there..."; 
    $msg = "Someone will be in touch with you shortly to confirm your details. Please check the supplied informaiton is correct below;"; 
    } 
} else { 
    // code executed on first request 
} 

任何推動我可以得到正確的方向將有很大的幫助。

注意: 我只包括我的一個驗證,以保持帖子更緊湊一點。

**在聊天中回覆** 我自己的愚蠢導致了這個問題。 (我只是設置變量,如果他們沒有被調用,腳本將永遠不會達到exit();感謝所有的屁股。

+1

您可以使用出口();或死亡();,都將停止此刻的腳本的執行,他們被稱爲唯一的原因,該腳本不會 –

+0

爲什麼它不能到達'exit();'變量'$ timeErr'被調用的很好,不應該'exit();'那麼下一個呢? – Beaniie

+1

我不明白你被稱爲變量的變量意味着什麼。你當前的代碼不會在任何地方輸出$ timeErr,所以你怎麼知道它是否被調用。儘管如此,試一下簡單。添加echo「test」; exit();在你的代碼的頂部,在這種情況下你的腳本應該只輸出測試,而不會做其他事情。 –

回答

1

我已經試過它與退出()或與死(),他們都工作正常這是我的代碼片段:

if ($_SERVER["REQUEST_METHOD"] == "POST") 
{ 
    //validate post variable != empty 
    if (empty($_POST['name'])|| empty($_POST['lastname'])|| empty($_POST['email'])|| empty($_POST['phone']) ||empty($_POST['cellphone']) ||empty($_POST['dir'])) 
    { 
    $response = json_encode(array("error" => "true","message" => "Error, please fill all the form data")); 
    echo $response; 
    exit(); 
}else{ 
    . 
    . 
    . 
} 

}