2016-04-15 64 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\">"; 
?>