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

HTML+CSS+JavaScript

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

 

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

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

тема: ББ коды (PHP и JS)
 
 автор: сотка   (25.03.2012 в 10:23)   письмо автору
6 Кб
 
 

Всем привет! Не могу разобраться с связью ф-ции по книге!

сама ф-ция
<?php
  
////////////////////////////////////////////////////////////
  // 2005-2008 (C) Кузнецов М.В., Симдянов И.В.
  // PHP. Практика создания Web-сайтов
  // IT-студия SoftTime 
  // http://www.softtime.ru   - портал по Web-программированию
  // http://www.softtime.biz  - коммерческие услуги
  // http://www.softtime.mobi - мобильные проекты
  // http://www.softtime.org  - некоммерческие проекты
  ////////////////////////////////////////////////////////////
  // Выставляем уровень обработки ошибок 
  // (http://www.softtime.ru/info/articlephp.php?id_article=23)
  
error_reporting(E_ALL & ~E_NOTICE);

  
////////////////////////////////////////////////////////////
  // Функция обработки bbCode
  ////////////////////////////////////////////////////////////
  
function print_page($postbody)
  {
    
// Разрезаем слишком длинные слова
    
$postbody preg_replace_callback(
              
"|([a-zа-я\d!]{35,})|i",
              
"split_text",
              
$postbody);
    
// Предотвращаем XSS-инъекции
    
$postbody htmlspecialchars($postbodyENT_QUOTES);
    
// Тэги
    
$pattern "#\[b\](.+)\[\/b\]#isU";
    
$postbody preg_replace($pattern
                             
'<b>\\1</b>'
                             
$postbody);
    
$pattern "#\[i\](.+)\[\/i\]#isU";
    
$postbody preg_replace($pattern
                             
'<i>\\1</i>'
                             
$postbody);
    
$pattern "#\[u\](.+)\[\/u\]#isU";
    
$postbody preg_replace($pattern
                             
'<u>\\1</u>'
                             
$postbody);
    
$pattern "#\[sup\](.+)\[\/sup\]#isU";
    
$postbody preg_replace($pattern
                             
'<sup>\\1</sup>'
                             
$postbody);
    
$pattern "#\[sub\](.+)\[\/sub\]#isU";
    
$postbody preg_replace($pattern
                             
'<sub>\\1</sub>'
                             
$postbody);
    
$pattern "#\[url\][\s]*([\S]*)[\s]*\[\/url\]#si";
    
$postbody preg_replace_callback($pattern,
               
"url_replace",
                
$postbody);
    
$pattern "#\[url[\s]*=[\s]*([\S]+)[\s]*\][\s]*([^\[]*)\[/url\]#isU";
    
$postbody preg_replace_callback($pattern,
               
"url_replace_name",
                
$postbody);
    return 
$postbody;
  }
  function 
