在我的主index.php中,我有一个运行'if exists $ page'功能的开关数组,工作正常。我的所有页面都是从site.com/index.php?page=about,site.com/index.php?page=misc等调用的。
在我的admin.php页面内是一个php选项卡式导航,它为我的管理部分使用4个选项卡(博客/图像管理器/文件管理器/报价管理器)。它使用了4页的tabfunction切换。
blogger.php是我的问题所在。
现在我的问题: 而不是为博客系统设置多个页面,“delete.php,add.php,edit.php等”,并使用像'删除点击(delete.php?id = 1)这里',我想尝试运行这一切都来自博客页面。例如,“site.com/admin.php?page=blogger&act=dp/ep/ap”将获得正在传递的$ act,然后使用开关完成操作。
我的PAGE开关工作正常,但是当我尝试调用更多开关时,它不起作用。我尝试使用它作为我的代码
if(isset($_SESSION['id'])) {
$act = $_GET['act'];
switch ($act) {
case 'ap':
addPost();
break;
case 'ep':
editPost();
break;
case 'dp':
delPost();
break;
default:
~table setup
~$query, $result
~if / while loops
~echo $row->article_id/title/author/date
echo "<a href=\"index.php?page=admin&tabindex=0&act=ep&id={$row->article_id}\">Edit</a>"
...
...
...
这是我遇到的问题。页面正确,tabindex是正确的,然后它停止工作。我只是得到一个空白页,而不是像我应该的编辑页面。我的editPost函数是正确的,因为我已经从editpost.php?id = 1方式测试它,我试图避免。是的,我的功能也包含在这里。
是不是正确传递的网址?或者我的行为开关设置不正确。也许在切换之前设置一个isset($ _ GET ['act'])?我很茫然。
谢谢。答案 0 :(得分:0)
你想像这样一次传递多个动作吗?
//test.php?action=add/update/notify
if(isset($_GET['action'])) {
$act = $_GET['action'];
//split actions
$actions = explode('/', $_GET['action']);
foreach( $actions as $action ){
switch ($action) {
case 'add':
echo "add<br />\n";
break;
case 'update':
echo "update<br />\n";
break;
case 'notify':
echo "notify<br />\n";
break;
default:
// default action if no match (runs for every item of $actions array)
break;
}
}
}
答案 1 :(得分:0)
site.com/admin.php?page=blogger&act=dp/ep/ap
你做不到。具体来说是act=dp/ep/ap
。我建议混合使用mod_rewrite
和多个$_GET
,这样你就可以像WordPress那样做了:
site.com/admin/blog/edit
Mod_rewritten:
site.com/admin.php?page=blog&act=edit
从那里你只需使用$_GET
并且只有一个switch
具有依赖关系。
$page = $_GET['page'];
$action = $_GET['act'];
switch ($page) {
case 'blog':
do($action);
break;
case 'news':
do($action);
break;
case 'users':
do($action);
break;
default: echo 'Try again.';
break;
}
function do($act) {
switch($act) {
case 'delete': confirmDelete();
break;
case 'update': updateConfirm();
break;
}
}
你明白了。