如何获取 PHP 脚本以在保存文件后在新的浏览器窗口中打开文件

How Can I Get a PHP script to open a file in a new browser window after it saves it

提问人:Chris Copland 提问时间:11/5/2023 最后编辑:PippoChris Copland 更新时间:11/5/2023 访问量:34

问:

  1. 我在 WAMP64 的 virtualhost 目录中有一个表单填充器 .php 文件。文档的大小与 A4 页面的大小完全相同,并且看起来与模板文件完全相同,只是它具有占位符位于模板文件中的表单字段.html(这基本上是 A4 信头)
  2. 当用户单击“创建”按钮时,表单数据将发送到form_filler.php脚本。
  3. form_filler.php接收数据并将其输入到占位符中,如 [date] 和“模板文件.html中的其他占位符。
  4. 然后,它将包含新信息的文件保存到我的通信记录的命名目录中。
  5. 然后它会显示一个警告框,告诉我: (“表单数据已应用于信笺抬头并已成功保存! 在这一点上,我现在已经保存了我的文件,可以通过转到记录文件夹来访问它,在浏览器中打开文件并使用pdfSam Enhanced打印出来。

我想要的是这些解决方案中的任何一种。

  1. 若要在 form_saver.php 文件中添加其他代码,完成后将显示“是”或“取消”选项供用户选择: 如果他们选择“是”,则脚本将在浏览器和打印对话框中打开新保存的文件。如果他们选择取消,则选项框将关闭。

  2. 如果脚本甚至可以在新的浏览器窗口中打开文件,则用户可以在校对文档后选择打印

我代码的最后一部分是:

// Save the modified content to the file
if (file_put_contents($filepath, $templateContent) !== false) {
        // File saved successfully
           echo 'Form data has been applied to the letterhead and saved successfully!';
      } else {
        // Handle file save error
        echo 'Error: Failed to save the file.';
      }
    } else {
      echo 'Invalid request.';
    }
    ?>

我遇到的问题是,尽管我尝试了javascript,窗口打开和标题位置选项,但它们会导致: 阻止跨域请求:同源策略不允许读取 http://localhost/bizadmin/php/testfile.html 的远程资源。(原因:缺少 CORS 标头“Access-Control-Allow-Origin”)。状态代码:200。

我尝试使用变量$testFilePath它确实找到了文件,但只在警报框中重现了它:

<?php
        // Open the test file in a new browser window/tab
        echo '<script>window.open("' . $testFilePath . '", "_blank");         </script>';
    } else {
        // Handle file save error
        echo 'Error: Failed to save the file.';
    }
} else {
    echo 'Invalid request.';
}
    ?>

===========我尝试过使用测试文件========
重定向到文件:

    // Redirect to the HTML file.
    header('Location: http://localhost/mydirectory/php/testfile.html');

==和

        // Send the CORS header.
        header('Access-Control-Allow-Origin: *');

        // Check the referer.
        if ($_SERVER['HTTP_REFERER'] !== 'http://localhost/bizadmin/letterhead-                                           formfiller-v2.php') {
          header('HTTP/1.0 403 Forbidden');
          exit();
        }
?>

没有效果 我相信一定有一种方法可以使用 wamp64 在我的本地机器上做到这一点, 有什么指导会很棒吗?

PHP 文件 wamp64

评论

0赞 CBroe 11/7/2023
目前尚不清楚 CORS 将在哪里发挥作用;当你试图提出这个请求时,你不是“开”了吗?http://localhost/
0赞 Chris Copland 11/17/2023
是的,正如我在上面的代码中所包含的那样 // 检查引用者。if ($_SERVER['HTTP_REFERER'] !== 'localhost/bizadmin/letterhead- formfiller-v2.php') { header('HTTP/1.0 403 禁止访问');
0赞 CBroe 11/17/2023
但我不明白 CORS 如何在这里应用?您不是在发出后台请求,您只是尝试在新窗口中打开一个 URL。我什至可以让它看到任何意义的唯一方法是标头版本 - 如果您发出通过 AJAX/fetch 将表单数据发送到服务器的初始请求......?Location
0赞 Chris Copland 11/18/2023
感谢您的观看,我听到了您的挫败感(想象一下我的),这一切似乎都很简单,但我已经尝试了多种方法来实现这一目标。可悲的是,到目前为止失败了。php脚本运行良好,可以完成我想要的一切,将表单保存在选定的文件夹中以供记录。还有一个警报框,告诉我它已成功完成。当我深入了解这个问题时,我将添加一个完整的解决方案。

答: 暂无答案