【问题标题】:if/else function that handles PHP email user input form sanitization and validation not sanitizingif/else 函数处理 PHP 电子邮件用户输入表单清理和验证不清理
【发布时间】:2014-04-08 09:45:56
【问题描述】:

我可以让它来验证我的电子邮件地址,但它并没有对其进行清理,例如,当我进行一个简单的测试并在电子邮件地址输入字段中输入诸如 joeschm//oe@yahoo.com 之类的电子邮件时,我收到一封电子邮件,说明电子邮件地址来自 joeschm//oe@yahoo.com。

以下是相关代码:

//form validation vars
$formok = true;
$errors = array();  

//form data
$email = $_POST['email'];

//validate email address is not empty
if(empty($email)){
    $formok = false;
    $errors[] = "You have not entered an email address";
//validate email address is valid
}elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){
    $formok = false;
    $errors[] = "You have not entered a valid email address";
    //if email address input field is not empty and the email is valid, sanitize the email
}else{
    filter_var($email, FILTER_SANITIZE_EMAIL);
    $formok = true;
}

【问题讨论】:

  • RTFM: filter_var() 返回过滤后的数据。您根本没有捕获该返回值。

标签: php validation email xss sanitization


【解决方案1】:
$email = filter_var($email, FILTER_SANITIZE_EMAIL);

你需要捕获filter_var的返回值。

【讨论】:

  • 我认为这是最好的做法 - 正如 Netbeans 工具提示所示
【解决方案2】:
$email = mysqli_real_escape_string($_POST['email']);

尝试使用它而不是您当前的代码。它不会取代用户在电子邮件输入中的任何错误,但会确保发布到您的数据库以进行保存是安全的。

【讨论】:

  • 现在我正在测试我正在使用在本地主机上运行的 microsoft webmatrix 构建的站点,并使用测试邮件服务器工具来测试我的联系表单的邮件功能。在这一点上,我不会使用数据库,但如果需要,我可能会在未来实现它。从查看该函数的文档看来,我需要实现一个 mysql 数据库
猜你喜欢
  • 2015-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-12
  • 2015-05-21
  • 2015-01-25
  • 2018-01-28
  • 1970-01-01
相关资源
最近更新 更多