За последние 24 часа нас посетили 51320 программистов и 1758 роботов. Сейчас ищут 754 программиста ...

Использование удаленных классов

Тема в разделе "Прочие вопросы по PHP", создана пользователем ZZZubec, 28 мар 2007.

  1. ZZZubec

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

    С нами с:
    28 мар 2007
    Сообщения:
    140
    Симпатии:
    0
    У мя вот такой вопросик (мож кто-то уже сталкивался): Значится, есть домен (на вскидку mamba.ru), на нём находится скрипт myclass.php (в корне) в нём следующее:
    Код (Text):
    1.  
    2. <?php
    3.   class myclass {
    4.     function getTime() {
    5.       return date( "H:i:s" );
    6.     }
    7.   }
    8. ?>
    И есть другой домен (на вскидку moy.ru) на котором есть скрипт index.php в котором:
    Код (Text):
    1.  
    2. <?php
    3.   require_once( 'http://mamba.ru/myclass.php' ); //это строка проходит без проблем
    4.   $my = new myclass; //с этой и строкой ниже начинаются проблемы, пишет что класс не обнаружен
    5.   echo $my->getTime();
    6. ?>
    Вопрос такой: как можно решить данную проблему? может есть другие способы использования сторонних классов?

    ЗЫ: заранее спасибо! 8)
     
  2. Anonymous

    Anonymous Guest

    ZZZubec, во первых, смени аватару. во вторых, сделать можно.
    Главное, понимать, что при запросе через http удаленный сервер сначала исполнит твой php код в контексте удаленного сервера, а потом вернет результат работы. Т.е. тебе надо сделать php скрипт, ктоторый будет возвращать(!) php-код класса, или еще чего нибудь.
     
  3. ZZZubec

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

    С нами с:
    28 мар 2007
    Сообщения:
    140
    Симпатии:
    0
    я пробовал и так, на экране появляется код класса в тектовом виде в строке:
    PHP:
    1.  <?php
    2. require_once( 'http://mamba.ru/myclass.php' ); //это строка проходит без проблем
    3. ?>
    4.  
    После этой строчки в окне браузера выходит текст:
    class myclass {
    function getTime() {
    return date( "H:i:s" );
    }
    }

    Класс необнаруживается всё равно...
     
  4. Anonymous

    Anonymous Guest

    Телепаты в отпуске.
    Код покажи.
     
  5. ZZZubec

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

    С нами с:
    28 мар 2007
    Сообщения:
    140
    Симпатии:
    0
    вот он:
    вот смотри, если myclass.php сделать таким:
    PHP:
    1.  
    2.   class myclass {
    3.     function getTime() {
    4.       return date( "H:i:s" );
    5.     }
    6.   }
    7.  
    т.е. убрать начало <?php и конец ?>
    то как раз получается что, я написал в предыдущем сообщении

    ЗЫ: если есть денвер под рукой, то это легко проверить.
    создаем два домена в папке home: domen1\www, domen2\www. в domen1\www закидываем файл myclass.php, а в domen2\www кидаем index.php.
     
  6. Anonymous

    Anonymous Guest

    Не!
    Он должен полностью вернуть PHP код. Всесте с тегами открытия/закрытия.
    Например, code.php:
    PHP:
    1.  
    2. <?='<?php';?>
    3.   class myclass {
    4.     function getTime() {
    5.       return date( "H:i:s" );
    6.     }
    7.   }
    8. <?='?>';?>
    9.  
     
  7. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    ZZZubec
    Хех :) это тоже не то. Во втором случае ты получаешь текстовый файл, "немного похожий" на PHP код. При его подключении в другом файле этот текст просто выводится на экран, так как в нем нет PHP тегов. Тебе нужно либо переименовать на сервере mamba.ru файл с классом из .php в .txt (чтобы он не исполнялся перед отдачей, а отдавался как есть), либо добавить в .htaccess сайта mamba.ru такую строчку:

    AddType text/plain .php

    чтобы все php файлы не исполнялись, а отдавались как текст.
    Будь осторожен - второй метод наносит удар по безопасности всего сервера.

    EDIT: Сообщения выше не видел :)
     
  8. ZZZubec

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

    С нами с:
    28 мар 2007
    Сообщения:
    140
    Симпатии:
    0
    действительно, реально помогло, Олег спасибки!

    ЗЫ: ну тогда другой вопрос: можно ли не показывать код класса на глаза. Не используя кодирование (Нет, дык нет. И так помогли очень).
     
  9. Anonymous

    Anonymous Guest

    ZZZubec, предалагаю поставить вопрос по другому...
    ...кому попало?
    ;)
     
  10. ZZZubec

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

    С нами с:
    28 мар 2007
    Сообщения:
    140
    Симпатии:
    0
    да желательно всем подряд 8)))
     
  11. Anonymous

    Anonymous Guest

    class.php
    PHP:
    1.  
    2. <?php
    3. $class='
    4. <?php
    5.   class myclass {
    6.     function getTime() {
    7.       return date( "H:i:s" );
    8.     }
    9.   }
    10. ?>';
    11. if (isset($_GET['password'])&&($_GET['password']=='iddqd'))
    12. {
    13. echo $class;
    14. } else {
    15. echo '<?php die("Die, dirty hacker!"); ?>';
    16. }
    17.  
    index.php
    PHP:
    1. <?php
    2.   require_once( 'http://mamba.ru/myclass.php?password=iddqd' );
    3.   $my = new myclass;
    4.   echo $my->getTime();
    5. ?>
    Где то так... не проверял.
     
  12. ZZZubec

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

    С нами с:
    28 мар 2007
    Сообщения:
    140
    Симпатии:
    0
    эт понятно, я тоже так размышлял. Я немогу раскрыть все тайны своего замысла (эт конечно жаль), но часть я всё таки раскрою.
    Есть класс ЯДРА, которое целиком управляет всем, без него сайт пустое сборище модулей 8).
    Просто, пароль свободен для продажи, стоит копейки (т.е. купить может любой, а в том числе и программер способный разобраться в php коде), вот. Мы получаем следующую ситуацию, значится так: программер покупает месячный пароль (а все пароли это абонентский период) и получает в свои сети целое ЯДРО, выдергивает то что надо, обходит защиту проверки абонентского периода, и преспокойно существует в своё удовольствие.

    ЗЫ: надеюсь не всем понятно будет, что я написал. А только знающим людям. 8)))
     
  13. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    ZZZubec
    Извините меня, но это извращение имхо :)
    Продавайте не абонентский доступ к коду, а программные пакеты. Все равно, первое, что сделает чел, получив доступ к вашему коду - это скопирует его к себе: подключать классы локально - намного быстрее и безопаснее.
     
  14. Anonymous

    Anonymous Guest

    ZZZubec, почом береш траву??
     
  15. Anonymous

    Anonymous Guest

    ZZZubec, ты совсем не в ту сторону копаешь, совсем не в ту.
    Копать надо в сторону REST-интерфейсов и подобной херни.
    Думай сам, в общем, ведь мы не знаем всех ваших тайн...
     
  16. ZZZubec

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

    С нами с:
    28 мар 2007
    Сообщения:
    140
    Симпатии:
    0
    Я тоже вчера весь день думал, вот произнесите это вслух: бинарный скрипт на PHP.
    Такое очучение, что где в этой вразе лишнее слово 8), и оно действительно лишнее.

    REST ничего не слышал об этом.
    Ну а для тех кто шел тем же путем, что и я, подведу итог: в данном случае (как решение) можно использовать .class Java. Но для этого придется (по крайне мери мне), переписывать всё ядро и соответственно все модули, ах да, и конечно изучать Java (просто я уже знаком, и есть маленький опыт в похожем j2me).

    ЗЫ: Я считаю вопрос закрытым, спасибо за активное обсуждение (ваши мысли - мои решения) 8)))!