PHP форум

PHP форум

Форум техподдержки WR-Скриптов на php. Здесь обсуждаются: основы программирования на PHP, различные подходы к реализации скриптов. А также WR-скрипты: Доски объявлений, скрипты форумов, Гостевые книги, Каталог ссылок, Галерея, Фотоальбом, Счётчики, Рассылки, Чат, Анекдот и т.д. Принимаются пожелания для новых версий. Пишите какой скрипт планируете увидеть, постараемся реализовать. Давайте сделаем бесплатные php скрипты лучше и доступны всем!!!
Главная сайта бесплатных php скриптовГлавная сайта   ПоискПоиск   Участники  
Сегодня: 16.11.2018 - 09:35:18
Страницы:  1  
PHP форум » WR-Forum Professional » Использование <HTML> в ответе.
АвторСообщение

Валеронус



гость
Ребят,подскажите-как и что сделать,чтобы можно было в ответном сообщении вставлять html код
или скрипт.Заранее спасибо.
Сообщение # 1 15.11.11 - 12:27:20

Йазь



гость
Валеронус, что-то подобное делал пользователь КОТ. Вот его руководство. Часть №1.

    Код:
    Вставка HTML кода в сообщения.
    Внимание! Код вставляется любым пользователем в любое сообщение и может содержать вредоносные скрипты. Поэтому предусмотрено ограничение вставляемого кода по длине и предусмотрен вывод предупреждающего сообщения.

    А) Вставить кнопку HTML в сообщение.
    Блок вставки кнопок начинается следующим кодом:
    <input type=button class=button value='B' style='font-weight:bold; width:30px' onclick=\"DoSmilie(' ');\" title='Жирный текст'> 
    <input type=button class=button value='RB' style='font-weight:bold; width:30px; color:red' onclick=\"DoSmilie(' ');\" title='Жирный текст красного цвета'> 
    <INPUT type=button class=button value='Цитировать выделенное' style='width: 180px' onclick='REPLIER.msg.value += \"
      Цитата:
      \"+(window.getSelection?window.getSelection():document.selection.createRange().text)+\"
    \"' title='Скопировать текст со страницы форума и оформить его как цитату'> 
    <input type=button class=button value=' Код ' onclick=\"DoSmilie('
      Код:
    ');\" title='Текст в блоке выводится моноширинным шрифтом'> 
    <input type=button class=button value=' IMG ' style='font-weight:bold; color:navy' onclick=\"DoSmilie('[img][/img]');\" title='Вставить рисунок'> 
    <input type=button class=button value=' URL ' style='font-weight:bold;' onclick=\"DoSmilie ('[url][/url]');\" title='Вставить ссылку'> 
    <input type=button class=button value=' MP3 ' style='font-weight:bold; color:green' onclick=\"DoSmilie('[mp3][/mp3]');\" title='Вставить проигрыватель mp3. Необходима прямая ссылка на mp3-файл'> 
    Вставляем строку:
    <input type=button class=button value=' HTML ' onclick=\"DoSmilie('[html][/html]');\" title='Вставить код, например - видео'> 

    Б) Меняем функцию очистки кода function replacer ($text). Она находится почти в начале файлов index.php и admin.php.
    После изменения функция приобретает вид:
    function replacer ($text) { // ФУНКЦИЯ очистки кода
    $maxlencode=600;//допустимая длина кода. Настройку этой переменной можно вставить в админку.
    //if (strpos($text,"[html]")) {//строка не подходит - не учитывает расположение [html] в начале строки сообщения
    if (strstr($text,"[html]")) {
    //разбиваем строку на массив
    $arr=explode("[html]", $text);
    //выделяем из каждого элемента неизменяемую часть, все остальное меняем рекурсией
    $arr[0]=replacer($arr[0]);
    for ($iaa=1; $iaa<count($arr); $iaa++) {
    $arrsub=explode("[/html]", $arr[$iaa]);
    if (strlen($arrsub[0])>$maxlencode) {
    $arrsub[0]="<font color='red'> В этом месте сообщения был вставлен код HTML, который превышал максимальную длину разрешенного кода в символах - $maxlencode. Код удален. </font>";
    }
    for ($ibb=1; $ibb<count($arrsub); $ibb++) {
    $arrsub[$ibb]=replacer($arrsub[$ibb]);
    }
    $arr[$iaa]=implode($arrsub, "[/html]");
    }
    $text=implode($arr,"[html]");
    }
    else {
    $text=str_replace(" ",' ',$text);
    $text=str_replace(">",'>',$text);
    $text=str_replace("<",'<',$text);
    $text=str_replace("\"",'"',$text);
    $text=preg_replace("/\n\n/",'<p>',$text);
    $text=preg_replace("/\n/",'
    ',$text);
    $text=preg_replace("/\\\$/",'$',$text);
    $text=preg_replace("/\r/",'',$text);
    $text=preg_replace("/\\\/",'\',$text);
    // если magic_quotes включена - чистим везде СЛЭШи в этих случаях: одиночные (') и двойные кавычки ("), обратный слеш (\)
    if (get_magic_quotes_gpc()) { $text=str_replace("\"",'"',$text); $text=str_replace("\'",'\'',$text); $text=str_replace("\\",'\',$text); }
    $text=str_replace("\r\n","
    ",$text);
    $text=str_replace("\n\n",'<p> ',$text);
    $text=str_replace("\n",'
    ',$text);
    $text=str_replace("\t",'',$text);
    $text=str_replace("\r",'',$text);
    $text=str_replace(' ',' ',$text);
    }
    return $text; }
    Что делает функция ясно – оставляет нетронутыми фрагменты кода в сообщениях между тегами «[html][/html]». Если код превышает заданную длину, то он заменяется сообщением: «В этом месте сообщения был вставлен код HTML, который превышал максимальную длину разрешенного кода в символах - $maxlencode. Код удален.».
Сообщение # 2 15.11.11 - 23:07:11

Йазь



гость
Часть №2

В) Вставка кода в сообщение осложняется тем, что метод POST снабжает кавычки обратным слешем и в таком неработоспособном виде сообщение записывается в файл форума. Но с этим можно бороться при выводе сообщения на форуме.
Находим блок, начинается с коммента «Если разрешена публикация УРЛов». После этого блока начинается блок «считываем в память данные по пользователю». Между двумя этими блоками встраиваем код:
//удаляем слеши перед кавычками в html-скриптах, вставленные методом POST
if (strstr($msg,"[html]")) {
$attention=1;//флаг вывода предупреждения о наличии встроенного кода. Настройку этой переменной можно вставить в админку.
//разбиваем строку на массив
$arr=explode("[html]", $msg);
for ($iaa=1; $iaa<count($arr); $iaa++) {
$arrsub=explode("[/html]", $arr[$iaa]);
$arrsub[0]=str_replace('\"','"', $arrsub[0]);
if ($attention) {
$mesattfirst="
Внимание! В сообщение встроен html-код.
";
$mesattsecond="
<sup>Конец html-кода. Если Вы не видите работу кода, например видео-плеер, не исключено, что в страницу встроен вредоносный код. Обратитесь, пожалуйста, к администратору или модератору.</sup>
";
}
else {
$mesattfirst="";
$mesattsecond="";
}
$arrsub[0]=$mesattfirst.$arrsub[0].$mesattsecond;
$arr[$iaa]=implode($arrsub, "");
}
$msg=implode($arr,"");
}
//$msg=str_replace("[html]","", $msg); //метки удалили в цикле, функции лишние
//$msg=str_replace("[/html]","", $msg);
//конец удаления слешей
После этого HTML-код в переменной $msg становится работоспособным.

Только я не гарантирую его работоспособность, так как форум мог изменить (отфильтровать) некоторые символы!
Сообщение # 3 15.11.11 - 23:08:43

Валеронус



гость
Спасибо
Сообщение # 4 28.11.11 - 11:33:53

проба



гость

    Код:
    <p><?php echo "Hello, world!"; ?></p>
Сообщение # 5 27.05.14 - 20:42:27

лл



гость
<p><?php echo "Hello, world!"; ?></p>
Сообщение # 6 27.05.14 - 20:44:39
PHP форум » WR-Forum Professional » Использование <HTML> в ответе.
Извещение робота о сообщении, а его - нет!!!!? :Предыдущая темаСледующая тема: Проблема с кодировкой.
Страницы:  1  

Сообщение
Имя E-mail
Сообщение

Нажмите на точку возле имени, чтобы вставить обращение к участнику в сообщение

Смайлы:
Ещё смайлы

* При вставке видео с Ютубе нужно указывать только 'хвостик', например: BoUUbs3CvHs
           
Защитный код: (введите цифры, которые на синем фоне)
Ответ на вопрос: (Какой сейчас год?)
   
WR-Счётчик
Powered by WR-Forum Professional © 2.2 beta