Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Повторная обработка htmlspecialchars()
 
 автор: Alexey_Tihonenko   (12.02.2010 в 19:00)   письмо автору
 
 

Скажите, можно ли узнать была ли переменная уже обработана htmlspecialchars()? Иначе при повторной обработке возникают крокозябры.
Или какую альтернативную функцию можно применить, чтобы при ее повторной обработке строка не изменялась?

  Ответить  
 
 автор: Loki   (12.02.2010 в 19:43)   письмо автору
 
   для: Alexey_Tihonenko   (12.02.2010 в 19:00)
 

нельзя
http://ru.php.net/manual/en/function.htmlentities.php

  Ответить  
 
 автор: Alexey_Tihonenko   (12.02.2010 в 21:49)   письмо автору
 
   для: Loki   (12.02.2010 в 19:43)
 

Спасибо! Проблема решена. Если выставить четвертый параметр в FALSE, то повторная обработка значения не приводит ни к каким изменениям значения, что мне и требовалось.

  Ответить  
 
 автор: Trianon   (12.02.2010 в 22:03)   письмо автору
 
   для: Alexey_Tihonenko   (12.02.2010 в 21:49)
 

Ну да. Могилу вырыл - проблему решил.

  Ответить  
 
 автор: Alexey_Tihonenko   (12.02.2010 в 22:21)   письмо автору
 
   для: Trianon   (12.02.2010 в 22:03)
 

Я честно говоря не понимаю в чем неправильность моего подхода заключается.
Мне нужно было преобразовать строку с html кодом в безопасное представление. При этом неизвестно производились ли преобразования этой строки до этого или нет. Причем(если в строке содержался html-код) при последующем выводе строки в окно браузера не хотелось, чтобы она выглядела так:
<p>Hello world!</p>

а хотелось, чтобы она выглядела вот так:
<p>Hello world!</p>

Что же не так?

  Ответить  
 
 автор: Trianon   (12.02.2010 в 22:41)   письмо автору
 
   для: Alexey_Tihonenko   (12.02.2010 в 22:21)
 

То, что когда до зарезу возникнет необходимость сделать, чтобы некая строка выглядела именно вот так:

&amp;lt;p&amp;gt;Hello world!&amp;lt;/p&amp;gt;

или хотя бы так: &amp;

так вот - тогда Владелец сайта не сможет этого сделать Вашим скриптом.
Вас тогда уже не будет. А матюги в Ваш адрес будут лететь. Заслуженные такие матюги.

  Ответить  
 
 автор: Alexey_Tihonenko   (13.02.2010 в 08:12)   письмо автору
 
   для: Trianon   (12.02.2010 в 22:41)
 

Сэнсэй не судите так строго. Я же не волшебник, я только учусь))
Ошибка уяснена, будем исправлять.

  Ответить  
 
 автор: Тень&   (12.02.2010 в 22:41)   письмо автору
 
   для: Alexey_Tihonenko   (12.02.2010 в 22:21)
 

Нет критерия, по которому можно определить -- была строка пропущена через htmlspecialchars() или нет.

КТО тебе сказал, что строка "&lt;b&gt;" когда-то была пропущена через htmlspecialchars()? o_O А если я её сразу такой ввёл? O_o Твоя функция радостно оставит этот кусок текста и на экране я увижу текст "<b>" вместо введённого мной "&lt;b&gt;".

  Ответить  
 
 автор: Trianon   (12.02.2010 в 19:50)   письмо автору
 
   для: Alexey_Tihonenko   (12.02.2010 в 19:00)
 

переменная не обрабатывается никакими функциями.
Обрабатывается значение. Превращаясь из одного в другое.
Не бывает никаких повторных обработок.
Бывает кривая логика программы.

  Ответить  
 
 автор: oliss   (12.02.2010 в 23:14)   письмо автору
 
   для: Alexey_Tihonenko   (12.02.2010 в 19:00)
 

Определить нельзя ,но существует обратная функция для htmlspecialchars( преобразования).

  Ответить  
 
 автор: Trianon   (12.02.2010 в 23:22)   письмо автору
 
   для: oliss   (12.02.2010 в 23:14)
 

Вот только всегда ли она взаимооднозначна - эта функция?

  Ответить  
 
 автор: oliss   (12.02.2010 в 23:35)   письмо автору
 
   для: Trianon   (12.02.2010 в 23:22)
 

Практически, её никто не использует (правильно надо хранить данные в БД :)

  Ответить  
 
 автор: Trianon   (12.02.2010 в 23:38)   письмо автору
 
   для: oliss   (12.02.2010 в 23:35)
 

Тогда зачем советуете?

  Ответить  
 
 автор: oliss   (12.02.2010 в 23:39)   письмо автору
 
   для: Trianon   (12.02.2010 в 23:38)
 

Для общего развития.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования