Mysql настоящий побег

Поэтому использую mysql_real_escape_string Функция для остановки атак SQL-инъекций в следующем коде, но, похоже, она не работает, как мне это исправить?

<?php
$address = mysql_real_escape_string($_POST['bitcoinaddress']);

$btc = mysql_real_escape_string($_POST['btcamount']);

$phone = mysql_real_escape_string($_POST['phonenumber']);

$con = mysql_connect("localhost","db user","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("db_name", $con);
$sql="INSERT INTO `db_name`.`form` (`bitcoinaddress`, `btcamount`, `phonenumber`) VALUES
('$_POST[bitcoinaddress]','$_POST[btcamount]','$_POST[phonenumber]')";

if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo ($_POST['btcamount']);
mysql_close($con);
?>

-6

Решение

Проблема в том, что вы не используете его …

Сделай это изменение.

<?php
$address = mysql_real_escape_string($_POST['bitcoinaddress']);

$btc = mysql_real_escape_string($_POST['btcamount']);

$phone = mysql_real_escape_string($_POST['phonenumber']);

$con = mysql_connect("localhost","db user","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("db_name", $con);
$sql="INSERT INTO `db_name`.`form` (`bitcoinaddress`, `btcamount`, `phonenumber`) VALUES
('".$address."','".$btc."','".$phone."')";

if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo ($btc);
mysql_close($con);
?>
1

Другие решения

Вы создаете переменные с экранированными значениями, но затем продолжаете использовать исходные переменные.

Но это не очень хорошая идея, чтобы использовать mysql_real_escape_string() в любом случае это так, поскольку он не всегда правильно очищает данные без дополнительной работы, такой как проверка того, что числовой ввод действительно является числовым. использование mysqli или же pdo и подготовил заявления вместо.

0

По вопросам рекламы [email protected]