使用服务器端语言PHP调用客户端应用程序
我试图为客户端创建一个应用程序,php可以调用该应用程序,并在执行某个程序时终止它。我尝试为此开发一个exe文件,但我无法通过客户端的php调用exe文件。有没有其他我可以开发的php可以调用的应用程序格式?我可以开发一个windows服务并通过php调用它吗?我可以要求用户下载和安装任何东西。但是,我无法使用javascript实现这一点。我将稍微重新表述您的问题,以确保我理解: 我可以在服务器上使用PHP脚本调用用户(客户端)计算机上的EXE吗 如果这是你的问题,那么答案是: 否。还有其他方法,但通常在授权网站、客户或专业案例非常严格的子集之外,这些方法不起作用使用服务器端语言PHP调用客户端应用程序,php,client-server,exe,Php,Client Server,Exe,我试图为客户端创建一个应用程序,php可以调用该应用程序,并在执行某个程序时终止它。我尝试为此开发一个exe文件,但我无法通过客户端的php调用exe文件。有没有其他我可以开发的php可以调用的应用程序格式?我可以开发一个windows服务并通过php调用它吗?我可以要求用户下载和安装任何东西。但是,我无法使用javascript实现这一点。我将稍微重新表述您的问题,以确保我理解: 我可以在服务器上使用PHP脚本调用用户(客户端)计算机上的EXE吗 如果这是你的问题,那么答案是: 否。还有其他方
但是,您在问题中表示,我可以要求用户下载并安装任何内容。如果用户可以从您的网站下载一个文件(可执行文件),然后在他们的计算机上运行,那么问题出在哪里 我设法解决了这个问题,但我不确定它是否适用于任何可能遇到这个问题的人 我在php中设置了一个cookie,并在客户端计算机中检查该cookie的值 在我的例子中,我强制客户端使用XULRunner作为他们的浏览器客户端,这样cookie就只有一个位置存在。如果浏览器不是固定的,则需要分别处理所有浏览器的所有位置 以下是我在客户端计算机中用于应用程序的代码:-
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Diagnostics;
namespace beforeSEBstart
{
class Program
{
static void Main(string[] args)
{
// Create a timer that polls once every 5 seconds
string appdata = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
Console.WriteLine(appdata);
string curFile = appdata+@"\ETH Zuerich\xul_seb\Profiles\cookies.sqlite-wal";
System.IO.File.WriteAllText(curFile, string.Empty);
var timer = new System.Threading.Timer(TimerProc, null, 5000, 5000);
Console.WriteLine("Polling every 5 seconds.");
Console.WriteLine("Press Enter when done:");
Console.ReadLine();
timer.Dispose();
}
static int TickCount = 0;
static void TimerProc(object state)
{
++TickCount;
Boolean found = false;
Console.WriteLine("tick {0}", TickCount);
string appdata = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
Console.WriteLine(appdata);
string curFile = appdata + @"\ETH Zuerich\xul_seb\Profiles\cookies.sqlite-wal";
string line;
Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist.");
//Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist.");
Stream stream = File.Open(curFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
StreamReader file = new StreamReader(stream);
while ((line = file.ReadLine()) != null)
{
if (line.Contains("SEBClose2"))
{
found = true;
}
}
if (found)
{
Console.WriteLine("String exists in the file.");
System.Diagnostics.Process.Start("ConsoleApplication1.exe");
foreach (System.Diagnostics.Process myProc in System.Diagnostics.Process.GetProcesses())
{
if (myProc.ProcessName == "beforeSEBstart.vshost" || myProc.ProcessName == "beforeSEBstart")
{
myProc.Kill();
}
};
}
else
{
Console.WriteLine("String does not exist in the file.");
}
file.Close();
}
}
}
对于服务器端,当客户端按下退出按钮时,我只是在php中设置了一个名为SEBclose2的cookie。您想运行在客户端计算机上编写的应用程序吗?不是服务器吗?是的。我可以让他们下载,但我不知道如何从服务器端调用它。@Frosty我同意你的看法。有些intranet应用程序使用(或安装)计算机上已有的文件(HTA和trend micro的office scan web安装)。我可以让客户端下载exe文件,但该exe文件必须在单击网站上的按钮后执行。@user1439090您不能使用PHP在客户端计算机上强制运行可执行文件。PHP在服务器端执行(解析)。除了通过web浏览器传递给它的一些变量之外,它对客户端机器没有任何概念。这对我来说只是一个安全漏洞,你所描述的听起来更像是你想要javascript来做的。现在大多数浏览器都有保护措施来防止这种类型的活动。虽然我确信你没有做任何恶意的事;有很多人会…基本上,主要的应用程序是客户端,在客户端的计算机上打开一个新的桌面,并通过这个桌面上的浏览器与网站交互。当他们在这个网站上提交完数据后,我想关闭新的桌面并将客户端切换回原始桌面。我没有打开新桌面的应用程序的代码,但是当我们关闭这个应用程序中的某个进程时,它会关闭整个应用程序。我的exe文件用于关闭该进程。