我一直在四处寻找并且没有找到一种简单的方法来编辑这段代码,这样当用户没有在必填字段中输入任何内容(需要所有字段)时,会显示一条警告请用户输入内容。
有人可以帮忙吗?
<?php
$field_name = $_POST['name'];
$field_email = $_POST['email'];
$field_message = $_POST['message'];
$mail_to = 'you@yourdomain.com';
$subject = 'Site Mail';
$body_message = 'From: '.$field_name."\n";
$body_message .= 'Email: '.$field_email."\n";
$body_message .= 'Message: '.$field_message;
$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";
$mail_status = mail($mail_to, $subject, $body_message, $headers);
if ($mail_status) { ?>
<script language="javascript" type="text/javascript">
alert('Thanks! Your email has been sent.');
window.location = 'index.html';
</script>
<?php
}
else { ?>
<script language="javascript" type="text/javascript">
alert('Sorry, something went wrong.');
window.location = 'index.html';
</script>
<?php
}
?>
答案 0 :(得分:1)
答案 1 :(得分:0)
<强> PHP 强>
<?php
$fields = array([0]=>$field_name,[1]=>$field_email,[2]=>$field_message);
foreach($fields as $field){
if !$field{
echo "Please enter a value.";
}
}
?>
或者,你可以使用javascript验证,它看起来像这样:
<script>
function formValid(){
var valid = true;
var fields = getElementByTag(input);
for (var i;i>=fields.length;i++){
if (!fields[i]){
getElementById('warning').style.display='inline'; // assuming the error message element is called 'warning'
getElementById('valid').value=1; // assuming we have an input that will indicate to the php code whether the form is validated
}
}
}
</script>
对于这个脚本,我们将添加到form-action php块的开头:
if(isset($_POST['submit'])&&$_POST['valid']!=1){
// form action code goes here
}
答案 2 :(得分:0)
使用如下代码: -
$('.required').each(function(){
if($(this).val()=="")
{
alert("error");
}
});
答案 3 :(得分:0)
检查必填字段的最常用方法是在客户端(通知用户)和服务器端(在发送数据之前检查数据是否合法)。
在客户端,在提交表单的位置,我们应该检查字段是否正确并要求用户修复错误。有许多很棒的帮助程序库可以执行此操作,一些更常见的库http://parsleyjs.org/和http://jqueryvalidation.org/都使用jQuery并且有简单的示例可以开始。
在服务器端,正如一些评论者指出的那样,您当前的脚本容易受到标头注入和其他令人讨厌的东西的攻击。您可能希望切换到使用swiftmailer等库,这样可以防止发生很多不好的事情。以下是如何发送电子邮件http://swiftmailer.org/docs/sending.html
的一个非常简单的示例要向您添加服务器端验证示例,因为简单的方法是在调用$_POST['name'];
之前检查$mailer->send($message);
的值