Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.10.2009, 00:38
Аватар для Paguo-86PK
Профессор
Отправить личное сообщение для Paguo-86PK Посмотреть профиль Найти все сообщения от Paguo-86PK
 
Регистрация: 16.09.2009
Сообщений: 253

Пробный движок
Вот на скорую руку набросал то, о чём давно мечтал.
Примитивная демка для сайта, где страница - одна. А содержимое динамически меняется при кликах по ссылкам, не перезагружая страницу снова. Пытался когда-то чат и форум сделать так.
Короче...

Этот скрипт сначала даёт пустую страницу. Через секунду появляется весь PHP-скрипт. После этого - загружается Canvas-демка с павлином Гнездиловой.
В общем, если обычный юзер захочет сохранить содержимое страницы в файл, не получится. Это главная идея движка
<?php
require_once "lib/JsHttpRequest/JsHttpRequest.php";
$JsHttpRequest =& new JsHttpRequest("windows-1251");
if(isset($_REQUEST['str']) != "") {
    $str = $_REQUEST['str'];
//    $upl = $_FILES['upl'];
    if (false && @$upl['tmp_name']) { // Заглушено
        $GLOBALS['_RESULT'] = array(
          "str"   => 'file ' . $upl['name'],
          "md5"   => md5(file_get_contents($upl['tmp_name'])),
        );
    } else
      if($str != "canvas") { // Демо-загрузка #1: Вывод этого файла
        $filename = "index.php";
        $file = fopen($filename, "r");
        $content = fread($file, filesize($filename));
        fclose($file);
        $GLOBALS['_RESULT'] = array(
          "str"   => $str,
          "md5"   => md5($str),
          "src"   => $content
        );
    } else { // Демо-загрузка #2: Canvas графика
        $GLOBALS['_RESULT'] = array(
          "str"   => $str,
          "md5"   => md5($str),
          "src"   => 'document.body.innerHTML = "";
                      cnv = document.createElement("canvas");
                      cnv.id = "canvas";
                      cnv.width = 320; cnv.height = 200;
                      document.body.appendChild(cnv);
                      ctx = cnv.getContext("2d");
                      ctx.fillStyle = "#000";
                      ctx.fillRect(0,0,320,200);
                      ctx.strokeStyle = "rgb(255,0,0)";
                      for(i = 0; i < 320; ++ i) {
                          ctx.moveTo(i, 100);
                          ctx.lineTo(120 + 100 * Math.cos(i / 30), 90 - 100 * Math.sin(i / 30));
                      }
                      ctx.stroke();'
        );
    }
    echo "Печатаем произвольное отладочное сообщение. Не страшна даже фатальная ошибка!";
} else {
?>
<html><head><title>JsHttpRequest :: Test #1</title>
<script src="/lib/JsHttpRequest/JsHttpRequest.js"></script>
<script language="JavaScript">
  // Функция вызывается при нажатии на кнопку.
  function calculate_md5(index) {
    JsHttpRequest.query(
      'index.php', // путь к backend-скрипту
      {
        // передаем текстовые данные 
        'str': index, //document.getElementById("mystr").value,  
        // передаем файл для закачки
        'upl': null //document.getElementById("myupl")
      },
      // Функция-обработчик, вызывается при ответе сервера. 
      function(result, errors) {
        // Вывести отладочные сообщения (если нужно).
        document.getElementsByTagName("span")[0].innerHTML = "<hr width=75%/>Errors:<hr/>" + errors;
        // Вывести результат работы.
        if(index == "index") {
            document.getElementsByTagName("div")[0].innerHTML = 
//              'MD5("' + result["str"] + '") = ' + result["md5"]
              "Loaded:<hr/>" + result["src"].replace(/\x3C/g, "&lt;").replace(/\x0D/g, "<br/>").replace(/\s/g, "&nbsp;");
        } else {
          setTimeout(result["src"],1);
        }
      }
    );
  }
function Init() {
 document.getElementsByTagName("div")[0].innerHTML = "Loading...<hr/>";
 document.getElementsByTagName("span")[0].innerHTML = "Errors...<hr/>";
 calculate_md5("index");
 setTimeout('calculate_md5("canvas")',2500);
}
</script></head>
<body onload='setTimeout("Init()",1250)'>
<div>Please wait...</div><span>debug...</span>
</body>
<?
}

Проверил в FF, IE и Opera - работает.
Использовал Small HTTP server со всей PHP-библиотекой интерпретатора.
Файл называется index.php и должен быть доступен через http://127.0.0.1/ адрес. Вся JsHttpRequest-библиотека с DkLab размещена в /lib/

Однако есть вопросы...
Как можно заметить, скрипт написан очень неграмотно. Потому что с этой библиотекой я работаю второй раз за 5 лет методом Copy/Cut-'n'-Paste и теорию работы не совсем понимаю. Хотя отдельно тестил кусками.
Так вот. Что за md5($str) в php-скрипте? Для чего эта функция?
Как я понял, все обращения к ней можно исключить в моём случае на данном этапе.
Так вот. Как правильно и грамотно реализовать мой скрипт?

P.S.: Я нарочно тупо все контенты html, js и canvas поместил в один PHP-файл. На деле, всё будет по каталогам, аккуратно и организованно.
Плюс в идеале все версии ядра:
  • Для тех, у кого есть Canvas. Div-древо с иконками +/- и прочими мизерными - рисуются средствами Canvas;
  • Для тех, у кого нету его, версия с простыми картинками тупо;
  • Для тех, у кого отключён JS, версия с виртуальными каталогами. Как в Wikipedia...

