如何在邮寄前清理PHP中的用户输入?

2022-08-30 10:33:18

我有一个简单的PHP邮件脚本,它从通过POST提交的表单中获取值并将其邮寄给我:

<?php
$to = "me@example.com";

$name = $_POST['name'];
$message = $_POST['message'];
$email = $_POST['email'];

$body  =  "Person $name submitted a message: $message";
$subject = "A message has been submitted";

$headers = 'From: ' . $email;

mail($to, $subject, $body, $headers);

header("Location: http://example.com/thanks");
?>

如何清理输入?


答案 1

使用filter_var() 清理 post 变量。

示例如下。喜欢:

echo filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);   

答案 2

由于您不是在这里构建SQL查询或任何内容,因此我能看到的对这些输入的唯一相关验证是$_POST[“email”]的电子邮件验证,如果您真的想限制消息可以包含的范围,则可能会对其他字段进行字母数字筛选器。

要过滤电子邮件地址,只需使用filter_var

$email = filter_var($email, FILTER_SANITIZE_EMAIL);

根据Frank Farmer的建议,您还可以过滤掉电子邮件主题中的换行符:

$subject = str_replace(array("\r","\n"),array(" "," "),$subject);

推荐