1. JavaScript / Говнокод #20216

    −49

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    function load_err_count()
    {
    
    	var theUrl ='http://<?php print $_SERVER['HTTP_HOST'] ?>/gen/err/error_count.php';
    		//alert(theUrl);
    	var xmlHttp = null;
    	xmlHttp = new XMLHttpRequest();
        xmlHttp.open( "GET", theUrl, false );
        xmlHttp.send( null );
        //alert(xmlHttp.responseText);
    	var text = xmlHttp.responseText;
    	try{
    	if(   parseInt(text)>0)
    		document.getElementById('id_err_count').innerHTML  = '<a target=\'_blank\' href=http://<?php print $_SERVER['HTTP_HOST'] ?>/gen/err/error_log.php>'+text+'</a>';
    	else 
    		document.getElementById('id_err_count').innerHTML  = '';
    	}
    	catch (ex){document.getElementById('id_err_count').innerHTML  = '';}
    	
    	
    	var theUrl ='http://<?php print $_SERVER['HTTP_HOST'] ?>/gen/err/util_count.php';
    		//alert(theUrl);
    	var xmlHttp = null;
    	xmlHttp = new XMLHttpRequest();
        xmlHttp.open( "GET", theUrl, false );
        xmlHttp.send( null );
        //alert(xmlHttp.responseText);
    	var text = xmlHttp.responseText;
    	try{
    	if(   parseInt(text)>0)
    		document.getElementById('id_util_count').innerHTML  = '<a target=\'_blank\' href=http://<?php print $_SERVER['HTTP_HOST'] ?>/gen/err/util_log.php>'+text+'</a>';
    	else 
    		document.getElementById('id_util_count').innerHTML  = '';
    	}
    	catch (ex){document.getElementById('id_util_count').innerHTML  = '';}
    
    }

    Внимание на: var theUrl

    Запостил: kerberos, 16 Июня 2016

    Комментарии (11) RSS

    • Не распарсится, но вообще, идея годная: не держать код на сервере, а генерировать его ж.скриптом на компьютере пользователя и посылать на сервер для исполнения.
      Ответить
      • Да не, это ж классический пыхоприём, когда в js что-то подставляют пыхой...
        Ответить
        • Просто у каждого языка должен быть макропроцессор. Некоторые рождают необходимый минимум вроде сишного. Некоторые выбирают тяжёлый путь и рождают темплейты. А некоторые пытаются увильнуть и их макропроцессором становится PHP.
          Ответить
    • У меня два варианта:
      1. Это шаблон, из него JS-файл генерируется на сервере. Да, на каждый запрос.
      2. Переменная отсылается на сервер, а там PHP-скрипт выполняет eval (PHP-инъекция!).

      Смотрим дальше: xmlHttp.open( "GET", theUrl, false ); Второй вариант проваливается, theUrl должна быть заполнена готовым адресом. Победил первый вариант.

      Но обычно так не делают. В шаблоне для HTML пишут что-то типа такого:
      <script type="text/javascript">
          var theHost ='<?php print $_SERVER['HTTP_HOST'] ?>';
      </script>

      А JS-файл оставляют статическим, а в нём так:
      var theUrl ='http://' + theHost + '/gen/err/error_count.php';
      Ответить
      • А как же
        <script language=JavaScript runat=Server>
        ?
        Ответить
        • А вот не знаком я с такой технологией, хотя слышал о ней от адептов Микрософта. Где-нибудь доступно изложено, как оно работает?
          Ответить
          • Это Майкрософт так задолго до Ноды.жс предлагал разработчикам вять веб-приложения на ж.скрипте. Про подробности не знаю, т.как столкнулся с этим только один раз в жизни, и ничего хорошего из встречи не почерпнул.
            Ответить
          • Classic ASP это называется. Это нода нулевых, только без асинхронщины и с активиксом. С полифилами жить и сегодня можно, но не нужно.
            Был популярен до ASP.NET, писали на нем, в массе, такую же лапшу как и на пхп4.
            На типичную лапшу можно посмотреть тут: w3schools.com/asp/
            Про основные грабли: https://legacytotheedge.blogspot.ru/2014/05/guide-to-javascript-on-classic-asp.html
            Ответить
            • Если я правильно понял, <script runat="server"> выполняется на сервере (типа как <% code %>). А как выполняется <form runat="server">? Какой HTML-код в этом случае получает клиент?
              Ответить
              • На сколько я помню, это типа плейсхолдер для контролов которые вижуалстудия генерировала для веб страничек. А еще были такие РАД контролы. Ну, та же идея, что и борландовкий билдер: перетаскиваешь иконку на форму, и потом дописываешь к ней обработчики. Такие контролы в ХТМЛ заворачивались в форму и к ним генерировался специальный жскрипт, который осуществлял общение с сервером так что для программиста было не понятно, где именно код выполнится. Т.е. например, ставишь на форму кнопку, а в обработчике пишешь обращение к базе данных - студия сгенерирует код который при нажатии на кнопку пошлет запрос серверной части и вызовет нужный обработчик.
                Ответить
              • <form runat="server"> в Classic ASP нет, емнип, это уже вебформс. Там тоже ничего интересного: состояние формы запихивается во ViewState, а сама форма сабмитит этот ViewState на ту же самую страницу. ViewState работает как кукисы, только его подписывает сервер, чтобы быть увереным, что клиент его не испортил.
                Ответить

    Добавить комментарий