Почему mysql не хранит данные после символа "#"? - PullRequest
1 голос
/ 29 апреля 2010

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

1) Как только строка, содержащая символ «#» (в основном, когда я пытаюсь изменить цвет шрифта), не будет хранить символы после «#». и он также не хранит символ "#".

2) хотя я пытался .... в JavaScript

html.replace("\"","'");

но это не заменяет двойные кавычки на одинарные.

Ответы [ 3 ]

2 голосов
/ 29 апреля 2010

Нам нужно увидеть код. Мне кажется, ты где-то пропустил какой-то важный шаг. В частности:

Как только строка, которая содержит "#" (в основном, когда я пытаюсь изменить цвет шрифта), символ

Подразумевает, что вы можете объединить строки в URL-адрес, подобный следующему:

var url= '/something.php?content='+html;

Естественно, если html содержит символ #, у вас есть проблемы, потому что в:

http://www.example.com/something.php?content=<div style="color:#123456">

# начинает идентификатор фрагмента с именем #123456">, например, когда вы ставите #section в конце URL-адреса, чтобы перейти к якорю с именем section в файле HTML. Идентификаторы фрагментов сугубо клиентские и не отправляются на сервер, который будет выглядеть так:

http://www.example.com/something.php?content=<div style="color:

Однако это далеко не единственная проблема с вышесказанным. Пробел, < и = недопустимы в URL, а другие символы, такие как &, также могут испортить параметры. Чтобы закодировать произвольную строку в параметр запроса, вы должны использовать encodeURIComponent:

var url= '/something.php?content='+encodeURIComponent(html);

, который заменит # на %35 и аналогично для других внеполосных символов.

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

1 голос
/ 29 апреля 2010

Кажется, вы делаете что-то очень странное с кодом вашей базы данных. Можете ли вы показать фактический код, который вы используете для хранения строки в базе данных?

# - характерный способ создания комментария. Это все, начиная с # до конца строки, отбрасывается. Однако, если ваш код для хранения в базе данных правильный, это не должно иметь значения.

Javascript не является правильным местом для обработки преобразования символов в кавычках. Правильное место для этого находится на стороне сервера.

0 голосов
/ 29 апреля 2010

Как вы просили ....
Я пытаюсь повторить тебя ... Я пытаюсь упомянуть точно, что я сделал ...

1) на стороне клиента на странице HTML-формы, которую я написал следующим образом ..

html = html.trim();    // in html, the data of the rich text editor will come.
document.RTEDemo.action = "submit.php?method='"+ html.replace("\"","'") + "'"; 
\\ i had done replace bcz i think that was some problem with double quotes.

теперь на submit.php, URL моего браузера выглядит следующим образом ...

http://localhost/nc/submit.php?method='This is very simple recipe.<br><strong style='background-color: #111111; color: #80ff00; font-size: 20px;">To make Bread Buttor you will need</strong><br><br><blockquote><ol><li>bread</li><li>buttor</li></ol></li></blockquote><span style="background-color: #00ff80;">GOOD.</span><br><br><br><blockquote><br></blockquote><br>'


2) на submit.php ........ Я просто пишу просто это

echo "METHOD : ".$_GET['method'] . "<br><br>";
$method = $_GET['method'];

теперь мой ответ верхней части такой ...

METHOD : 'This is very simple recipe.

Теперь я хочу сохранить полную информацию об URL ...., но это только хранение ...

This is very simple recipe.
...