Как я могу позволить пользователям использовать «» (двойную кавычку) внутри текстового поля …
Всякий раз, когда я использую двойную кавычку в поле (значение), то при получении переменной в моем PHP-файле:
$text=mysql_real_escape_string($_POST['subject']);
а затем эхо его, я получаю строку, которая экранирована должным образом, но строка останавливается точно перед двойной кавычкой!
Я не хочу, чтобы он остановился из-за двойной цитаты!
Javascript используется для проверки текстового поля, поэтому он не пуст, может быть, я должен сделать что-то еще с javascript при проверке и изменении значения, так что php может получить правильное значение, включая двойные кавычки?
благодаря
ОБНОВИТЬ
КОД:
$headline= mysql_real_escape_string($_POST['headline']); echo htmlentities($headline);
Я попытался слить два выше, даст только те же результаты. ПРИМЕЧАНИЕ. У меня также есть TRIED, добавление ENT_QUOTES
в функцию htmlentities …
Неформатированная строка:
+ , . ; : - _ space & % ! ? = # * ½ @ / \ [ ]< > " ' hej hej
выдает это при повторении:
+ , . ; : - _ space & % ! ? = # * ½ @ / \\ [ ]< >
Вы должны использовать htmlspecialchars($str, ENT_QUOTES)
или htmlentities($str, ENT_QUOTES)
чтобы преобразовать кавычки в объект HTML "
, Эти функции также заботятся о других символах, которые должны быть закодированы.
mysql_real_escape_string()
предназначен только для экранирования одиночных кавычек в запросах базы данных, так что вы можете правильно вводить строки с одинарными кавычками в свою базу данных (и избегать инъекций SQL).
EDIT: Добавлены параметры. Благодаря micahwittman
Причина, по которой он не работает, когда вы выводите его на input
заключается в том, что value
усекается при цитировании. Вам нужно будет использовать htmlspecialchars () на выходе.
Вы смешиваете две вещи: mysql_real_escape_string
используется для подготовки строк для хранения в базе данных mysql. htmlentities
используется для подготовки строк для эха в браузере. И то, и другое важно делать, но нельзя называть одну и ту же строку одной и той же строкой. Сделайте что-то вроде следующего:
// Copy string after escaping for mysql into $db_headline $db_headline= mysql_real_escape_string($_POST['headline']); // Copy string after escaping for page display into $html_headline $html_headline = htmlentities($_POST['headline']); // Store the headline in the database ... ?> <input type="text" name="headline" value="<?php echo $html_headline ?>" /> ...
Не работа JS для изменения входной строки, сервер должен убедиться, что она может принять то, что ее получает независимо.
Вы могли бы избежать двойных кавычек с другим значением либо символом Assci, либо HTML "
и т. д., прежде чем передавать его в функцию выключения mysql?