url_replace($matches)
  {
    if(
substr($matches[1], 07) != "http://"$matches[1] = "http://".$matches[1];
    return 
"<a href='$matches[1]' class=news_txt_lnk>$matches[1]</a>";
  }
  function 
url_replace_name($matches)
  {
    if(
substr($matches[1], 07) != "http://"$matches[1] = "http://".$matches[1];
    return 
"<a href='$matches[1]' class=news_txt_lnk>$matches[2]</a>";
  }
  function 
split_text($matches
  {
    return 
wordwrap($matches[1], 35' ',1);
  }
?>



поясните пожалуйста как работает...не понятно как происходит именно добавление бб-кода при нажатии именно в поле с формой msg! я если например сделать добавление в другую форму каким образом? например name?

  Ответить  
 
 автор: Valick   (25.03.2012 в 10:30)   письмо автору
 
   для: сотка   (25.03.2012 в 10:23)
 

как происходит именно добавление бб-кода при нажатии
а никак, это просто РНР обработчик
тут в поле с формой ручками надо писать ВВ-коды
___
вы действительно не видите что тут нет никакого JS кода?

  Ответить  
 
 автор: сотка   (25.03.2012 в 10:46)   письмо автору
 
   для: Valick   (25.03.2012 в 10:30)
 

Вы меня не поняли,вы прикрепленный файл смотрели? Там пример как сделано в гостевой книге! там есть именно JS с помощью которого и происходит добавление! НЕ могу понять его работу

<script language='JavaScript1.1' type='text/javascript'>
<!--
  function tag(text1, text2)
  {
     if ((document.selection))
     {
       document.form.msg.focus();
       document.form.document.selection.createRange().text =
       text1+document.form.document.selection.createRange().text + text2;
     } else document.form.msg.value += text1+text2;
  }
//-->
</script>

  Ответить  
 
 автор: Valick   (25.03.2012 в 10:56)   письмо автору
 
   для: сотка   (25.03.2012 в 10:46)
 

извиняюсь, прикрепленный почему-то не видел, хотя искал его вроде не было
вы сразу прикрепили или после редактирования поста?
___
просто раз уж задаете вопрос по JS зачем РНР код постить? :)
на сколько разбираюсь в JS вот эта строка
document.form.msg.focus();
делает поле msg активным
хотите другое имя, меняйте везде msg на свое
естественно у вас должен быть объект с таким именем

  Ответить  
 
 автор: сотка   (25.03.2012 в 11:03)   письмо автору
 
   для: Valick   (25.03.2012 в 10:56)
 

Нее сразу был! так по логике я так и сделал,соответственно и объект существут,но не происходит добавления(то есть не прикрепляется) к полю-объекту

  Ответить  
 
 автор: сотка   (25.03.2012 в 11:25)   письмо автору
 
   для: сотка   (25.03.2012 в 11:03)
 

 $name        = new field_text("name",
                                  "Название",
                                  true,
                                  $_POST['name']);
    $body = new field_textarea("body",
                               "Содержимое",
                               true,
                               $_POST['body']);
    $url         = new field_text("url",
                                  "Ссылка",
                                  false,
                                  $_POST['url']);
    $urltext    = new field_text("urltext",
                                 "Текст ссылки",
                                  false,
                                  $_POST['urltext']);
    $date        = new field_datetime("date",
                                  "Дата новости",
                                  $_POST['date']);
    $hide        = new field_checkbox("hide",
                                      "Отображать",
                                      $_REQUEST['hide']);
    $urlpict   = new field_file("urlpict",
                                 "Изображение",
                                 false,
                                 $_FILES,
                                 "../../files/news/");
    $page    = new field_hidden_int("page",
                                       false,
                                       $_REQUEST['page']);
  
    $form = new form(array("name" => $name, 
                           "body" => $body, 
                           "url" => $url,
                           "urltext" => $urltext,
                           "date" => $date,
                           "hide" => $hide,
                           "urlpict" => $urlpict,
                           "page" => $page), 
                     "Добавить",
                     "field");

    // Обработчик HTML-формы
    if(!empty($_POST))
    {
      // Проверяем корректность заполнения HTML-формы
      // и обрабатываем текстовые поля
      $error = $form->check();
      if(empty($error))
      {
        // Скрытая или открытая директория
        if($form->fields['hide']->value) $showhide = "show";
        else $showhide = "hide";
        // Изображение
        $str = $form->fields['urlpict']->get_filename();
        if(!empty($str))
        {
          $img = "files/news/".$form->fields['urlpict']->get_filename();
        }
        else $img = '';
        // Формируем SQL-запрос на добавление
        // новостного сообщения
        $query = "INSERT INTO $tbl_news
                  VALUES (NULL,
                          '{$form->fields[name]->value}',
                          '{$form->fields[body]->value}',
                          '{$form->fields[date]->get_mysql_format()}',
                          '{$form->fields[url]->value}',
                          '{$form->fields[urltext]->value}',
                          '$img',
                          '$showhide')";
        if(!mysql_query($query))
        {
          throw new ExceptionMySQL(mysql_error(), 
                                   $query,
                                  "Ошибка добавления новостного
                                   сообщения");
        }
        // Осуществляем перенаправление
        // на главную страницу администрирования
        header("Location: index.php?page={$form->fields[page]->value}");
        exit();
      }
    }
    ?>
       <p class=main_txt>
        Теги:
        <a class=main_txt_lnk href=# 
           onClick="javascript:tag('', ''); return false;" >
           <b>Жирный</b></a>,
        <a class=main_txt_lnk href=# 
           onClick="javascript:tag('', ''); return false;">
           <i>Наклонный</i></a>,
        <a class=main_txt_lnk href=# 
           onClick="javascript:tag('[u]', '[/u]'); return false;" >
           [u]<u>Подчеркнутый</u>[/u]</a>       
    </p>
    <?php
    
    
    
// Начало страницы
    
$title     'Добавление новостного сообщения';
    
$pageinfo  '<p class=help></p>';
    
// Включаем заголовок страницы
    
require_once("../utils/top.php");
    
    echo 
"<p><a href=# onClick='history.back()'>Назад</a></p>";
    
// Выводим сообщения об ошибках, если они имеются
    
if(!empty($error))
    {
      foreach(
$error as $err)
      {
        echo 
"<span style=\"color:red\">$err</span><br>";
      }
    }
    
// Выводим HTML-форму 
    
$form->print_form();
  }
  catch(
ExceptionObject $exc
  {
    require(
"../utils/exception_object.php"); 
  }
  catch(
ExceptionMySQL $exc)
  {
    require(
"../utils/exception_mysql.php"); 
  }
  catch(
ExceptionMember $exc)
  {
    require(
"../utils/exception_member.php"); 
  }

  
// Включаем завершение страницы
  
require_once("../utils/bottom.php");
?>
<script language='JavaScript1.1' type='text/javascript'>
<!--
  function tag(text1, text2)
  {
     if ((document.selection))
     {
       document.form.boby.focus();
       document.form.document.selection.createRange().text =
       text1+document.form.document.selection.createRange().text + text2;
     } else document.form.boby.value += text1+text2;
  }
//-->
</script>

не работает

  Ответить  
 
 автор: Valick   (25.03.2012 в 11:34)   письмо автору
 
   для: сотка   (25.03.2012 в 11:25)
 

body или boby ?
и еще я бы на вашем месте отказался от использования зарезервированных слов в именах полей

  Ответить  
 
 автор: сотка   (25.03.2012 в 11:41)   письмо автору
 
   для: Valick   (25.03.2012 в 11:34)
 

Ага)))спс! с целью безопасности отказаться?

  Ответить  
 
 автор: Valick   (25.03.2012 в 13:10)   письмо автору
 
   для: сотка   (25.03.2012 в 11:41)
 

с целью избежания непредвиденных последствий :)
это не только к полям относится
зачем использовать name когда можно использовать f_name например
да и ошибки иногда легче искать

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

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