За последние 24 часа нас посетили 17813 программистов и 1655 роботов. Сейчас ищут 1140 программистов ...

Был ли включен javaScript

Тема в разделе "JavaScript и AJAX", создана пользователем ShamahN, 23 дек 2008.

  1. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    как бы мне узнать, был ли включен яваскрипт у клиента во время выполнения скрипта? на ум приходит боди онлоад и записывать в какой-нить хидден значение. Но, это уже возможная дырка.
    В чем проблема. Если у клиента включен ЯС, подсовываю ему визуальный редактор. Если нет - получается обыкновенная текстэрия. Так, вот, если ЯС включен, знчение текстэрии вставляется в бд без хтмлспешиалчарс, а если включен - хтмлспесиалчарс, обработка бб кодов и в базу.
    Блин... Можно подпихнуть данные якобы при включеном ЯС... вот и наткнулись на второй вопрос. Как вы вставляете данные из визинг редакторов? хтмлспешиалчар превратит все в простой текст.. вот, незадача
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Выключают javascript единицы людей (а большинство и не знает, что это такое). Некоторые утверждают, что выключают JS, когда заходят на порносайты.

    Вот тут тов. Штаны предлагал варианты http://php.ru/forum/viewtopic.php?p=74664#74664
     
  3. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Ну, это геморр какой-то :) обрабатывать js пыхом... хз...
    а на счет второго вопроса, что скажешь? как валидишь данные пришедшие из визинг формы?
     
  4. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Я еще не дошел до того уровня, чтобы простым смертным раздавать визивиги.
     
  5. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Kreker :) да лан.. там простая. <p>,<br />, <strong>, <em>, <blockquote>!!
    О!!! А может поможешь регулярку написать? :):) скажу спасибо :):)
     
  6. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    юзаю strip_tags.
    Все еще жду комментариев по-поводу описанного выше способа определения включенности JS
     
  7. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    ShamahN
    Вот текущая. Раньше было более работоспособно, теперь я на скорую руку переделал (намудрил что-то с сущностями :() Но, к сожалению, времени сделать нормальную пока нет. Поэтому текущая работает, но насчет стабильности не утверждаю.
    PHP:
    1.  
    2. <?php
    3. //Теги со свойствами
    4.         $result = preg_replace('~&lt;(tr|td|table|tbody|span|div|a|img|ul|li|ol|font|sup|sub|b|br|p)(.*?)&gt;~is', '<$1$2>', $text);
    5.         //Закрывающие теги
    6.         $result  = preg_replace('~&lt;\/(tr|td|table|tbody|span|div|a|img|ul|li|ol|font|sup|sub|b|br|p)&gt;~is', '</$1>', $result);
    7.         //Расставляем кавычки у атрибута align & class (for IE)
    8.         $result  = preg_replace('~(align|class)=([a-z]+?)(>|\s)~is', '$1="$2"$3', $result);
    9.         //Javascript options & classes
    10.  
    11.         $result = preg_replace('~\s(onMouseOver|OnMouseout|onClick|onAbort|onBlur|onChange|onClick|onDblClick|onDragdrop|onError|onFocus|onKeyDown|onKeyPress|onLoad|onUnload|onKeyUp|class|lang)\=("|\'|&quot;){1}(.*?)("|\'|&quot;){1}~is', '', $result);
    12.    
    13.         //youtube
    14.         preg_match_all('~\[youtube\](.*?)\[/youtube\]~is', $result, $tubes);
    15.         if (!empty($tubes[0][0])) {
    16.             //Заменяем в найденых редисках specialchars
    17.             $valtubes = sizeof($tubes[0]);
    18.             for ($i = 0; $i < $valtubes; $i++) {
    19.                 $newstring = strtr($tubes[1][$i], Array("&amp;" => "&", "&quot;" => "\"", "&lt;" => "<", "&gt;" => ">"));
    20.                 $result = str_replace($tubes[0][$i],  $newstring, $result);
    21.             }
    22.         }
    23.    
    24.         //Чистка от Ms Word
    25.         $result = preg_replace(Array(
    26.                                     '~&lt;\?xml:namespace prefix =(?:.*?)"&gt;~is',
    27.                                     '~&lt;v:shapetype(?:.*?)&lt;\/v:shape&gt;~is',
    28.                                     '~&lt;w:(?:.*?)&gt;(?:.*?)&lt;\/w:(?:.*?)&gt;~is',
    29.                                     "~&lt;meta(?:.*?)&gt;~is",
    30.                                     '~&lt;!\[(?:.*?)\]--&gt;~is',
    31.                                     '~&lt;!--\[(?:.*?)\]&gt;~is',
    32.                                     '~&lt;xml&gt;(?:.*?)&lt;\/xml&gt;~is',
    33.                                     '~&lt;style&gt;(?:.*?)&lt;\/style&gt;~is',
    34.                                     '~&lt;o:(?:.*?)&gt;&lt;/o:(?:.*?)&gt;~is',
    35.                                     '~<link(?:.*?)>~is'),
    36.                                 '', $result);
    37.    
    38.         //Соединяем теги
    39.         function optimize_span($result) {
    40.             $result = preg_replace('~<span\sstyle="(?:[\#a-zA-Z\:\;\s\-]+)">(\\s|&nbsp)*?</span>~is', '', $result);
    41.             preg_match_all('~<span\sstyle="(?:[\#a-zA-Z\:\;\s\-]+)"><span\sstyle="(?:[\#a-zA-Z\:\;\s\-]+)">(?:.*?)</span></span>~is',  $result, $matches);
    42.             $smatches = sizeof($matches[0]);
    43.             for ($i = 0; $i < $smatches; $i++) {
    44.                 preg_match_all('~<span\sstyle="(.+?)">~is',  $matches[0][$i], $match2);
    45.                 $size = sizeof($match2[0]) -1;
    46.                 $patt = $match2[0][($size-1)].$match2[0][($size)];
    47.                 $string = strtr($matches[0][$i], Array($patt => '<span style="'.$match2[1][($size-1)].' '.$match2[1][($size)].'">', "</span></span>" => "</span>")) ;
    48.                 $result = strtr($result, Array($matches[0][$i] => $string)) ;
    49.             }
    50.             return $result;
    51.         }
    52.         $result = optimize_span($result);
    53.         $result = optimize_span($result);
    54.         $result = optimize_span($result);
    55.         $result = optimize_span($result);
    56.  
    57.         $res = strtr($result, Array(
    58.         "&lt;br&gt;" => "<br />&nbsp;",
    59.         "&amp;nbsp;" => "&nbsp;",
    60.         "&amp;mdash;" => "&mdash;",
    61.         "style=\"\"" => "",
    62.         "<o:p>" => "",
    63.         "</o:p>" => "",
    64.         "<!--[endif]-->" => "",
    65.         "<!--[if !supportLists]-->" => "",
    66.         "&quot;" => "'",
    67.         "<!--[if gte vml 1]>" => "",
    68.         "\r\n" => "<br />&nbsp;",
    69.         "style=&quot;&quot;" => "",
    70.         '<img src="http://'.$_SERVER['HTTP_HOST'] => '<img src="',
    71.         ));
    Блин... гляну на эту фигню и возникает мысль "какого хрена?"
     
  8. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Kreker
    ОМГ.. это невиданный зверь :) не надо мне столько :) у меня все просто - пришел нагадить, - обрезаем все нах :):) Все лишние тэги вместе с содержимым :) можно вообще делать

    PHP:
    1. <?php
    2. if(strip_tags($message, "<p><br><strong><em><blockquote>")!=$message)
    3.    trigger_error("Иди в жо.у", E_USER_ERROR);
    4.  
    Для него были созданы все условия :) нех гадить где попало.. А ты еще подчищать пытаешься :)
     
  9. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    -

    -
     
  10. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Kreker
    это визивиг :) там ничего такого
    писать ненадо.. даже НЕЛЬЗЯ!
     
  11. djunkie

    djunkie Активный пользователь

    С нами с:
    19 ноя 2008
    Сообщения:
    134
    Симпатии:
    0
    а чего, душевный ответ =))))
     
  12. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    млин.. Не хочу реанимировать топик http://php.ru/forum/viewtopic.php?p=74664#74664
    Но меня мучает вопрос. Если прибегнуть к ментоду описанному там, какие подводные камни могут выплыть? Естественно я не собираюсь
    Код (Text):
    1. RemoveHandler .js
    2. AddType application/x-httpd-php .js
    придумаю какое-нить свое расширение. Допустим .ext
    И если
    HTML:
    1. <script type="text/javascript" src="файл.ext"></script>
    в файл.ext зарядить
    PHP:
    1.  
    2. <?php
    3. $_SESSION['js_flag'] = true;
    4.  
    как это может ухудшить работу скрипта?