правильно очистите несколько пользовательских входов с помощью mysqli


В настоящее время я использую mysqli, и мне нужен способ правильной очистки каждого пользовательского ввода. Я ищу самый простой легкий способ сделать это, так как я понимаю, что я НЕ должен использовать mysql_real_escape....

Мой запрос выглядит так

$stmt = $sql->prepare("INSERT INTO Persons (msg, ip, time, main, twit, city, lat, lon, lang)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");

Как я понимаю, я должен использовать функцию bindParam... Если я использую его таким образом, полностью ли я защищаю свои пользовательские данные?

$stmt->bind_param('sssssssss', $_POST[msg], ('$ip'), ('$date'), '$_POST[main]', '$_POST[twit]',  ('$cit'), ('$lat'), ('$lon'), '$_POST[lang]');
$stmt->execute();
$stmt->close();

Если это не защищает мои пользовательские данные, как мне правильно это сделать?

Author: uneducatedguy, 2013-04-25

2 answers

Вам нужно подготовить заявление, чтобы быть в безопасности. Что-то вроде приведенного ниже (это, вероятно, не 100%, но дает вам представление)

 $sql = new mysqli("localhost", "my_user", "my_password", "world");


    $stmt = $sql->prepare("INSERT INTO Persons (msg, ip, time, main, twit, city, lat, lon, lang)
        VALUES
        (?, ?, ?, ?, ?, ?, ?, ?, ?)");
        $stmt->bind_param("sssssssss",$_POST[msg], $ip, $date, $_POST[main], $_POST[twit],  $cit, $lat, $lon, $_POST[lang]);
    $stmt->execute();
 4
Author: Dave, 2013-11-19 22:40:04

Прежде всего, вы должны следовать базовому синтаксису PHP

'$_POST[msg]' будет вставлен в виде буквальной строки $_POST[msg], в то время как вы ожидаете значения для переменной $_POST['msg'].

 0
Author: Your Common Sense, 2013-04-25 07:58:16