我正在处理 html / php代码,如下所示,我想在单击按钮时调用php代码的特定部分。
<html>
<?php
if($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['go-button'])) {
for each ($mp4_files as $f) {
}
}
?>
<form action ="" method="POST">
<table>
<td style="width:5%; text-align:center;"><button style="width:90px;" type="submit" name="go-button" value="Go" class="btn btn-outline-primary">Go</button> <!-- Line#B -->
</table
</form>
</html>
单击 Line#B 上的按钮,就会在上面调用php代码,并且该代码位于 if块内部。
我现在遇到的问题是,在刷新页面时,它也正在我不想发生的if块内。我希望仅在单击转到按钮时才激活屏蔽。
问题陈述:
我想知道应该在上面的 php代码中进行哪些更改,以便在刷新页面时不会将其放入if块内。仅应在 Line#B 上单击一个按钮,然后单击它。
答案 0 :(得分:2)
我不确定您在哪里遇到了这样的问题-在一条评论中,您实际上触到了头,就像如何防止用户重新加载页面时重新提交表单一样。您应该能够采用类似以下的方法-尽管如果PHP确实生成了内容并且它位于文档正文中某个位置,则您需要使用output buffering
来防止与headers already sent
有关的错误>
<?php
if( $_SERVER['REQUEST_METHOD']=='POST' and !empty( $_POST['go-button'] ) ) {
foreach( $mp4_files as $f ) {
/* do stuff */
}
/* finished processing POST request, redirect to prevent auto re-submission*/
exit( header( sprintf('Location: %s', $_SERVER['SCRIPT_NAME'] ) ) );
}
?>
<html>
<head>
<title></title>
</head>
<body>
<form method="POST">
<table>
<tr>
<td style="width:5%; text-align:center;">
<!-- Line#B -->
<button style="width:90px;" type="submit" name="go-button" value="Go" class="btn btn-outline-primary">Go</button>
</td>
</tr>
</table>
</form>
</body>
</html>