[英]PHP: Effect of the pressed button before the button is pressed
我有一個非常簡單的PHP代碼,按下按鈕后應該輸出“Hi”。 它在我第一次打開頁面時工作得非常好 - 頁面上只有一個按鈕,我按下它並獲得“嗨”當我嘗試刷新頁面時出現問題。 “嗨”並沒有消失。
我嘗試了幾個瀏覽器並刷新頁面而不使用現金。 這沒有用。 唯一有用的是在新標簽頁面中打開頁面。 然后沒有“嗨” - 直到我第一次按下按鈕。
<form method="post">
<input type="submit" name="test" id="test" value="RUN" /><br/>
</form>
<?php
function testfun()
{
echo 'Hi ';
}
if(array_key_exists('test',$_POST)){
testfun();
}
?>
放置正確的操作頁面,或清空到相同的URL(但無論如何都放置標簽)。
<form method="post" action="page_here.php">
<input type="submit" name="test" id="test" value="RUN" /><br/>
</form>
嘗試檢查isset()。
function testfun() { echo 'Hi '; }
if ( isset($_POST) && isset($_POST['test']) ) {
testfun();
}
請參閱發布/重定向/獲取 。 您無法在提交后立即顯示確認消息,否則刷新瀏覽器將始終發送完全相同的POST。
代替:
header
進行重定向, 以下示例:
<?php
session_start();
if (array_key_exists('test', $_POST)) {
$_SESSION['posted'] = true;
// header requires an absolute URL so recreating it from $_SERVER superglobal
header('Location: ' . (!empty($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
die;
}
?>
<form method="post">
<input type="submit" name="test" id="test" value="RUN">
</form>
<?php
function testfun()
{
echo 'Hi';
}
if ($_SESSION['posted'] ?? null === true) {
testfun();
unset($_SESSION['posted']);
}
我不認為您了解發布的工作原理,當您發布將其發送到頁面的數據時,數據僅與該頁面一樣長。 這就是說,當你重新加載頁面時,數據會因為不穩定而消失。 如果要保留數據,則需要將其存儲在會話中。
另請注意,當您刷新頁面時,它會重新提交表單,如果您單擊地址欄並按Enter鍵,您將獲得一個空白的名單!
請查看會話,它將解決您的問題: PHP手冊
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.