forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   PHP / MySQL (http://forum.boolean.name/forumdisplay.php?f=135)
-   -   Как запустить приложение под win (http://forum.boolean.name/showthread.php?t=19540)

Licon 25.11.2014 16:03

Как запустить приложение под win
 
Доброго времени суток уважаемые форумчане! Может конечно не совсем сюда пишу, но тем не менее, задача такая: необходимо запустить приложение на локальной машине кликом по ссылке, а если быть точнее, то проводник, а если быть еще точнее, то проводник на моей машине, когда сервер стоит на другой машине. PHP приложения выполнять умеет командой exec, т.е. на той машине на которой стоит сервер, я по ссылке открыть папочку могу так:

dir = 'explorer.exe D:\server\home\www\folder';
exec($dir);

Задача стоит в том, чтобы эта папочка открывалась на машине в локальной сети по адресу: \\192.168.0.1\server\home\www\folder

Как я понимаю, php здесь уже не подходит, ибо он выполняет только команды на сервере... Есть какие мысли, как решить такую проблему? javascript? или еще может что? IE с его activeX не предлагать.

Mr_F_ 25.11.2014 16:15

Ответ: Как запустить приложение под win
 
т.е. запустить рандомный ехе с твоего харда кликом по ссылке в браузере? это же ппц дыра безопасности - все способы это сделать давно закрыли.

ABTOMAT 25.11.2014 16:29

Ответ: Как запустить приложение под win
 
Да, извращение, конечно, приличное.

Тут не обойтись без обработчика на локальной машине. Потому что это уже отдельный комп, и сервер ему не указ (если бы можно было за здорово живёшь делать exec на соседних машинах, был бы трындец).

Из браузера при помощи javascript'а тоже нельзя ничего выполнять в системе, безопасность-с. Если каждый сайт сможет на компе юзера открывать проводних (хотя бы!) был бы адъ.

Локальная машина, я так понимаю, Виндовая? Тогда вариант с ssh не катит.

Мне первым пришёл в голову вот такой путь.
Может, он довольно нелепый, но мне кажется наиболее быстрым и наименее трудоёмким.

На локальной машине тоже ставим веб-сервак (WAMP например).
Кроме того под такую задачу не лишним будет сделать отдельный виртуальный хост и дал доступ к нему ТОЛЬКО с 192.168.0.1. То есть чтобы с любого другого хоста нельзя было этой штукенцией воспользоваться (меры безопасности).

На нём заводим php-файлик, где:

1. Проверяем, пришёл ли запрос от 192.168.0.1, если нет, то
PHP код:

echo 'пшёл нах!';exit; 

2. В гете получаем путь, который надо открыть
3. Присобачиваем его к строчке 'explorer.exe '
4. exec'им это дело.

В идеале ещё бы неплохо сделать проверку, пришёл ли действительно путь, или туда ещё пытаются вклинить какие-то ещё команды.

Соответственно на твоём серваке при клике на ссылку мы вызываем php'шник с локальной машины, чтоб он сработал (хотя бы так):

PHP код:

file_get_contents('http://айпишник-локальной-машины/путь-к-похапэшнику.php?path=путь-для-открытия'); 

Как-то так. По идее будет работать.

Вариант: вызывать загрузку страницы 'http://айпишник-локальной-машины/путь-к-похапэшнику.php?path=путь-для-открытия' прямо из javascript'а при помощи ajax-запроса (например через jQuery). Тогда во-первых избавимся вообще от чего бы то ни было на серваке. Во-вторых можно будет в будущем себе юзерскрипт насобачить, чтобы тебе на странице делал ссылку "открыть файл где сие лежит" (я так понял ты этого в конечно итоге хотел?).

Ну то есть на жабе это будет выглядеть как:

PHP код:

$.ajax({url'http://127.0.0.1/путь-к-похапэшнику.php?path=путь-для-открытия'}).success(function(){alert('Ну, вроде, должно открыться!');}); 

Только учти что тогда запрос на web-сервер локальной машины будет приходить уже с адреса 127.0.0.1, тогда надо разрешить выполнять запросы с него, а не с 192.168.0.1.

Конечно, вариант подымать Apache + php на локальной машине только заради этого выглядит для кого-то абсурдно. Можно на C# например написать обработчик, который будет делать то же самое. Короче тут вариантов много я предложил только один из них.

SBJoker 25.11.2014 17:40

Ответ: Как запустить приложение под win
 
Ну вообще эксплорер посылает такие указы нахрен, ибо доверяет он только файлам с расширение hta в этом случае. Но там свои вопросы.
Собственно все автораны от пиратов в нулевые были сделаны из браузера и hta файлов с сылками на локальные файлы.

DStalk 25.11.2014 17:54

Ответ: Как запустить приложение под win
 
Да взять и написать клиент-сервер по бырому, хоть на блице - дел то на 5 минут. Нафик извраты городить:Р.

ABTOMAT 25.11.2014 20:16

Ответ: Как запустить приложение под win
 
Цитата:

Сообщение от SBJoker (Сообщение 289705)
Ну вообще эксплорер посылает такие указы нахрен, ибо доверяет он только файлам с расширение hta в этом случае. Но там свои вопросы.
Собственно все автораны от пиратов в нулевые были сделаны из браузера и hta файлов с сылками на локальные файлы.

Ну короче основной посыл в том, чтобы из браузера передать команду "своему человеку" в системе. А там уже конкретную реализацию уточнять (я не знал что по exec('explorer C:\'); не откроется, но решения же есть для этого).

Licon 26.11.2014 08:10

Ответ: Как запустить приложение под win
 
В общем на одной машине(на сервере) у меня стоит денвер с папочками и файликами, на сервере все работает норм, хочу чтобы на машине которая в локалке тоже открывались папочки с файликами. Как уже писали выше в голову пришел только способ как установить на машине тоже денвер со всеми скриптами и доступом к мускулу который на сервере и в нем уже открывать локальный проводник в котором открывать удаленную папку, но это очень не удобно, машин в офисе много и за ними сидят курицы. javascript не знаю, но по моему только он выполняется непосредственно на клиентской машине.

Licon 26.11.2014 08:14

Ответ: Как запустить приложение под win
 
Или тупо писать приложение на С++ с коннектом к мускулу и обрабатывать все сценарии в нем... уже исключительно на локальной машине.

DStalk 26.11.2014 11:21

Ответ: Как запустить приложение под win
 
Что-то вообще не понятно чего ТСу надо:). Открыть папочку в локальной сети? Так это стандартными средствами вообще делается - настройки общего доступа.
Много машин с курицами? Прям курятник:Р Сделай на каждой ярлычки на нужные сетевые папки.

Если не это, то получается удаленно на сервере надо запустить проводник, который зайдет в определенную папку... Вот только зачем это? Запустится он, так и будет висеть на удаленном сервере.:)

ABTOMAT 26.11.2014 13:14

Ответ: Как запустить приложение под win
 
Нашёл способ упросить дело.

http://kb.mozillazine.org/Register_protocol
Регистрируем протокол в системе (там дан пример reg-файлика).

Тогда сможем запускать нужную программу из окна браузера с параметром командной строки (куда сунем путь к папке).

Хотел напрямую увязать на explorer.exe, но тот не захотел открывать таким образом (см. пост 4). То есть как ни крути всё равно нужна какая-то программа-прослойка на клиенте. Возможно, её можно свести до батника.


Часовой пояс GMT +4, время: 23:49.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot