[英]how to unset post array?
每次我刷新頁面,我得到相同的值存儲在post數組中。 我想要在提交之后執行echo語句,並且在刷新之后沒有回顯結果。
<?php
if(isset($_POST['submit']))
{
$name = $_POST['name'];
echo "User name : <b> $name </b>";
}
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" name="name"><br>
<input type="submit" name="submit" value="Submit Form"><br>
</form>
從表單中,無論使用GET還是POST方法,您都無法檢查它是刷新還是第一次提交。
要確保單個消息,您需要:
一種。 處理完請求后,將用戶重定向到其他位置。
if(isset($_POST['submit'])) {
// process data
header("Location: new-url");
}
並在另一個URL上顯示該消息。
灣 設置一個cookie / session變量,告訴你表單已經處理完畢。
if(isset($_POST['submit']) && !isset($_SESSION['form_processed'])) {
$_SESSION['form_processed'] = true;
}
第二種方法會在用戶關閉瀏覽器之前終止您的表單,因此您應該執行更復雜的操作 - 例如在表單中存儲另一個隱藏字段,並將其存儲在會話中。
如果您提交表單然后刷新生成的頁面,瀏覽器將重新發布表單(通常首先提示)。 這就是POST數據始終存在的原因。
一個選項是存儲會話變量並將其發送到表單中,然后檢查它是否與表單處理代碼匹配 - 以確定它是否是重新發布的。
在表格內:
<input type="hidden" name="time" value="<?php echo $time; ?>" />
在PHP中:
session_start();
if(isset($_POST['submit']))
{
if(isset($_SESSION['time']) && $_SESSION['time'] == $_POST['time'])
{
echo "User name : <b> $name </b>";
}
}
$time = $_SESSION['time'] = time();
另一個選擇是在處理后期數據后重定向:
if(isset($_POST['submit']))
{
...
...
header('Location: ' . basename($_SERVER['PHP_SELF']));
exit();
}
您需要維護一個狀態,以確定是否已顯示$name
。 最簡單的方法可能是在瀏覽器cookie中維護該狀態。
<?php
$nonce = $_COOKIE['nonce'];
$new_nonce = mt_rand();
setcookie('nonce', $new_nonce);
if(isset($_POST['submit']) && $_POST['nonce'] == $nonce)
{
$name = $_POST['name'];
echo "User name : <b> $name </b>";
}
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="hidden" name="nonce" value="<?php echo $new_nonce ?>">
<input type="text" name="name"><br>
<input type="submit" name="submit" value="Submit Form"><br>
</form>
nonce
cookie更改為nonce
數組,並相應地更新它。 如果你想提交使用后刷新頁面
<form method="get"
確定你的表單是否有很多數據,還需要使用$ _GET而不是$ _POST變量:)正確的方法,但這個邏輯不好,需要重構這個腳本:
<?php
if(isset($_POST['submit']))
{
$name = $_POST['name'];
echo "User name : <b> $name </b>";
unset($_POST['submit']);
}
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" name="name"><br>
<input type="submit" name="submit" value="Submit Form"><br>
</form>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.