Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Эмулятор php на javascript


Автор: Zmiuko 15.3.2009, 06:59
В сети откопал "клад" - http://phpjs.org/ 

Можно скачать как полностью файлом, плюс есть упакованная версия.

Судя по описанию это js - функции в полном соответствии с PHP. 

Если кто-нить мало-мальски понимает, как эту библиотеку запускать (вроде js-скрипт подключается, у меня не работает) , может из-за невнимательности не понял.

Прошу, покажите пример работы хотя бы одной функции из данного пакета.

Лично меня очень заинтересовала функция function file_get_contents()

Код

function file_get_contents( url ) {
    // Read the entire file into a string  
    // 
    // version: 812.316
    // discuss at: http://phpjs.org/functions/file_get_contents
    // +   original by: Legaev Andrey
    // +      input by: Jani Hartikainen
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // %        note 1: This function uses XmlHttpRequest and cannot retrieve resource from different domain.
    // %        note 1: Synchronous so may lock up browser, mainly here for study purposes. 
    // %        note 1: To avoid browser blocking issues's consider using jQuery's: $('#divId').load('http://url') instead.
    // *     example 1: file_get_contents('http://kevin.vanzonneveld.net/pj_test_supportfile_1.htm');
    // *     returns 1: '123'
    var req = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
    if (!req) throw new Error('XMLHttpRequest not supported');
    
    req.open("GET", url, false);
    req.send(null);
    
    return req.responseText;
}


подскажите как правильно все сделать, чтобы она работала?

Автор: Zmiuko 15.3.2009, 07:37
Все форумы и блоги уже обыскался в поисках примера работы.  smile 

Автор: Zmiuko 15.3.2009, 08:29
Подключил Prototype.js, затем взял модуль http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js, библиотеку  shCore.js и shBrushJScript.js... естественно и сам php.js...

Внутри <body></body>  вызвал:

Код

file_get_contents('http://kevin.vanzonneveld.net/pj_test_supportfile_1.htm');


, и все равно нифига не канает. Помогите, кто разбирается в javascript.

Добавлено через 48 секунд
Забыл сказать: любой урл не пашет!  smile 

Автор: ohuel 15.3.2009, 09:47
описание прочитай внимательнее

This function uses XmlHttpRequest and cannot retrieve resource from different domain


Автор: Zmiuko 15.3.2009, 09:53
Сделал таким образом:


Код

<head>
 <script type="text/javascript" src="php.js"></script>
</head>
...


, вызвал функцию следующим образом:

Код

...
$b = file_get_contents('http://localhost/1.php');
document.write($b)


Скрипт 1.php содержал "<?php echo "test";?>"? после обработки функцией выместил в браузер "test".

Но при указании иного адреса, либо внешнего "http://ya.ru" функция результат выводить отказалась, возможно ли решение данной проблемы?

Очень важно.

Автор: ohuel 15.3.2009, 10:00
This function uses XmlHttpRequest and cannot retrieve resource from different domain

http://translate.google.com/translate_t?hl=ru#

Эта функция использует XMLHttpRequest и не может извлекать ресурсов из различных (других) доменов

Автор: Zmiuko 15.3.2009, 10:31
Хорошо, но она может подгружать тело файлов указанных пользователем!..

Автор: Zmiuko 15.3.2009, 11:00
В документации, а также на ряде блогах написано, что это хороший аналог. Коли аналог, то он подгружает удаленную информацию. Может есть какие либо аналоги подгрузок удаленных файлов при помощи JavaScript? smile (извините, если кто знает, конечно)

Автор: Zmiuko 17.3.2009, 22:29
Оказывается по технологии js возможно открытие двух удаленных соединений, так почему не работает?

Автор: IZ@TOP 18.3.2009, 12:22
Цитата(Zmiuko @  17.3.2009,  23:29 Найти цитируемый пост)
Оказывается по технологии js возможно открытие двух удаленных соединений, так почему не работает? 

Мои соседки молоденькие тоже много чего на стене у меня на этаже писали. Делитесь ссылками, что бы мы смогли понять о чем вообще речь.

Автор: Severyanin 19.3.2009, 06:15
Zmiuko, прошу прощения за оффтоп, но зачем нужен такой эмулятор?

Автор: awers 19.3.2009, 13:25
Хороший аналог пхп - это пхп. Или что угодно серверное, но никак не JS.

Автор: IZ@TOP 19.3.2009, 13:27
Цитата(Severyanin @  19.3.2009,  07:15 Найти цитируемый пост)
Zmiuko, прошу прощения за оффтоп, но зачем нужен такой эмулятор? 

Он не нужен. Это просто очередное извращение для тех, кто изучил PHP на уровне мыши-полевки и не может понять/лень разбираться в устройстве JavaSctipt.

