как вставить специальные символы в базу данных (MySQL), как
Registered symbol ( ® )
ИЛИ Copyright sign ( © )
ИЛИ Trade Mark sign ( ™ )
Также я хочу показать как оригинал на странице html.
Что я должен делать в обеих сторонах (передняя часть и задняя часть), пожалуйста, уточните
Какая функция более эффективна?
$_GET = array_map('trim', $_GET); $_POST = array_map('trim', $_POST); if(get_magic_quotes_gpc()){ $_GET = array_map('stripslashes', $_GET); $_POST = array_map('stripslashes', $_POST); $_GET = array_map('strip_tags', $_GET); $_POST = array_map('strip_tags', $_POST); } else{ $_GET = array_map('mysql_real_escape_string', $_GET); $_POST = array_map('mysql_real_escape_string', $_POST); }
foreach ($_POST as $key=>$value){ if (!get_magic_quotes_gpc()) { return addslashes(htmlentities(strip_tags($value),ENT_QUOTES,'UTF-8')); } else { return htmlentities(strip_tags($value),ENT_QUOTES,'UTF-8'); } }
Я немного смущен, в чем разница между
htmlentities()
и htlspecialchars()
, и какой из них мне нужно использовать?
какую функцию следует использовать addslashes()
или stripslashes()
при вставке в базу данных?
Просто добавьте эти символы в свой текст и выполните его как SQL-запрос:
INSERT INTO tbl_name VALUES ("Here's my text: ©®");
Когда вы хотите отобразить его, веб-сайт ничего не делает с этими символами (но помните, чтобы избежать по крайней мере <
, >
, &
(используя htmlspecialchars () ), потому что они имеют особое значение в документах XML / SGML (HTML)),
PS. Также не забывайте избегать текста, переданного в SQL-запрос, используя mysql_real_escape_string (), чтобы избежать любых проблем с SQL-инъекциями. Если ваш сервер имеет magic_quotes_gpc
отключите его или, по крайней мере, отфильтруйте данные GET / POST / COOKIE до его необработанного значения. Вы всегда должны сознательно избегать ценностей.
Согласно вашему комментарию … Я не помню, включены ли magic_quotes_gpc
по умолчанию, но вы можете легко отменить эффект магических котировок. Только в самом начале вашего PHP-кода добавьте что-то вроде этого:
if (get_magic_quotes_gpc()) { array_walk_recursive($_GET, 'stripslashes'); array_walk_recursive($_POST, 'stripslashes'); array_walk_recursive($_COOKIE, 'stripslashes'); }
Теперь каждое значение GPC должно быть всегда сырым – без кавычек – поэтому вам нужно сбежать от него вручную, прежде чем передавать какую-либо переменную в запрос.
Из документов PHP для htmlentities()
:
Эта функция идентична htmlspecialchars () всеми способами, за исключением htmlentities (), все символы, имеющие эквиваленты сущности HTML, переводятся в эти сущности.
Не беспокойтесь о кодировании вещей, когда вы их храните: храните данные raw и затем кодируйте их с помощью htmlentities()
когда вы показываете его в своем HTML.
Изменить: Также прочтите это .
Во-первых, вы должны просто использовать mysql_real_escape_string при вставке в базу данных – это гарантирует, что все, что вы храните, безопасно закодировано, но сохраняет всю исходную информацию.
В терминах вывода ключевое различие между htmlentities и htmlspecialchars заключается в том, что htmlentities преобразуют все символы, у которых есть сущности, тогда как htmlspecialchars будут только конвертировать <,>, &, ", ',