Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax联系人表单上的PHP验证失败_Php_Forms_Validation_Ajaxform - Fatal编程技术网

Ajax联系人表单上的PHP验证失败

Ajax联系人表单上的PHP验证失败,php,forms,validation,ajaxform,Php,Forms,Validation,Ajaxform,我是个PHP黑客。洞察是非常感激的,因为它将帮助我找出哪里出了错 基本上我是为了自己的目的而改编的。Javascript验证非常有效!看起来php验证也在正常工作。直到我开始从自己的表格中获得空白提交。我试图避免在表单中添加验证码。空白提交是恼人的,我会喜欢它,如果有人可以指出,如果我在我的适应错误。谢谢你抽出时间 表单HTML <?php include('/ajax/verify.php');?> <form action="/ajax/" meth

我是个PHP黑客。洞察是非常感激的,因为它将帮助我找出哪里出了错

基本上我是为了自己的目的而改编的。Javascript验证非常有效!看起来php验证也在正常工作。直到我开始从自己的表格中获得空白提交。我试图避免在表单中添加验证码。空白提交是恼人的,我会喜欢它,如果有人可以指出,如果我在我的适应错误。谢谢你抽出时间

表单HTML

<?php include('/ajax/verify.php');?>
            <form action="/ajax/" method="post" id="sendEmail">

                <h4>Contact Us</h4>
                <p class="alert">* All fields are required</p>
                <ol class="forms">
                    <li><label for="username">Your Name</label><input type="text" name="username" id="username" value="" /></li>
                    <li><label for="emailFrom">Your Email</label><input type="text" name="emailFrom" id="emailFrom" value="" /></li>
                    <li><label for="phonenumber">Phone Number</label><input type="text" name="phonenumber" id="phonenumber" value="" /></li>
                    <li><label for="message">Message</label><textarea name="message" id="message"></textarea></li>
                    <li class="buttons"><button type="submit" id="submit">Send Email &raquo;</button><input type="hidden" name="submitted" id="submitted" value="true" /></li>
                </ol>
            </form>
}

邮件脚本

$mailTo = 'redacted@emailaddress.com';
$mailFrom = $_POST['emailFrom'];
$username = $_POST['username'];
$phonenumber = $_POST['phonenumber'];
$subject = "New website inquiry from $username";
$message = $_POST['message'];
$message = wordwrap($message, 70);
$messagebody = "From: $username  Phone Number: $phonenumber $message"; 

mail($mailTo, $subject, $messagebody, "From: ".$mailFrom);
您需要去掉所有空白字符(使用类似
trim()
的方法),然后在其中查找内容,而不仅仅是在消息正文中查找空字符串

现在,只要输入一些空白字符,就可以通过PHP验证


最后,请记住,javascript验证只是一个有用的速度提升,因为用户广告不可信任验证,因为我可以在关闭javascript的情况下使用您的站点。

在验证中,您可能需要执行以下操作:

foreach($_POST as $name => $value) {
    $_POST[$name] = trim($value);
}
验证看起来很合理,但如果他们为所有必填字段留出一个空格,则空白提交似乎可以通过。我不确定是否发生了这种情况,但从我在那里看到的情况来看,空值似乎不应通过服务器端验证

任何可能填写表单的机器人都会忽略javascript,因此请确保服务器验证是严格的。

如果有人禁用javascript,他或她会直接发布到邮件脚本,而不会执行服务器端验证

您需要更改以下内容:

<form action="/ajax/sendEmail.php" method="post" id="sendEmail">

致:



或者调用任何验证脚本。

何时/何地调用php验证脚本?Apache日志上怎么说?(除了建议不要使用
eregi
@jeroen外……这肯定可以解释部分问题。现在更新。是的,这就是我的大多数答案所指的。如果症状是空白提交正在通过,那么客户端验证会做些什么并不重要,因此我忽略了它。不同的是客户端和服务器端验证之间的差异非常重要,因此我添加了最后一点关于差异的内容。感谢您让我了解这个函数。它似乎有助于解决这个问题。这当然可以解释为什么php验证不起作用。感谢您指出这个错误。这是非常有用的信息。谢谢关于trim()的介绍到此为止,因为它似乎解决了我问题的第二部分。
foreach($_POST as $name => $value) {
    $_POST[$name] = trim($value);
}
<form action="/ajax/sendEmail.php" method="post" id="sendEmail">
<form action="/ajax/validation.php" method="post" id="sendEmail">