gpt4 book ai didi

php - FILTER_VALIDATE_EMAIL

转载 作者:搜寻专家 更新时间:2023-10-31 20:49:41 24 4
gpt4 key购买 nike

我知道之前已经讨论过这个问题,但自从 2010 年底发表这篇文章以及当时提出问题的其他讨论以来 - Does FILTER_VALIDATE_EMAIL make a string safe for insertion in database? - 我已经尝试了所描述的一些情况,例如在我使用 FILTER_VALIDATE_EMAIL 的电子邮件表单中使用单引号和 ` 字符,它阻止了它们被输入数据库。

最近发布的 PHP 是否修复了早期的问题?它是否安全?

我也想用mysql_real_escape_string(),想必这两个函数可以并行使用,不会有任何冲突吧?

这是我用来将地址放入数据库的邮件列表代码

    <?php
// connects the database access information this file
include("mailing_list_include.php");

// the following code relates to mailing list signups only
if (($_POST) && ($_POST["action"] == "unsub")) {
// trying to ubsubscribe; validate email addresses
if ($_POST["email"] == "") {
header("Location: mailing_list_remove.php");
exit;

} else {
// connect to database
doDB();

// filtering out anything that isn't an email address
if ( filter_var(($_POST["email"]), FILTER_VALIDATE_EMAIL) == TRUE) {
echo '';
} else {
echo 'Invalid Email Address';
exit;
}

// check that email is in the database
emailChecker($_POST["email"]);

// get number of results and do action
if (mysqli_num_rows($check_res) < 1) {
// free result
mysqli_free_result($check_res);

// print failure message
$display_block = "We couldn't find ".$_POST["email"].". No action has therefore been taken.";

} else {
// get value of ID from result
while ($row = mysqli_fetch_array($check_res)) {
$id = $row["id"];
}

// unsubscribe the address
$del_sql = "DELETE FROM subscribers
WHERE id = '".$id."'";
$del_res = mysqli_query($mysqli, $del_sql)
or die(mysql_error($mysqli));
$display_block = " Your email address, ".$_POST["email"].", is unsubscribed!";
}
mysqli_close($mysqli);
}
}
?>
<html>
<?php echo "$display_block";?>
</html>

最佳答案

filter_var 标志 FILTER_VALIDATE_EMAIL 将执行它所说的 = 将值验证为电子邮件,这意味着如果它不是电子邮件,它将返回 false。

您可能正在寻找 FILTER_SANITIZE_EMAIL,它将(删除所有字符,字母、数字和 !#$%&'*+-/=?^_`{|}~@.[ ] )

或者FILTER_SANITIZE_STRING 将去除标签,可选择去除或编码特殊字符。

虽然我不推荐 w3schools,它有一个 filter_var 标志列表 http://www.w3schools.com/php/php_ref_filter.asp

也正如其他人所说,使用 PDO 的准备查询是安全的,您可以在这里找到一个很棒的 pdo 示例:http://www.phpro.org/tutorials/Introduction-to-PHP-PDO.html#10这将解释一些事情,这里还有一个简单的 pdo CRUD(创建检索更新删除)类:http://www.phpro.org/classes/PDO-CRUD.html

祝你好运......

关于php - FILTER_VALIDATE_EMAIL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9398025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com