写入文件后,在新的浏览器窗口中打开文件(使用fopen)


Open a file in a new browser window after having written it (with fopen)

我正在编写一个简单的订单系统,其中使用fopen函数将几个数字(填写在表单中)写入另一个.php文件(也可能是.html)。这很好,但在写入文件后,我希望浏览器真正打开写入的文件,最好是在新的浏览器窗口中。通过这种方式,我的客户可以使用这个来打印,用作发票等。

现在我还是php领域的新手,对fopen的使用没有经验。但无论我在哪里寻找教程等,都听说fopen会打开(或者当然会编写)一个文件,但就我所经历的而言,它并没有。它似乎只是允许对指定文件进行写和读访问,而不是实际显示新编写的页面。

为了避免任何混淆:我不想像SO state上的其他问题一样打开链接。

我的代码:

<form action="" method="post">
  <input type="text" id="amountTuna" name="numberTuna" value="0"/>
  <input type="text" id="amountCheese" name="numberCheese" value="0"/>
  <input name="send" id="send" type="submit" value="Post order" />
</form>
<?php
if (array_key_exists('send', $_POST)) { 
  $order = "order.php";
  $fh = fopen($order, 'w') or die("can't open file");//file handler
  fwrite($fh, "Tuna sandwiches: " . stripslashes($_POST['numberTuna']));
  fwrite($fh, "Cheese sandwiches: " . stripslashes($_POST['numberCheese']));
  $fh = fopen($factuur, 'r');
  $fileip = fread($fh, filesize($factuur));
  fclose($fh);
}
?>

尝试不同的fopen参数,如'w''r''r+'等似乎没有任何区别。删除fclose($fh)似乎也没有什么区别。

使用JS脚本打开新窗口。例如fclose($fh):之后

echo "<script>window.open($order, '_blank'); window.focus();</script>";

在数据库中存储东西可能会容易得多。

也就是说,使用fopen就是打开文件本身,在新的浏览器窗口中打开写入的文件将需要一些客户端脚本(即Javascript)来加载新创建的文件。

谷歌Javascript窗口.open().

Tom

由于您只想写入可打印页面。。你试过file_put_contents 吗

示例

if (isset($_POST['send'])) {
    $file = "test.html";
    $data = "Tuna sandwiches: " . stripslashes($_POST['numberTuna']) . "<br>";
    $data .= "Cheese sandwiches: " . stripslashes($_POST['numberCheese']) . "<br>";
    touch($file);
    file_put_contents($file, $data);
}