Экранирую в коде перед отправкой в БД
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 проверяешь, поля обрезаются?
И ещё, откуда ты знаешь, что там ничего более нет? Ты через 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, говорят, что в ней нет проблем с такими спец.символами.
Я это к тому, что у меня похожая проблема была с 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](http://phpforum.su/html/emoticons/smile.gif)
Выкладыйвай код формы и код обработчика формы, будем курить.
Это какой-то секретный баг у тебя
![smile.gif](http://phpforum.su/html/emoticons/smile.gif)
Выкладыйвай код формы и код обработчика формы, будем курить.
Спустя 11 минут, 21 секунда (30.07.2012 - 16:50) YuriySh написал(а):
Ооооооох))
Там ajax еще прикручен... ща :)
Там 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
)
Должно стать понятно.
1. Выведи в браузер занчение $_POST['text_article']
2. Выведи в браузер занчение mysql_real_escape_string($_POST['text_article'])
в общем, пошагово всё то, что делает php (step by step debug
![smile.gif](http://phpforum.su/html/emoticons/smile.gif)
Должно стать понятно.
Спустя 11 минут, 33 секунды (30.07.2012 - 17:47) inpost написал(а):
kamanch
Правильно. Вывести обе переменных. И обязательно посмотреть через исходный код, какие символы там хранятся.
Правильно. Вывести обе переменных. И обязательно посмотреть через исходный код, какие символы там хранятся.
Спустя 16 часов, 39 минут, 12 секунд (31.07.2012 - 10:26) YuriySh написал(а):
Решил проблему.
Jquery отсылал на сервер неэкранированную строку.
Сделал так:
Все заработало.
Jquery отсылал на сервер неэкранированную строку.
Сделал так:
var text = encodeURIComponent($('textarea[name=text]').val());
Все заработало.