停留在页面上,不要';当php中出现Javascript警报时,不能重置表单字段
我对php中的一个表单和其中嵌入的一些Javascript代码有问题 我希望留在页面上,不要在Javascript警报后重置表单字段。显示警报时,页面将重新加载,表单中的所有字段都将重置 代码如下:停留在页面上,不要';当php中出现Javascript警报时,不能重置表单字段,javascript,php,forms,Javascript,Php,Forms,我对php中的一个表单和其中嵌入的一些Javascript代码有问题 我希望留在页面上,不要在Javascript警报后重置表单字段。显示警报时,页面将重新加载,表单中的所有字段都将重置 代码如下: if (!empty($_REQUEST['captcha'])) { if (empty($_SESSION['captcha']) || trim(strtolower($_REQUEST['captcha'])) != $_SESSION['captcha']) { echo "
if (!empty($_REQUEST['captcha'])) {
if (empty($_SESSION['captcha']) || trim(strtolower($_REQUEST['captcha'])) != $_SESSION['captcha']) {
echo "<script type=\"text/javascript\">
alert(\"El texto no coincide, por favor vuelva a intentarlo\");
return false;
</script>";
} else {
$para = 'xxx';
$asunto = 'Mensaje de mi sitio xxx';
$nombre = $_GET['nombre'];
$email = $_GET['email'];
$contenido = "Mensaje enviado por " . $nombre . " \r\n";
$contenido .= "e-mail es: " . $email . " \r\n";
$contenido .= "Mensaje: " . $_GET['texto'] . " \r\n";
mail($para, $asunto, $contenido);
echo "<script type=\"text/javascript\">
alert(\"Gracias por contactar con nosotros, nos pondremos en contacto lo antes posible.\");
document.contacto.captcha.select();
return false;
</script>";
}
$request_captcha = htmlspecialchars($_REQUEST['captcha']);
unset($_SESSION['captcha']);
}
if(!empty($\u请求['captcha'])){
if(空($_会话['captcha]])trim(strtolower($_请求['captcha]])!=$_会话['captcha'])){
回声“
警报(\'El texto no EXCLE,por FOUR vuelva a INTENTTARLO\');
返回false;
";
}否则{
$para='xxx';
$asunto='Mensaje de mi sitio xxx';
$nombre=$_GET['nombre'];
$email=$_获取['email'];
$contenido=“Mensaje enviado por”。$nombre.\r\n;
$contenido.=“电子邮件:”.$email.\r\n”;
$contenido.=“Mensaje:”.$\u GET['texto']。“\r\n”;
邮件($para、$asunto、$contenido);
回声“
警报(\“可能发生的情况下,请联系我们,不要联系我们。”);
document.contacto.captcha.select();
返回false;
";
}
$request\u captcha=htmlspecialchars($request['captcha']);
取消设置($_会话['captcha']);
}
非常感谢你的帮助
祝您度过愉快的一天。您的表单是否已发布到此php?我想您已经将表单HTML从您的问题中删除了。如果希望以这种方式验证表单,则需要根据$\u请求在表单HTML中填写值
更好的解决方案是使用AJAX验证表单。您的PHP代码应该获取$\u POST请求上的数据,并在重新加载后将其发送回页面。 然后,在表单内部,您应该检查每个变量,如果它不是空的,则预填充表单上的字段 如果您不使用框架(如代码所示),那么这对于作为开发人员的您来说是非常耗时的。
试试最流行的一款,它可以为您提供出色的表单和验证处理功能,如Symfony2、Laravel、Zend Framework2。您的代码没有显示任何重新加载功能。您在哪里这样做?使用JS解析submit()上的提交并防止默认提交行为(除非表单验证)。此外,还存在电子邮件头注入漏洞: