Я понимаю, что это обсуждалось ранее, но с момента публикации этого сообщения в конце 2010 года и других обсуждений в то время, когда возникли проблемы - Делает ли FILTER_VALIDATE_EMAIL строку безопасной для вставки в базу данных? - я пробовал несколькоиз описанных ситуаций, таких как использование одинарных кавычек и символов `в форме электронной почты, где я использую 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>