Открытие блокнота из PHP - PullRequest
0 голосов
/ 24 марта 2009

Я хочу открыть блокнот из файла php, и блокнот должен содержать текст, который я объявляю как строку в файле php. по сути, блокнот должен открываться с текстом, который я передаю из файла php.

Ответы [ 7 ]

10 голосов
/ 24 марта 2009

Если файл PHP выполняется на веб-сервере, вы не можете заставить веб-браузер открыть новый процесс, подобный этому. Я уверен, что вы можете себе представить, что это за дыра в безопасности!

Если вы запускаете файл PHP как локальный скрипт в режиме CLI, вы должны иметь возможность запускать блокнот, как и любой другой процесс, например, используя backticks или exec и т. д.

Однако, если вы действительно хотели бы выполнить эту серверную часть, лучшее, что вы могли бы сделать, - это PHP-скрипт, который использовал бы заголовок Content-Disposition , например,

//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.";

Затем пользователь может сохранить этот файл и открыть его по своему выбору.

3 голосов
/ 24 марта 2009

Вы не можете заставить PHP открыть окно на компьютере пользователя, потому что PHP работает полностью на сервере. К тому времени, когда выходные данные достигнут браузера, сценарий, как правило, завершается - вы можете делать только то, что вы можете попросить браузер и что он вам разрешит (используя HTML / заголовки и т. Д.). В целях безопасности браузер не будет (или не должен) позволять произвольному веб-сайту делать очень многое с вашей машиной - например, это не позволит вам создавать новые процессы Windows.

Лучшее, что я могу сделать, это что-то вроде этого:

$string = 'a string';

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

echo $string;

Это отправит соответствующие заголовки, так что браузер будет обрабатывать контент как файл с именем file.txt типа простого текста. Браузер должен предложить им загрузить файл, который, скорее всего, откроется в блокноте, если только они не изменили ассоциацию файлов для .txt.

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

1 голос
/ 24 марта 2009

Невозможно открыть программу из вашего php-приложения. Но вы можете загрузить текстовый файл с помощью текстового редактора PHP. Вы также сможете загрузить значения, о которых говорите.

http://www.fckeditor.net/ является одним из таких редакторов.

1 голос
/ 24 марта 2009

Технически, для этого вам нужно создать файл, а затем запустить систему с этим файлом в качестве параметра. Примерно так:

//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 не может выполнить какой-либо код на клиентском компьютере и, конечно, не может выполнить системный вызов для выполнения любой программы, которую он хочет на клиенте (слава богу). Это было бы огромное нарушение безопасности.

Если это не обеспечивает желаемой функциональности, пожалуйста, сообщите нам, что вы пытаетесь сделать и почему. Это не похоже на очень разумный запрос.

1 голос
/ 24 марта 2009

Возможно выполнение программы из php, но только на стороне сервера.

Итак, представьте, что сервер работает под управлением Windows, он запустит блокнот на стороне сервера.

PHP запускается на сервере и не имеет ничего общего с работой на стороне клиента.

0 голосов
/ 24 февраля 2011

Чтобы открыть блокнот из php-скрипта, мы будем использовать командную строку inter phase. Сначала мы создадим один файл php, в котором мы напишем:

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

Затем мы сохраним это имя под именем notepad.php затем откройте команду Prompat там мы дадим путь нашего файла для запуска нашего файла как:

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

Он запустит наш php-файл и откроет notpad.

0 голосов
/ 24 марта 2009

Сначала вы можете «создать» файл и заполнить его текстом.

Выполнить команду оболочки: echo $ text >> $ filename затем выполните: notepad $ filenameToOpen

Вот так.

...