关于全局变量和表单请求的PHP问题
这可能是一个愚蠢的问题,但无论如何我都会问,因为我不知道 我已经编写了用于表单的基本php代码。假设我有一个登录页面,我使用login.php页面提供它,它将在login.html页面中被调用,如下所示-关于全局变量和表单请求的PHP问题,php,global-variables,http-post,Php,Global Variables,Http Post,这可能是一个愚蠢的问题,但无论如何我都会问,因为我不知道 我已经编写了用于表单的基本php代码。假设我有一个登录页面,我使用login.php页面提供它,它将在login.html页面中被调用,如下所示- <form action="login.php" method="post"> 这也意味着每个帖子都需要自己的php文件,不是吗?这种感觉很奇怪。有没有一种方法可以只使用一个文件,比如code.php,而只使用每个表单作为函数 编辑:具体来说,假设我有5张表格,在我的申请中一
<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()作为函数。有办法做到这一点吗
同样,我如何处理跨多个表单的全局数组(例如,当前登录用户的数组)?我想在不向数据库写入数据的情况下执行此操作。我知道写数据库和查询可能更好,但是否可以使用全局数组?我考虑将所有表单函数放在一个文件中的原因是使用全局数组
谢谢,
-Pav没有理由不能将login.html和login.php作为同一个文件。将这两个页面上的代码组合成一个代码块,然后使用
if
语句检查表单是否已发布。这是您可以提供表单登录或显示成功完成表单的结果
会话全局变量将处理全局数组问题,但我认为它不适合您的示例。该示例需要在用户登录时存储一个数据库表,因为没有其他方法可以从其他人的实例更新应用程序实例上的全局变量
编辑
我会使用会话变量来确定表单完成了多少,然后可能会使用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;
}
希望这有帮助当然,没问题,只需将所有表单发布到同一个.php文件中,并让它处理所有传入的POST数据。没有什么能阻止你做这件事 通常,表单发送不同的数据,每个表单都需要一些自定义处理。如果将所有这些逻辑放在同一个处理程序文件中,它将变成一段真正冗长、混乱的代码。如果代码执行不同的操作,最好将代码分成不同的文件
您可以也应该将数据库连接处理等常见部分抽象为函数或对象,并在每个POST处理程序中进行处理。感谢阅读和回答我的问题。我在上面对它进行了编辑,使自己更清楚一点。你能看一下编辑并评论一下吗?
中的反斜杠是打字错误吗?这是无效的HTML。是的,这是正确的。如果没有\,编辑器将不会显示代码。我想有一种方法可以在问题中键入html代码,但没有阅读说明:)4个空格!谢谢你能不能也评论一下关于全局变量的问题部分?你说“全局数组”的意思可能是错误的。全局变量是当前脚本全局范围内的变量。它们不会在不同用户的请求之间进行全局共享,例如,每个访问者都有“自己的全局数组”。不同的访问者之间只能共享一个数据库或文件。我也不希望这样。根据我对上述问题的编辑,是否有一种方法可以直接调用code.php中的函数a(),而不必使用.php?@user如何将代码组织到文件中完全取决于您。调用A()
时,您需要确保在调用它之前,在某个地方定义了一个函数A(){}
。您可以通过将它放入a.php
和中,包括它,或者通过在code.php
中编写所有a()
、B()
和Z()
函数来实现这一点。