"PHP" / Говнокод #18752 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
if(file_exists('./daemon.php') & isset($_GET['stop'])){
    rename('./daemon.php', './daemon.php~');
    sleep(3);
    header('Location: http://'.$_SERVER[HTTP_HOST]);
}elseif(isset($_GET['restart'])){
    include('./lib.inc');
    @rename('./daemon.php', './daemon.php~');
    sleep(3);
    rename('./daemon.php~', './daemon.php');
    ping('daemon.php');
    sleep(3);
    header('Location: http://'.$_SERVER[HTTP_HOST]);
}
    echo '<a href="/?restart" class="button">Start/Restart</a> ';
if(file_exists('./daemon.php'))
    echo '<a href="/?stop" class="button">Stop</a>';
?><br>

<div class="display">-</div>
<script type="text/javascript"><!--
var xd;
setInterval(function(){
xd&&xd.abort();
xd = new XMLHttpRequest();
xd.onreadystatechange = function(){
if(xd.readyState == 4){
document.querySelector(".display").textContent = xd.responseText;
}
}
xd.open('GET', '/display.txt', true);
xd.send();

}, 3000);
//--></script>


daemon.php:

if(date('his')-file_get_contents('./date')<2)
    exit;
    file_put_contents('./date', date('his'));
    include('./lib.inc');
    $f=fopen('./lock', 'w+');
    flock($f, LOCK_EX);
    ping('core.php');
    sleep(3);
    ping('daemon.php');
    usleep(200);
    ping('daemon.php');
    usleep(200);
    flock($f, LOCK_UN);


core.php:

    ini_set('display_errors', 'on');
    error_reporting(E_ALL);
    ini_set('html_errors', 'off');
    $xreservedbasedir=__DIR__;
    $xreservedtmpbuf=str_repeat('x', 1024 * 3);
function ob_write($buffer){
    unset($GLOBALS['xreservedtmpbuf']);
    file_put_contents($GLOBALS['xreservedbasedir'].'/display.txt', $buffer, LOCK_EX);
}
    ob_start('ob_write');
    include('./script.php');

script.php:

    echo date("Y.m.d h:i:s"); //любой код, который исполняет демон

lib.inc:

function ping($action){
    $h=$_SERVER[HTTP_HOST];
    $http=fsockopen($h, 80, $e1, $e2, 1);
if($http){
    fwrite($http,
    'GET /'.$action.' HTTP/1.1'."\r\n".
    'Accept: */*'."\r\n".
    'Host: '.$h."\r\n\r\n"
    );
    fclose($http);
}
}

демон на php? Легко!

Запостил: loki90 loki90, (Updated )

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

  • > $_GET['stop']
    хоть я и не секу в web совершенно, но разве GET запросы могут менять вообще что-либо?
    Ответить
    • Конечно могут. Хотя и не должны по-хорошему... Но кто им запретит?

      Пока гугл не пройдёт по гетам с побочными эффектами - разраб не перекрестится.
      Ответить
      • Так на некоторых сайтах можно голосовалки накручивать: всего-то вставить в комментарий на форуме или в бложике тег <img> со ссылкой... не на картинку, а на GET-запрос для голосования на нужном сайте. «Проголосуют» и все реальные читатели форума, и Гугл, и Яндекс, и китайские боты.
        Ответить
        • На гк голосование же тоже гетом? Или я туплю (пишу с айпада, проверить нечем)?
          Ответить
            • Жаль, принимается только от авторизованных...

              Говорят, несколько лет назад могли голосовать и гости, и Гугл, и Яндекс, только сила голоса у них была 0,1. Но при большом количестве голосующих это не такое большое ограничение...
              Ответить
              • и правильно что убрали. пусть минусаторы тоже учатся писать нормальные скрипты. Говнокод образовательный
                Ответить
              • >Говорят, несколько лет назад могли голосовать и гости
                >несколько лет назад
                2010. Как летит время.

                А вы разве сами не помните? idшничек ведь как раз из той эпохи

                >только сила голоса у них была 0,1
                0.2 кажись
                Ответить
                • > idшничек ведь как раз из той эпохи

                  Да, из этой. Однако, последний ГК с дробным рейтингом — http://govnokod.ru/3058 — появился 20 апреля 2010. Я сюда пришёл как раз... в апреле 2010-го (совпадение?), но от имени гостя тогда не писал (даже не знаю, почему не хотелось пользоваться такой свободой), а более подробное наблюдение за сайтом начал позже.

                  > 0.2 кажись

                  Больше похоже на правду. Нечётную дробную часть мне не удалось заметить.

                  P.S. Обалдеть, за время моего присутствия наложено 15,7 кГК. Как летит время...
                  Ответить
                  • P.P.S. Выходит, что суммарная активность на сайте ≈ 1,5 кГК/год. Тогда выходит, что до 2010-го года сайт существовал примерно ещё года два, т. е. открылся в 2008-м. Проверим: #1 наложен 22 ноября 2008.
                    Ответить
  • Демон, вобщем-то должен закрывать вход / выход... а тут вообще этим даже и не пахнет. В каком смысле это демон?
    Ответить
  • - Уууй! - от неожиданности, что его петуха всосали до корня, Михей отстранился, восхищённо поочерёдно смотря на Егора и меня.
    Ответить

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

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8