2010-12-21 42 views
0

比方說,我輸入一個包含此結尾URL的註冊表單:registration.php?accountType=a 表單在同一頁面(registration.php)中進行解析。如果用戶沒有通過表單驗證,他們將被帶到registration.php並顯示錯誤消息。所以你看我失去了我的變量accountType = a。我的問題:表單驗證丟失變量

我可以提交表單進行驗證並保留accountType變量嗎?我知道這可以很容易地使用cookie來完成。我只想進一步瞭解。

解決方案:儘管以下所有答案都是有效的,但我還是使用了Session變量和<form action="registration.php?<?php print 'accountType=' . $_SESSION['accountType']; ?>"等。感謝您的幫助。

回答

0

你應該在你的形式使用:

<form action="registration.php?accountType=a"> 

你應該在你的PHP使用:

if ($validation_success) { 
    header('sucess.php') 
} else { 
    // don't do anything. The page(registration.php?accountType=a) loads 
} 

我只是給你的想法。

+0

+1,可能是最簡單的解決你的問題 – Starx 2010-12-21 08:10:51

0

您可以輕鬆地將它有3種方式...

  1. 使用PHP會話。只需執行如下操作:

    session_start(); $ _SESSION ['namespace'] = array('post'=> $ _POST,'get'=> $ _GET);

  2. 使用Cookie(Session對我來說似乎更優雅)。

  3. 使用Ajax請求;它會讓你的工作更輕鬆。

0

我認爲你應該在URL的最後添加「accountType = $ accountType」,當你創建一個http轉發時,這樣用戶就會回到正確的頁面。

我沒有看到你的代碼,但也許是這樣的:

if(auth()) 
{ 
    //do something... 
} 
else 
{ 
    header("Location: /registration.php?somerror=true&accountType=" . $accountType); 
}