Автор: Zmiuko 23.3.2009, 01:24
Цитата(IZ@TOP @ 19.3.2009,  13:27)
Цитата(Severyanin @  19.3.2009,  07:15 Найти цитируемый пост)
Zmiuko, прошу прощения за оффтоп, но зачем нужен такой эмулятор? 

Он не нужен. Это просто очередное извращение для тех, кто изучил PHP на уровне мыши-полевки и не может понять/лень разбираться в устройстве JavaSctipt.

Стоп-стоп-стоп!... Каждая разработка, каждый кусок кода, пускай и не оптимальный для решения задач, я полагаю имеет место все равно... поскольку над ним хорошие люди ДУМАЛИ... СИДЕЛИ... ТРАТИЛИ ВРЕМЯ!


Что касается нужности, то как видим - это библиотека, для упрощения работы с js, для тех кто привык к пыху, для новичков,, в конце-то концов, кроме того, когда пишут фреймворк или библиотеку js какую-нибудь, то также называют функции разными именами, почему бы реализацию того или иного куска кода не обозвать допустим file() если эта функция схожа по работе с какой либо и изкакой-либо платформы.

Я так полагаю, здесь не обсуждают человеческий фактор и что побуждает написать такую библиотеку. Просто интересен рабочий пример использования. Ведь согласитесь, что написание граббера на стороне клиента значительно упрощает некоторый ряд задач и кроме того не так ресурсоемок!

Добавлено через 8 минут и 39 секунд
Цитата(IZ@TOP @  18.3.2009,  12:22 Найти цитируемый пост)
Цитата(Zmiuko @  17.3.2009,  23:29 Найти цитируемый пост)
Оказывается по технологии js возможно открытие двух удаленных соединений, так почему не работает? 

Мои соседки молоденькие тоже много чего на стене у меня на этаже писали. Делитесь ссылками, что бы мы смогли понять о чем вообще речь. 



Ну как же, позвольте... ссылки на библиотеку вверху указаны. А то что касается ваших соседок - упоминание не уместно, простите.

Автор: skyboy 23.3.2009, 09:06
Zmiuko, тебя уже выше ответили, на самом деле: из соображений безопасности XMLHttpRequest(именно он используется в работе функции file - можно убедиться, посмотрев в документации к этому самому phpjs) не может запрашивать данные по адресу доменов, отличающихся от текущего.
Насколько помню, в некоторых браузерах(кажется, в Firefox) это можно отключить. Но стопудов - не везде, потому работать "навярнка" такая функция для других доменов не будет. увы.

Автор: awers 23.3.2009, 10:12
Цитата(Zmiuko @  23.3.2009,  02:24 Найти цитируемый пост)
Стоп-стоп-стоп!... Каждая разработка, каждый кусок кода, пускай и не оптимальный для решения задач, я полагаю имеет место все равно... поскольку над ним хорошие люди ДУМАЛИ... СИДЕЛИ... ТРАТИЛИ ВРЕМЯ!

И вирусы и сценарии для тупых фильмов тоже могли писать хорошие люди. Это не делает эти творения нужными или полезными.
Разве что поизучать "анатомию", подчерпнуть каких либо фитч. А в целом - бесполезная феничка.


Цитата(Zmiuko @  23.3.2009,  02:24 Найти цитируемый пост)
Я так полагаю, здесь не обсуждают человеческий фактор и что побуждает написать такую библиотеку. Просто интересен рабочий пример использования. Ведь согласитесь, что написание граббера на стороне клиента значительно упрощает некоторый ряд задач и кроме того не так ресурсоемок!

Я считаю что серверу подобает быть сервером, клиенту клиентом. Каждый из них должен решать свои задачи. Из всех фень, которые я находил в инете, самая полезная "перевёрнутая" софтина - флеш загрузчик фотографий ВКонтакте. Там это и обосновано и хорошо реализовано.

Добавлено через 10 минут и 21 секунду
И самый главный вопрос: какое отношение твоя проблема имеет к PHP?

Автор: Zmiuko 23.3.2009, 10:48
Цитата

И вирусы и сценарии для тупых фильмов тоже могли писать хорошие люди. Это не делает эти творения нужными или полезными.
Разве что поизучать "анатомию", подчерпнуть каких либо фитч. А в целом - бесполезная феничка.


Кажется мы здесь оффтопим. Есть библиотека и есть вопрос... может она и бесполезная, но вот к примеру я ей заинтересовался. Каждый имеет свое мнение.
Цитата

Я считаю что серверу подобает быть сервером, клиенту клиентом. Каждый из них должен решать свои задачи. Из всех фень, которые я находил в инете, самая полезная "перевёрнутая" софтина - флеш загрузчик фотографий ВКонтакте. Там это и обосновано и хорошо реализовано.


Все Контактом болеют, верю!   smile 
Цитата

И самый главный вопрос: какое отношение твоя проблема имеет к PHP? 


Ну поскольку я бы хотел написать граббер на javascript? который передавал бы данные php-скрипту. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)