我有一个PHP脚本,每天从cron下载电子邮件附件。我想创建一个HTML表单,可以在必要时手动运行此脚本和其他人。
当脚本运行时,有一个循环显示已经运行的电子邮件的数量,然后在脚本运行完毕的最后回声中显示。
我希望能够做到这一点,一旦在表单上按下按钮,窗口将显示这些输出,以便用户在脚本运行完毕后知道。
我到目前为止的简单形式:
<form action="test.php" type="post">
<input type="submit" value="Download Attachments" />
</form>
有可能实现这一目标吗?现在我能想到的最好的方法是在脚本运行完毕后重定向回到表单页面,但如果所有内容都在同一页面上,我希望它能让用户记录他们拥有的脚本跑到他们面前。
答案 0 :(得分:4)
实现这一点非常简单。请参阅以下示例代码:
<?php
if(isset($_POST['submit'])){
//code to be executed
}else{
//code to be executed
}
?>
<html>
<head></head>
<body>
<form method="post" action="">
<input type="submit" name="submit">
</form>
</body>
</html>
仅当单击提交按钮时,PHP脚本才会运行。
答案 1 :(得分:1)
如果您正在使用jQuery,那么您可以使用jQuery's Ajax,这是一个返回页面结果的简单函数。
这个JavaScript将在页面加载后立即运行:
$(document).ready(function() {
//tell the user that the script is still running
$.ajax({
type: "POST",
url: "getAttachments.php",
success: function(data) {
//data will contain the output from the page
},
complete: function() {
//tell the user that the script has finished running
});
});
你不需要jQuery来使用ajax,但它使它变得更容易和更整洁。你可以在这里看到没有jQuery的版本:https://www.w3schools.com/xml/ajax_intro.asp
答案 2 :(得分:0)
是的,您可以通过以下测试:
if (!empty($_POST)) {
// code to display your emails
}else{
//code to display the from
}
因此,您将始终位于同一页面上,并且PHP会决定向用户显示的内容,无需重定向或无论如何