mysql_real_escape_string в PHP 5.2 и 5.3? - PullRequest
       12

mysql_real_escape_string в PHP 5.2 и 5.3?

0 голосов
/ 06 декабря 2011

Я сделал простой редактор контента, который использует CKEditor.На данный момент он отлично работает на моем локальном веб-сервере, но когда я загружаю его на свой удаленный сервер, он выходит из строя.

Ниже приведен пример вывода с моего локального сервера.

<img alt="" src="usrfiles/default_placeholder.png" style="width: 150px; height: 150px; " />

И ниже вывод, который возвращает мой удаленный сервер.

&lt;img alt=&quot;\&amp;quot;\&amp;quot;&quot; data-cke-saved-src=&quot;\&quot; src=&quot;\&amp;quot;usrfiles/default_placeholder.png\&amp;quot;&quot; style=&quot;\&amp;quot;width:&quot; 150px;=&quot;&quot; height:=&quot;&quot; \&quot;=&quot;&quot;&gt;

Я не делал никаких изменений в коде, который я использую локально и удаленно.Помимо, конечно, изменение указателей базы данных (сервер, имя БД, имя пользователя и т. Д.).Мой единственный подозреваемый сейчас - это mysql_real_escape_string () , который я использую при отправке текста.

Мой локальный сервер использует PHP версии 5.3.6, а мой удаленный сервер использует PHP версии 5.2.13,Есть ли разница в поведении mysql_real_escape_string () в этих двух версиях?

РЕДАКТИРОВАТЬ В ответ на CodeCaster: «Пожалуйста, предоставьте больше контекста тому, где этот« вывод »исходит из того, как он хранится в базе данных, как вы храните и извлекаете его, как вы его просматриваете. Скорее всего, он не имеет ничего общего с mysql_real_escape_string (), как это имеет место с магическими кавычками и htmlentities. "

Выходные данные получены из запроса SQL.Он хранится в базе данных как тип данных TEXT.Он хранится и извлекается как через запросы PHP SQL.Я использую mysql_real_escape_string (), пока я ВСТАВЛЯЮ или ОБНОВЛЯЮ данные.На моем локальном сервере я могу вставить его с помощью запроса, заключенного в mysql_real_escape_string (), и получить его без каких-либо изменений хранимых данных, и он просто выводит данные в виде HTML-кода.На удаленном сервере эта система ломается.

1 Ответ

1 голос
/ 06 декабря 2011

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

Лучшим решением было бы отключить magic_quotes. Решение с использованием PHP:

ini_set( 'magic_quotes_gpc', 0 );

При использовании htaccess:

php_flag magic_quotes_gpc off

Чтобы удалить текущие, просто примените stripslashes($string) и сохраните обратно (после отключения magic_quotes, я имею в виду)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...