2016-04-15 63 views
0

我需要幫助來擴展我的PHP腳本。我需要填寫表格中的必填字段和驗證電子郵件字段。使用必填字段和驗證擴展PHP表格

這是我的代碼,我試過使用不同的if和echo代碼,但是沒有任何工作在這個範圍內。

<?php 

$email = $_POST['email']; 
$from = $email; 

$to = "[email protected]"; 
$subject = "SIGN UP"; 

$emailbody = ""; 
$emailbody .= "Email: " . $email . "\n"; 

$header = ""; 
$header .= "From:" . $from . " \n"; 
$header .= "Content-Type:text/plain;charset=utf-8"; 

// Sending message 
$success = mail($to, $subject, $emailbody, $header); 

if ($success){ 
print "<meta http-equiv=\"refresh\" content=\"0;URL=confirmation_signup.html\">"; 
} 
else{ 
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">"; 
} 
?> 

該代碼工作,電子郵件獲得交付,但如果字段未填寫,表單應該是不成功的。

+0

我的答案對您有幫助嗎? – Hassaan

回答

0

看來,電子郵件是你從POST收集的唯一的事,所以只是檢查,如果這是empty第一和validate it

<?php 

if(!empty($_POST['email']) && (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false)){ 

    $email = $_POST['email']; 
    $from = $email; 

    $to = "[email protected]"; 
    $subject = "SIGN UP"; 

    $emailbody = ""; 
    $emailbody .= "Email: " . $email . "\n"; 

    $header = ""; 
    $header .= "From:" . $from . " \n"; 
    $header .= "Content-Type:text/plain;charset=utf-8"; 

    // Sending message 
    $success = mail($to, $subject, $emailbody, $header); 

    if ($success){ 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=confirmation_signup.html\">"; 
    } 
    else{ 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">"; 
    } 
} 
else echo "email required"; 
?> 

,射在服務器之前,你可以幫助你的用戶首先做一些客戶端驗證,以確保input is an emailis required

0

您可以查看電子郵件字段不爲空,然後您可以使用filter_var來驗證提供的電子郵件。

下面是一個例子

<?php 
if(!empty($_POST['email']) && (!filter_var($email, FILTER_VALIDATE_EMAIL) === false)) 
{ 
    $email = $_POST['email']; 
    $from = $email; 

    $to = "[email protected]"; 
    $subject = "SIGN UP"; 

    $emailbody = ""; 
    $emailbody .= "Email: " . $email . "\n"; 

    $header = ""; 
    $header .= "From:" . $from . " \n"; 
    $header .= "Content-Type:text/plain;charset=utf-8"; 

    // Sending message 
    $success = mail($to, $subject, $emailbody, $header); 

    if ($success) 
    { 
     print "<meta http-equiv=\"refresh\" content=\"0;URL=confirmation_signup.html\">"; 
    } 
    else 
    { 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">"; 
    } 
} 
else print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">"; 
?> 
+0

這對我有用!謝謝!但我有另一個問題 - 也許你也有解決方案... –

+0

@DietrichMöller這是什麼? – Hassaan

0

問題是固定的,但另一個問題出現了。 html表單不能正確發送郵件。我試了六個郵箱地址。如果有人提交表格,郵件有時會發送給另一個 - 有時會發送給另一個 - 有時甚至沒有地址。我聽說過不要使用普通的mail()命令。有人能告訴我這個嗎?

<?php 
if(!empty($_POST['email']) && !empty($_POST['name']) && !empty($_POST['message']) && (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false)){ 

$name = $_POST['name']; 
$email = $_POST['email']; 
$message = $_POST['message']; 
$from = $email; 
$to = "[email protected]"; 
$subject = "SUPPORT"; 

$emailbody = ""; 
$emailbody .= "Full name: " . $name . "\n"; 
$emailbody .= "Email: " . $email . "\n"; 
$emailbody .= "Message: " . $message . "\n"; 

$header = ""; 
$header .= "From:" . $from . " \n"; 
$header .= "Content-Type:text/plain;charset=utf-8"; 

$success = mail($to, $subject, $emailbody, $header); 

if ($success){ 
print "<meta http-equiv=\"refresh\" content=\"0;URL=de/confirmation.html\">"; 
} 
else{ 
print "<meta http-equiv=\"refresh\" content=\"0;URL=de/error.html\">"; 
} 
} 
else print "<meta http-equiv=\"refresh\" content=\"0;URL=de/error.html\">"; 
?>