2013-02-22 28 views
0

我有一個用戶發佈表單的頁面。它在php更改僅在刷新後重新發布表單時纔會發生更改php

如果用戶已經登錄,則表單不顯示。 如果用戶未登錄,則會顯示錶單。

現在,當用戶第一次訪問該網站時,會顯示該表單。然後他填寫表格並將其作爲POST。成功登錄後,他將被重定向到同一頁面。

問題是,在被重定向到同一頁面後,表單仍然可見。但是,如果我刷新它,表單會消失。

如何更改/修改以實現我想要的功能。

我不知道給我的代碼是否會有幫助。雖然,據所以我附上我的基本代碼:

if(!isset($_SESSION['id'])){ 
    //show form 
    <form action="" method="post"> 
     <br><button class="lfloat" type="submit" id="submit" value="register0" name="submit">Register</button><br><br> 
    </form> 
    <?php if(isset($_POST['submit'])&&$_POST['submit']=='register0'){ 
     //do all the insertion of data into database here only. 
     .... 
     .... 
     echo "Success!!"; 
    } 
} 
if(isset($_SESSION['id'])){ 
    //don't show form 

} 
+0

凡在你的代碼你設置$ _SESSION ['ID'] ? – 2013-02-22 17:25:33

+0

@John:在我開始的頁面中包含:'session_start();' – xan 2013-02-22 17:28:40

+0

是的,但是你在哪裏設置$ _SESSION ['id']?表格發佈後?你可以在你的示例代碼中包含它嗎? – 2013-02-22 17:29:54

回答

0

if(isset($_POST['submit'])&&$_POST['submit']=='register0'){ 
     //do all the insertion of data into database here only. 
     .... 
     .... 
     echo "Success!!"; 
$_SESSION['id'] = 'some value'; 
header(Location: 'yourForm.php'); 
exit; 

    } 

應該爲你工作......也不要忘了寫

session_start(); 

在top of your form.php

0

這就是我該怎麼做的:

<?php $hideForm = isset($_SESSION['id']); ?> 

<form action="" method="post" style="<?= $hideForm ? 'display:none;' : '' ?>" > 
... 

或更簡潔:

<form action="" method="post" style="<?= isset($_SESSION['id']) ? 'display:none;' : '' ?>" > 
0

嗯,那你保存ID在數據庫中,但我沒有看到你重新加載頁面它是真實的,所以它不存在於SESSION保存ID後。

一旦你保存了新的信息,你就可以做<form action="pageURL.php?action=save">,但是也許你需要做一個切換,並通過查詢字符串傳遞一個動作,這樣該帖子不會在刷新時重新提交。這個想法是使用這種模式:Post/Redirect/Get。然後你的網頁看起來是這樣的:在

$action = filter_input(INPUT_GET, 'action', FILTER_SANITIZE_STRING); 

switch ($action) { 
    case 'save': 
     //Do your the registration and then 
     header('Location:YourPagePath.php?action=saved'); 
     break; 
    case 'save': 
     /*FALL TRHOUGH*/ 
    default: 
     //The rest of the page code 
     break; 
} 

而且,速度快,但不是一個解決方案的好會,在成功登錄:

echo '<script> 
    alert("Save successful"); 
    location.href="YourPagePath.php" 
</script>'; 
exit;