我正在尝试使用PHP打开文件。事实是该文件正确保存在服务器上,但是当我想通过PHP打开时,用户可以下载/查看它,它还显示了代码中完成的其他操作。如果有人有想法,那对我来说将是很大的帮助。
这是我的代码:
<?php
echo"<form method='post'><p>";
foreach ($ini_array as $section => $value){
if ($section == 'FILE') { // Ignorar la $section de pos 0 donde estan los datos del [FILE]
continue;
}
if ($ini_array[$section]['Edit'] == false) {
$default_value_control = 'disabled';
}else{
$default_value_control = '';
}
echo
"<div class='container'><input type=".$ini_array[$section]['Obj']." name='".$section."' value='".$ini_array[$section]['Value']."' ".$default_value_control. ">".$ini_array[$section]['Desc']."</div><div class='tooltip'>?<span class='tooltiptext'>".$ini_array[$section]['Help']."</span></div> <br>";
}
if (isset($_POST['ExecCmd'])){
try{
ini_set("display_errors", 0);
$cmd=$ini_array['FILE']['Path']." ";
foreach ($ini_array as $section => $value){
$manualinput=$_POST[$section];
if (!empty($manualinput)){
$cmd.=" ".$ini_array[$section]['Flag']." ".$manualinput;
}
}
}
finally { ini_set("display_errors", 1);
}
$myfile = fopen("output.csv", "w") or die("Unable to open file!");
//echo $cmd;
$command = escapeshellcmd($cmd);
$output = shell_exec($command);
echo $output;
fwrite($myfile, $output);
fclose($myfile);
$file_url = 'output.csv';
header('Content-Type: text/csv');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\"");
readfile($file_url);
}
echo "<button name='ExecCmd'>Execute</button></p></form>";
?>
if (isset($_POST['EjecutarCmd'])){
... all the above ...
echo "<a href='testoutputfile.php' target='_blank'>Download Report</a>";
}
所以我将所有这些都移到了这个新的“ testoutputfile.php”。
<?php $file_url = 'output.csv'; header('Content-Type: text/csv'); header("Content-Transfer-Encoding: Binary"); header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\""); readfile($file_url); ?>
更新:然后,我希望在执行PHP代码时关闭新窗口。如果不使用JavaScript,就无法做到这一点,因此我需要使用另一个回显来插入JavaScript代码。最终我使用了ob_start();和ob_end_clean();功能来控制输出的缓冲区。
所以我在新页面“ testoutputfile.php”上结束了这个。
<?php $file_url = 'output.csv'; header('Content-Type: text/csv'); header("Content-Transfer-Encoding: Binary"); header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\""); readfile($file_url); ob_start(); echo "<script>window.close();</script>"; ob_end_clean(); ?>
就我而言,当使用chrome访问页面时,这些代码可以正常工作。
但是,当我尝试从PHP下载/打开文件时,它也会在输出文件上打印我页面的代码PHP。我正是这个意思。
这是另一个问题~~!