2012-11-12 38 views
0

我想從我的頁面發送一個名爲index.php的數據,該動作與同一頁面,因此我可以在索引中獲得$_POST['submitted']。 PHP,當我提交數據是成功保存到我的數據庫,但是當我重新加載頁面數據仍然保存到我的數據庫。我的問題是我如何避免發送數據時,我重新載入,但行動是在同一頁(<?php echo $_SERVER['PHP_SELF'];?>)..?避免在頁面重新加載時和表單動作使用相同頁面時發送數據

謝謝..

//page index.php 
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> 
    <input type="hidden" name="submitted" value="1" /> 
    <input type="text" name="email_address"/> 
    <input type="submit" value="submit"/> 
</form> 

//still in index.php 
if(isset($_POST['submitted']) && $_POST['submitted']==1) 
{ 
    //send data 
} 
+0

嘗試'header('Location:index.php?msg = something');'數據成功添加到db後 – GBD

回答

0

使用

if(isset($_POST['submit'])){ //send data} 

因爲你給了值= 1到隱藏字段,這就是如果條件始終得到正確的。

0

最可靠的做法是使用兩個稍微不同的網址。重新加載頁面時出現問題的原因是瀏覽器認識到它與調用的URL完全相同,因此執行完全相同的請求(包括post變量)。這不會發生在不同的網址。 向表單目標網址添加查詢參數就足夠了,這種方式網址不同,但仍然有相同的腳本調用。你可以簡單地忽略那個虛擬參數。在處理完post變量(將它們存儲在數據庫中)之後,您將重定向頭髮送到瀏覽器,該瀏覽器指向沒有查詢參數的普通url。這樣瀏覽器就會重新加載頁面而不發送post變量。您可以使用phps header()功能進行重定向。

+0

感謝您的答覆..所以這是不可能的同一頁,如果我添加查詢字符串我的網址? – casper

+0

如上所述,它是同一'頁面',您只能使用虛擬參數。而你想做的是你的決定。我建議你至少試一試。 – arkascha

0

添加一個名字提交輸入應解決的問題,如:

...  
<input type="submit" name="submit" value="submit"/> 
if(isset($_POST['submit']) { 
... 

在另一方面,我覺得應該是:

action="<?php $_SERVER[ 'PHP_SELF' ]; ?>" 

沒有「迴音」。

希望這會有所幫助。

相關問題