2010-12-21 46 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); 
}