2010-12-21 117 views
0

这可能是一个愚蠢的问题,但无论如何会问,正弦我不知道。关于全局变量和表单请求的PHP问题

我写了基本的PHP代码,它提供了表单。说我有一个登录页面,我使用的login.php页面服务,它就会在页面的login.html被称为像这样 -

<form action="login.php" method="post"> 

通过这一点,也意味着每一个岗位都需要自己的PHP文件,不是吗?这种感觉很奇怪。有没有办法让一个单一的文件,说code.php,而只是将每个表单作为函数?

编辑:具体来说,我说我有5个形式,一个接一个地在我的应用程序中使用。在登录后说,用户执行A,B,C和D任务,每个任务都作为POST请求发送到服务器。因此,而不是有A.php,B.php,C.php和D.php我想有一个code.php并具有A(),B(),C()和D()作为函数。有没有办法做到这一点?

同样在笔记上,我该如何处理跨多个表单的全局数组(例如当前登录的用户数组)?我想在不写入数据库的情况下执行此操作。我知道它可能更好地写入数据库和查询,但是甚至可以用全局数组来完成它?我想在一个文件中使用所有表单函数的原因是使用全局数组。

感谢, - 帕乌

+0

'<\form>'中是否有反斜杠?这是无效的HTML。 – deceze 2010-12-21 08:48:21

+0

是的,这是正确的。编辑器不会显示没有\的代码。我想有一种方法可以在问题中键入html代码,但没有阅读说明:) – user220201 2010-12-21 08:50:40

+0

http://stackoverflow.com/editing-help 4空格! – deceze 2010-12-21 08:52:28

回答

0

当然,没问题,只需将所有表单发布到相同的.php文件,并处理所有传入的POST数据。没有什么可以阻止你这样做。

虽然通常您的表单会发送不同的数据,但每个表单都需要一些自定义处理。如果你把所有这些逻辑放到同一个处理程序文件中,它将成为一段非常冗长,杂乱的代码。如果代码做了不同的事情,最好将代码分成不同的文件。

尽管您可以并且应该将公共部分(如数据库连接处理)抽象为函数或对象,然后在每个POST处理程序中将它们抽象出来。

+0

好吧,我也不想那样。根据我对上述问题的编辑,是否可以直接调用code.php中的函数A()而不必使用A.php? – user220201 2010-12-21 08:52:03

+0

@user但是,您在*文件中组织您的代码*完全取决于您。在调用'A()'的时候,你需要确保在调用它之前有一个定义的函数A(){}'。你可以通过将它放在'a.php'和'include'中来实现,或者在'code.php'中写入所有'A()','B()'和'Z()'函数。 – deceze 2010-12-21 08:55:20

0

没有理由为什么你不能只是有login.html的和作为的login.php相同的文件。将这两个页面上的代码合并为一个代码块,然后使用if语句检查表单是否已发布。这是你可以提供表单登录或呈现成功完成的表单的结果。

会话全局变量将处理您的全局数组问题,但我认为它不适合您的示例。该示例需要一个数据库表来存储用户登录的时间,因为没有其他方法可以从其他人的实例更新应用程序实例上的全局变量。

编辑

我会用一个Session变量,以确定有多少表格已经完成,那么也许使用switch语句来提供正确的形式:

function a(){ 
    //process form A 
    //if form A okay 
     $_SESSION['form_progress'] = 'b'; 
} 
function b(){ 
    //process form B 
    //if form B okay 
     $_SESSION['form_progress'] = 'c'; 
} 
function c(){ 
    //process form C 
    //if form C okay 
     $_SESSION['form_progress'] = 'd'; 
} 


switch($_SESSION['form_progress']){ 
    case 'b': 
     //serve form B 
     break; 
    case 'c': 
     //serve form C 
     break; 
    case default: 
     //serve form A 
     break; 
} 

希望这有助于

+0

感谢您阅读我回答我的问题。我在上面对它进行了编辑,使自己更清晰一些。你能否通过编辑和评论呢? – user220201 2010-12-21 08:40:08