Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用$\u GET value切换表单,或者在PHP中为每个表单创建不同的页面_Php_Include - Fatal编程技术网

使用$\u GET value切换表单,或者在PHP中为每个表单创建不同的页面

使用$\u GET value切换表单,或者在PHP中为每个表单创建不同的页面,php,include,Php,Include,如果我切换表单,我会在index.php上使用它 switch($_GET["action"]) { case "login": include "login.php";break; //loads login form case "register": include "register.php";break; //loads register form } 如果我对每个表单使用不同的页面,我需要在每个页面中包含页眉、页脚和其他内容 对于登录,用户将输入: index.php?actio

如果我切换表单,我会在index.php上使用它

switch($_GET["action"]) {
case "login": include "login.php";break; //loads login form 
case "register": include "register.php";break; //loads register form 
}
如果我对每个表单使用不同的页面,我需要在每个页面中包含页眉、页脚和其他内容

对于登录,用户将输入:

index.php?action="login"


哪一个更常见和实用?

< P>如果你使用前一个选项,你需要考虑如果用户直接访问那些页面,如Login .PHP会发生什么:那些包含的文件可以通过浏览器访问吗?如果是这样,您可以考虑将它们放到Web目录之外并在自己的文件夹中。如果不可能,可以在login.php/register.php脚本中执行一些检查:

if (__FILE__ === $_SERVER['SCRIPT_FILENAME']) {
     // user visited script directly, rather than included
}
另一个选项更常用,尤其是当您的所有文件都位于Web根目录下时,只要包含页眉、页脚、配置脚本等所需的逻辑保持简单,否则您将不得不在多个位置对其进行更改


小结:我建议在每个页面上为页眉和页脚脚本添加简单的include调用,除非您可以将包含的文件放在Web根目录之外的某个位置。

最常见的做法可能是为处理每种类型的表单帖子提供单独的函数。这些文件可以存储在单个PHP文件或多个文件中,并包含在页面中。有选择地包含各种php脚本是可以的,但不是那么常见的做法


对于您的布局,有各种可能的解决方案,根据您的网站或应用程序的不同,每种解决方案都有各自的优缺点,但很难判断除了永远不要有重复的代码之外,什么是最好的。

我更喜欢文件是否存在{$\u GET['action']}.php包括{$\u GET['action']}.php;其他包括default.php;-通过适当的清理和权限检查,当然…@DaveRandom会创建太多的安全代码-clutterI只会包括。/{$\u GET->name->in_arrayaAction,login,register}.php;-至于你的实际问题:这是一个偏好的问题。Dispatcher脚本更为常见,对内部实现的了解较少。但url重写也应该美化一下。
if (__FILE__ === $_SERVER['SCRIPT_FILENAME']) {
     // user visited script directly, rather than included
}