如何从此表单中删除任何有害字符?

时间:2014-06-06 12:57:55

标签: php forms validation

我已尝试过真正的转义字符串和其他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);
?>

2 个答案:

答案 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。