Цитата:
На компьютере пользователя лежит swf. Пользователь нажимает кнопочку и с сервера запускается php-скрипт, который создает на компьютере пользователя(!) (не важно где) текстовый файл (пусть пустой).
Как реализовать сей финт ушами?
|
можно. можно сделать все, даже писать в реестр.
для начала давай рассмотрим вариант, который подходит для большинства клиентов.
в файловой системе клиента находится swf где прописано что то вроде getURL("http://server.com/magick/createfile.php")
мы запускает этот свф, который в свою очередь запускает сценарий...
и тут мы наламываемся, потому что сценарий createfile.php выполняется на другой машине, на сервере, компьютере, стоящем на площадке одного из ISP и скрывающемся под именем server.com, и тебе возвращается лишь результат выполнения этого скрипта.
несомненно выполняемый на этом компе скрипт не может взять и создать файл в любом месте на твоей машине, потому что если такое было бы возможным, то ты сам бы офигел от количества возможностей повредить данным в ТВОЕЙ файловой системе.
но...
что такое cookies? куки, это текстовые файлы, сохраняемые в определенном месте, в которых сервер (в том числе и server.com) может сохранить ограниченное количество данных.
это не противоречит твоим требованиям, потому что тебе все равно где, и даже все равно что...
соответственно мы переписываем код в swf в виде getURL("http://server.com/cookies/create.php")
содержимое файла create.php может быть примерно таким
<?php
setcookie ('cookie', 'value');
?>
алееее.... оп. текстовый файл создан.
но может быть тебя не устраивают легкие пути, и тебе необходимо что то будоражащее воображение и заставляющее стынуть кровь...
в таком случаее рассмотрим путь сложный и тернистый, кроме того накладывающий серьезные ограничения на клиентские машины (которые станут не такими уж и клиентскими в результате) и способ их подключения к сети.
для начала необходимо установить ftp-server на машину клиента. каждого клиента, которые хочет что бы кто то извне мог ковыряться в их файловой системе.
после чего мы изменяем swf, прописывая там такую штуку getURL("http://server.com/ftp/create.php")
и тут начинаются сложности.
как ты уже мог догадаться, мы собираемся подключиться к заранее настроенному фтп серверу на машине клиента (которая уже как бы и не клиент вовсе, а совсем наоборот)
но для этого нам надо знать две... нет, три вещи
1. адрес
2. имя для подключения
3. пароль для подключения
в принципе можно сделать доступ анонимным, но дать всем на свете полный доступ к своей файловой системе не лучшая идея (смотри выше).
возможные проблемы с определением адреса...
клиент может не иметь реального IP адреса. в принципе эта проблема решаема, но это еще более усложняет подготовку клиентской машины.
клиент может прятаться за прокси, и тогда мы скорее всего не узнаем его реального адреса (если такой имеется)
возможные проблемы с передачей пароля и имени пользователя
здесь проблем немеряная куча. как и вариантов их решения.
необходимо заметить, что сделать передачу идентификационных данных безопасной гораздо сложнее и трудоемчее чем настроить клиентскую машину без реального ИП адреса
в итоге, в том оченьмаловероятном случае если все прошло успешно, клиент запускает swf, тот вызывает скрипт на сервере, скрипт на сервере выступает в качестве клиента фтп сервера, который запущен на клиентской машине (которая теперь в свою очередь выступает в качестве сервера) и создает таки в твоей файловой системе текстовый файл...
и наконец рассмотрим последний случай ,когда тебе необходимо писать в реестр клиентской машины с удаленного сервера
для этого случая подходит вариант, который я привел выше, с единственной поправкой - тебе придется собственными руками написать сервер, который будет работать с реестром... если тебе все еще хочется работать с реестром...
поправьте меня, если я в чем то не прав....