我已尝试过真正的转义字符串和其他php方法,但我不确定我是否正确使用它们。这段代码显示了我的输入,然后是ajax帖子,我在哪里以及如何预先制作卫生设施?
请注意,没有数据库连接,因此必须以某种方式在jQuery中完成所有字符剥离。
这会是更正确的方向吗?
<?php
$name = $_POST["name"];
$email = $_POST["email"];
$phone = $_POST["phone"];
$message = $_POST["message"];
$msg = "
Name:$name
Email:$email
Phone:$phone
Comment:
$message";
function checkInput($msg) {
$msg = @strip_tags($msg);
$msg = @stripslashes($msg);
$invalid_characters = array("$", "%", "#", "<", ">", "|");
$msg = str_replace($invalid_characters, "", $msg);
return $msg;
}
$to = "email address";
$subject = "name";
$message = $msg;
$headers = "Contact form enquiry";
mail($to,$subject,$message,$headers);
?>
答案 0 :(得分:0)
您在将文本放入某些代码或特定数据格式之前立即执行卫生。
所以在这里的代码中:
var dataString = 'name=' + name + '&email=' + email + '&phone=' + phone + '&message=' + message;
在将每个变量放入URL之前,您将对其进行转义。您可以使用encodeURIComponent
执行此操作。但是,您正在使用jQuery ajax,因此您不应该首先手动执行此操作。
data: { 'name': name, 'email': email, 'phone': phone, 'message': message},
在您生成的HTML中:
.append("<h2 class='text-center form_submit_text'>Hi " + name + ", we will contact you soon </p>")
应该是:
var heading = jQuery("<h2>").addClass('text-center').addClass('form_submit_text').text("Hi " + name + ", we will contact you soon);
$('#thanks').empty().append(heading);
您可能还需要在PHP中进行一些转义,例如before putting data into SQL。
答案 1 :(得分:0)
您在bin / mail.php中验证并清理。有关验证和清理传入数据的内置方法,请参阅filter_var。例如,对于电子邮件,您可以执行
if (filter_var($_POST['email']), FILTER_VALIDATE_EMAIL)) {
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL));
}
电话号码需要正则表达式来验证和清理(因此它只包含您首选格式的数字和/或重新格式)。像$message
这样的自由文本应该使用FILTER_SANITIZE_STRING。