I’m trying to figure out if there’s a way in PHP to open a file on a user’s desktop (i.e., the user select a file from a file list shown on a PHP page, and then the file opens with the appropriate program on the user’s desktop as if the user had double-clicked it in the GUI.) After searching for a while, I discovered that this is possible via some convoluted-looking code using the COM object in PHP, but that’s only going to work for Windows users and I’m trying to keep this platform agnostic.
Has anyone else ever tried to do this and succeeded?
You can’t execute an application on the user’s machine without either a lengthy “user consent” process, or the user voluntarily (and, ideally, knowingly) installing some software component.
I think the cleanest way might be to use a (signed!) Java applet.
Otherwise you could try and make the user register a specific protocol, with a suitable protocol handler, that you would let download and install on the user’s system to intercept a link such as
exec://format%20C%2C😉Unfortunately, the file:// protocol is (understandably) restricted. For example, in Firefox it will work (somewhat) if you insert manually “C:\” in the address bar and navigate. If you click on those links they will (somewhat) work. Copy the same links in a document in a different security context (e.g. Internet) and lo and behold, it won’t work.
Another possibility would be to backdoor all the intranet clients with, um, REXECd (available on most platforms) or some clone. Then when the user clicks, you send the command from PHP to the user’s workstation. Since nowadays PC’s are multiuser platforms, you’ll need some quick legwork to determine how to do the deed. E.g. on a Linux box you’d have to run a X application with the appropriate ownership and
DISPLAYvalue.You could also “recognize” the user’s platform and let the user download an appropriate batch file, either
.shor.bator.cmd; but they would need a click to download, one to approve, one to open the executable.