Последний раз редактировалось Paguo-86PK, 20.10.2009 в 05:35. Причина: Отладил, работает...
Ответить с цитированием
  #2 (permalink)  
Старый 20.10.2009, 15:32
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

А выложить, чтобы можно было посмотреть?
Цитата:
В общем, если обычный юзер захочет сохранить содержимое страницы в файл, не получится. Это главная идея движка
Бред, как и любая обфускация открытого кода, ставящая перед собой подобную цель.
Ответить с цитированием
  #3 (permalink)  
Старый 20.10.2009, 15:37
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от e1f
А выложить, чтобы можно было посмотреть?
+1
Ответить с цитированием
  #4 (permalink)  
Старый 20.10.2009, 19:11
Аватар для Paguo-86PK
Профессор
Отправить личное сообщение для Paguo-86PK Посмотреть профиль Найти все сообщения от Paguo-86PK
 
Регистрация: 16.09.2009
Сообщений: 253

Не понял вашего юмора
Сообщение от e1f Посмотреть сообщение
А выложить, чтобы можно было посмотреть?

Вы о чём? Вот же полный файл Первый пост, начало с php-тэга...
Думаю, в Denwer тоже заработает.
Я описал же там, куда что сохранять и как запускать...

Последний раз редактировалось Paguo-86PK, 20.10.2009 в 19:14.
Ответить с цитированием
  #5 (permalink)  
Старый 20.10.2009, 19:28
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Paguo-86PK,
и ты думаешь, что все прямо побегут возится с твоим скриптом? Неужели так сложно выложить на хостинг?
Ответить с цитированием
  #6 (permalink)  
Старый 20.10.2009, 19:56
Аватар для Paguo-86PK
Профессор
Отправить личное сообщение для Paguo-86PK Посмотреть профиль Найти все сообщения от Paguo-86PK
 
Регистрация: 16.09.2009
Сообщений: 253

Форум - учебник, а не раздел готовых ответов
Сообщение от e1f Посмотреть сообщение
Paguo-86PK,
и ты думаешь, что все прямо побегут возится с твоим скриптом? Неужели так сложно выложить на хостинг?
Я понял, но хостинга у меня нет

А что там возиться? Тут скачать надо demo.zip, распаковать в /lib/ (http://127.0.0.1/lib/) и мой файл сохранить в корень (http://127.0.0.1/).
Таким гуру, как Вы, это как мизинцем Caps нажать.

А вот про остальных - зря вы так. Если человек - дуб или тупой леньтяй, ничего и не увидит
Я о том, чтоб новички не лезли на готовое. А мозгами шевелили. Уже хотя бы ради одного: Чтобы увидеть "Павлин Гнездиловой"
Ответить с цитированием
  #7 (permalink)  
Старый 20.10.2009, 20:13
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Сообщение от Paguo-86PK Посмотреть сообщение
А что там возиться? Тут скачать надо demo.zip, распаковать в /lib/ (http://127.0.0.1/lib/) и мой файл сохранить в корень (http://127.0.0.1/).
Как знаете. С таким подходом далеко не уедете. Окружающие никогда ничего Вам не должны, они не хотят делать так, как Вы считаете нужным, потому что у них, гадов таких, есть собственное мнение, а на Ваше они в 99.99% случаев ложат с колокольни. "Скачать надо", "мой файл сохранить"... Да банально лень Вы же хвастаетесь проектом, а не мы горим желанием узреть творение.
Ответить с цитированием
  #8 (permalink)  
Старый 20.10.2009, 20:42
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Paguo-86PK, не в лени дело, просто нечего там смотреть, судя по описанию ничего нового там не будет, я могу потратить 20 секунд на просмотр того что я уже 100 раз видел, но 5 минут мне жалко.
Ответить с цитированием
  #9 (permalink)  
Старый 20.10.2009, 21:35
Аватар для Paguo-86PK
Профессор
Отправить личное сообщение для Paguo-86PK Посмотреть профиль Найти все сообщения от Paguo-86PK
 
Регистрация: 16.09.2009
Сообщений: 253

Меня не так поняли
Сообщение от e1f Посмотреть сообщение
Как знаете. С таким подходом далеко не уедете. Окружающие никогда ничего Вам не должны, они не хотят делать так, как Вы считаете нужным, потому что у них, гадов таких, есть собственное мнение, а на Ваше они в 99.99% случаев ложат с колокольни. "Скачать надо", "мой файл сохранить"... Да банально лень Вы же хвастаетесь проектом, а не мы горим желанием узреть творение.
Сообщение от Riim Посмотреть сообщение
Paguo-86PK, не в лени дело, просто нечего там смотреть, судя по описанию ничего нового там не будет, я могу потратить 20 секунд на просмотр того что я уже 100 раз видел, но 5 минут мне жалко.
Хых. Я не хвастаюсь, а просто в теме Развитие стандарта HTML я описывал идею такого движка. И, чтобы не быть голословом, реализовал этот движок в примитивном исполнении
А проверять его или нет - дело Ваше.

Так что, я не принуждаю никого его проверять. А просто, даю понять, что не пустомеля-фантазёр

Последний раз редактировалось Paguo-86PK, 20.10.2009 в 21:38.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бесплатный движок для сайта greatilya Ваши сайты и скрипты 9 03.05.2009 15:28