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

时间:2012-09-12 14:46:16

标签: php

我正在编写一个简单的订单系统,其中使用fopen函数将多个数字(填写在表单中)写入另一个.php文件(也可能是.html)。这样可以正常工作,但在写入文件后,我希望浏览器实际打开该文件,最好是在 new 浏览器窗口中。这样我的客户就可以使用它来打印,用作发票等。

现在我仍然是一个基于php的新手,并且没有使用fopen的经验。但是在我寻找教程等的地方,据说fopen打开(或写当然)一个文件,但它并没有我所经历的那样。它似乎只允许访问指定的文件进行写入和读取,而不是实际显示新写入的页面。

为避免混淆:我不想在SO状态下打开像其他问题一样的链接。

我的代码:

<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)似乎没有任何区别。

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

将内容存储在数据库中可能会容易得多。

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

Google Javascript window.open()。

汤姆

答案 2 :(得分:1)

由于您只想写一个可打印的页面..您是否尝试过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);
}