Из вашего описания «значение в текстовое поле» я предполагаю, что у вас есть некоторый выходной код, подобный этому:
Redisplay
<input value='<?=$_GET['search']?>'>
В этом случае содержащаяся одиночная кавычка завершит атрибут html.И все, что стоит за одинарной кавычкой, является просто мусором для браузера.В этом случае применение htmlspecialchars
к выводу помогает.
(Обратный слэш, вероятно, из-за выхода magic_quotes или mysql _ * _ перед выводом текста. Я сомневаюсь, что этот вопрос описывает ошибку базы данных здесь.)
Обновление : Кажется, это действительно проблема вывода:
echo "<a href='searchmusic.php?search=$search&s=$next'>Next</a>";
Независимо от того, используете ли вы одинарные или двойные кавычки, вам понадобится:
echo "<a href='searchmusic.php?search="
. htmlspecialchars(stripslashes($search))
. "&s=$next'>Next</a>";
(Обратите внимание, что использование stripslashes
- это обходной путь. Вам следует сохранить исходный текст поиска, или, скорее, disable the magic_quotes
.)
Хорошо, я забыл что-то важное.htmlspecialchars
нуждается в параметре ENT_QUOTES - всегда, и в вашем случае, в частности:
// prepare for later output:
$search = $_GET['search'];
$html_search = htmlspecialchars(stripslashes($search), ENT_QUOTES);
И затем используйте то, что вы хотели отобразить $ search раньше:
echo "<a href='searchmusic.php?search=$html_search&s=$next'>Next</a>";