[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запись спецсимволов html в таблицу mysql
YuriySh
Здравствуйте. Есть форма, где я вбиваю html-текст.
Экранирую в коде перед отправкой в БД
mysql_real_escape_string($_POST['text']);

Но в базу почему-то не пишутся конструкции вида   и –
Записывается всё до первого подобного вхождения.

Подскажите, как решить эту проблему?
Спасибо.



Спустя 1 час, 20 минут (30.07.2012 - 12:23) inpost написал(а):
Функция mysql_real_escape_string возвращает результат, саму переменную не трогает. Понятно о чём я?
И вообще, код покажи

Спустя 57 минут, 45 секунд (30.07.2012 - 13:21) YuriySh написал(а):
Цитата (inpost @ 30.07.2012 - 13:23)
Функция mysql_real_escape_string возвращает результат, саму переменную не трогает. Понятно о чём я?
И вообще, код покажи

$TextDb = mysql_real_escape_string($_POST['text']);
mysql_query("UPDATE `mytable` SET `Text` = '$TextDb' WHERE `id` = '$id'");


Пробовал и html_entity_decode. Все без толку.

Спустя 2 минуты, 46 секунд (30.07.2012 - 13:23) inpost написал(а):
А длина поля какая? Может это у тебя varchar на 100 символов, и всё что дальше обрезается поэтому?
И ещё, откуда ты знаешь, что там ничего более нет? Ты через PMA проверяешь, поля обрезаются?

Спустя 29 минут, 16 секунд (30.07.2012 - 13:53) YuriySh написал(а):
Цитата (inpost @ 30.07.2012 - 14:23)
А длина поля какая? Может это у тебя varchar на 100 символов, и всё что дальше обрезается поэтому?
И ещё, откуда ты знаешь, что там ничего более нет? Ты через PMA проверяешь, поля обрезаются?

Тип поля - text.
Через PMA конечно проверяю.....обрезается как раз перед началом спецсимволов.

Допустим, cтоит:
<p>– (ndash)</p>

Запишет:
<p>

Вручную пробовал тот же текст забивать через PMA... все без проблем.

Спустя 9 минут, 15 секунд (30.07.2012 - 14:02) inpost написал(а):
Ты вручную пишешь? Или откуда-то копируешь?

Спустя 9 минут, 13 секунд (30.07.2012 - 14:11) YuriySh написал(а):
Цитата (inpost @ 30.07.2012 - 15:02)
Ты вручную пишешь? Или откуда-то копируешь?

В обоих случаях копирую. В одном в textarea своей формы на сайте, в другом в поле PMA.

Спустя 14 минут, 10 секунд (30.07.2012 - 14:25) inpost написал(а):
Я могу предположить, что когда копируешь - копируешь вместе с спец.символом странным. Попробуй этот же текст в этом месте вручную скопировать, или ещё лучше, тот символ, который режет строку - просто удалить и заново перенабрать. Может быть между пробелом и спец.символом другой спец.символ располагается.
Я это к тому, что у меня похожая проблема была с Sao Paulo, там так же присутствовал символ, который обрывал текст как у тебя. Это проблема с кодировкой, я использовал UTF-8 и прописывал через SET NAMES, правильно с 5.3php кодировку указывать через mysql_charset, говорят, что в ней нет проблем с такими спец.символами.

Спустя 22 минуты, 32 секунды (30.07.2012 - 14:48) YuriySh написал(а):
Попробовал из своей формы записать вручную набранный текст:
<p>– (ndash)</p>

Результат аналогичен, пишет только открывающий тег.

Попробовал выставить кодировку соединения:
mysql_set_charset('utf8');

Ничего не выходит :(

Спустя 1 час, 50 минут, 41 секунда (30.07.2012 - 16:39) kamanch написал(а):
YuriySh
Это какой-то секретный баг у тебя smile.gif
Выкладыйвай код формы и код обработчика формы, будем курить.


Спустя 11 минут, 21 секунда (30.07.2012 - 16:50) YuriySh написал(а):
Ооооооох))
Там ajax еще прикручен... ща :)

<form class="form-horizontal" method="post">
<fieldset>
<textarea
name="text_article" class="input-xlarge" id="textarea" rows="5"></textarea> <span class="badge">Текст в html</span><br /><br />
</fieldset>
</form>


// добавляем данные в БД
$id = $_POST['id'];

if(isset($id)) {

$placedText = mysql_real_escape_string($_POST['text_article']);

$error = array();

if($placedText == "") $error["text_article"] = 1;

if(!$error){



mysql_query("UPDATE `table` SET `PlacedText` = '$placedText' WHERE `id` = '$id'") or die('Error, delete query failed');

}
else {
header(':', true, 400);
echo json_encode($error);

}
exit;

}

Спустя 16 минут, 26 секунд (30.07.2012 - 17:06) inpost написал(а):
YuriySh
Исходный код того, что копируешь. Посмотри, что находятся за символы в том месте...

Спустя 28 минут, 36 секунд (30.07.2012 - 17:35) kamanch написал(а):
Не могу точно вспомнить, но у меня когда-то была заморочка и именно с textarea
1. Выведи в браузер занчение $_POST['text_article']
2. Выведи в браузер занчение mysql_real_escape_string($_POST['text_article'])

в общем, пошагово всё то, что делает php (step by step debug smile.gif )
Должно стать понятно.

Спустя 11 минут, 33 секунды (30.07.2012 - 17:47) inpost написал(а):
kamanch
Правильно. Вывести обе переменных. И обязательно посмотреть через исходный код, какие символы там хранятся.

Спустя 16 часов, 39 минут, 12 секунд (31.07.2012 - 10:26) YuriySh написал(а):
Решил проблему.
Jquery отсылал на сервер неэкранированную строку.

Сделал так:
var text = encodeURIComponent($('textarea[name=text]').val());


Все заработало.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.