0

我想从 php 文件打开一个记事本,记事本应该包含我在 php 文件中声明为字符串的文本。基本上一个记事本应该打开我从 php 文件传递​​的文本。

4

7 回答 7

10

如果 PHP 文件在 Web 服务器上执行,则无法使 Web 浏览器打开这样的新进程。我相信你可以想象那将是一个多么大的安全漏洞!

如果您在 CLI 模式下将 PHP 文件作为本地脚本运行,您应该能够像任何其他进程一样启动记事本,例如使用反引号exec等。

但是,如果你真的想做这个服务器端,你能做的最好的就是有一个使用Content-Disposition标头的 PHP 脚本,例如

//tell client we're delivering text
header('Content-type: text/plain');

//hint that it's a downloadable file
header('Content-Disposition: attachment; filename="textfile.txt"');

//output our text
echo "The quick brown\nfox jumps over\nthe lazy dog.";

然后,用户可以保存此文件并在他们选择的编辑器中打开。

于 2009-03-24T11:43:59.127 回答
3

您无法让 PHP 在用户机器上打开窗口,因为 PHP 完全在服务器上运行。当输出到达浏览器时,脚本通常会终止 - 你只能做你可以要求浏览器做的事情以及它会让你做什么(使用 HTML / headers 等)。出于安全目的,浏览器不会(或不应该)让任意网站对您的机器做很多事情——例如,它不会让您生成新的 Windows 进程。

我认为你能做的最好的事情是这样的:

$string = 'a string';

header('Content-type: text/plain');
header('Content-Disposition: attachment; filename="file.txt"');

echo $string;

这将发送相关的标头,以便浏览器将内容视为纯文本类型的名为 file.txt 的下载。浏览器应提示他们下载可能会在记事本中打开的文件,除非他们更改了 .txt 的文件关联。

但是,除非您要求他们上传文档,否则您将无法恢复用户对文档所做的任何更改,因此我不确定这是否是您想要实现的目标的良好解决方案。

于 2009-03-24T11:47:24.143 回答
1

可以从 php 执行程序,但只能在服务器端执行。

所以想象一下服务器运行 Windows,它会启动记事本服务器端。

PHP 在服务器上执行,与客户端运行的内容无关。

于 2009-03-24T11:43:27.337 回答
1

从技术上讲,要做到这一点,您必须创建一个文件,然后使用该文件作为参数执行系统。像这样的东西:

//String to show in notepad
$myStringToDisplay = "some text to show in notepad";

//Write this string to a file
$myFile = "somefile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh, $myStringToDisplay);
fclose($fh);

//Execute notepad with this file as a parameter
system("notepad.exe ".$myFile);

但是,这将在运行 PHP 文件的服务器上执行记事本(如果甚至在您的服务器上启用了系统调用),这可能不是您想要做的。PHP 不能在客户端机器上执行任何代码,当然也不能通过系统调用在客户端上执行它想要的任何程序(谢天谢地)。这将是一个巨大的安全漏洞。

如果这不能实现所需的功能,请告诉我们您想要做什么以及为什么。这听起来不是一个非常明智的要求。

于 2009-03-24T11:48:20.913 回答
1

无法从您的 php 应用程序中打开程序。但是您可以使用 PHP 文本编辑器加载文本文件。您还可以加载您正在谈论的值。

http://www.fckeditor.net/就是这样一个编辑器。

于 2009-03-24T11:49:14.170 回答
0

首先,您可以“创建”文件并用文本填充它。

执行 shell 命令:echo $text >> $filename 然后执行:记事本 $filenameToOpen

而已。

于 2009-03-24T11:46:23.023 回答
0

要从 php 脚本打开记事本,我们将使用命令行间阶段。首先,我们将创建一个 php 文件,我们将在其中写入:

var_dump(popen('notepad','r'));

然后我们将使用一些名称保存它,notepad.php 然后打开命令提示符,我们将提供文件的路径来运行我们的文件,如:

d:/>wamp>www>php notepad.php

它将运行我们的 php 文件并打开 notpad。

于 2011-02-24T06:07:45.750 回答