PDO подготовил инструкции для хранения содержимого html

Я ищу способ обработки содержимого HTML в подготовленных операциях.

Мое приложение предоставляет базовый редактор WYSIWYG, и после того, как пользователь сохраняет содержимое, мой скрипт хранит HTML-данные в базе данных sqlite.

Но если я использую подготовленный оператор, мой HTML получает-естественно-экранированный.

Это то, что я до сих пор:

try { /* Create databases and open connections */ $dbh = new PDO( 'sqlite:db/coaching.sqlite' ); /* Set Error Mode for Exception Handling */ $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); /* Prepare SQL Statement */ $query = $dbh->prepare( "UPDATE Content SET Value=:value WHERE Token=:token" ); /* Bind Param to Statement */ $query->bindParam( ':token', $_POST['id'], PDO::PARAM_STR); $query->bindParam( ':value', $_POST['value'], PDO::PARAM_STR); /* Execute Query */ $query->execute(); /* Echo Data */ echo $_POST['value']; /* Close connections to Database */ $dbh = NULL; } catch( PDOException $e ) { /* Print Error-Messages */ echo $e->getMessage(); } 

Подготовленные утверждения не исключают переменные. Команда и переменные передаются в базу данных одновременно, но независимо. Если вы видите, что ваши данные скрыты в базе данных, есть еще одна причина. Например, magic_quotes включены. Можете ли вы get_magic_quotes_gpc echo get_magic_quotes_gpc в своем скрипте, чтобы узнать, get_magic_quotes_gpc ли они или нет? Если они включены, вы можете отключить их, используя разные методы . Это решит проблему.

Кроме того, после вашего комментария, подготовленные заявления предотвращают атаки SQL-инъекций, поэтому вам не нужно беспокоиться об экранировании переменных. Что может быть трудно понять, так это то, как работают подготовленные заявления. Скажем, у вас есть запрос:

 $query = "SELECT `id` FROM `users` WHERE `login` = '" . $login . "' AND `password` = '" . $password ."'"; 

$login и $password передаются в запрос напрямую, как есть. Если кто-то пытается передать mylogin' -- to $login , запрос будет mylogin' -- :

 $query = "SELECT `id` FROM `users` WHERE `login` = 'mylogin' -- ' AND `password` = 'anypassword'"; 

и отправляется в базу данных. Таким образом, злоумышленник может получить доступ к любой учетной записи.

В каких подготовленных операциях они передают аргументы запроса независимо от запроса. Запрос не будет строить переменные, прежде чем он будет передан в базу данных. Вместо этого переменные передаются как-то рядом с запросом. Они указаны в запросе. Таким образом, запрос нельзя подделать ни намеренно, ни непреднамеренно.

С подготовленным оператором экзамен $login будет передан как есть и не повлияет на структуру запроса.

Если бы можно было перевозить пассажиров на самолете, а пассажиры фактически не садились в самолет, это можно было бы назвать «подготовленным полетом» ðŸ™‚ Пассажиры не смогли бы повлиять на маршрут и захватить самолет. Они появятся в целевом аэропорту с посадочной площадкой.

вы пытались сохранить данные в кодировке?

http://php.net/base64_encode

или http://php.net/serialize

должен работать, если используется до / после использования db