0

好吧,我有这些页面,

  • /admin/admin.php
  • /admin/blogger.php

在我的主 index.php 中,我有一个运行“如果存在 $page”函数的开关数组,它工作正常。我的所有页面都是从 site.com/index.php?page=about、site.com/index.php?page=misc 等调用的。

在我的 admin.php 页面内是一个 php 选项卡式导航,它使用 4 个选项卡作为我的管理部分(博主/图像管理器/文件管理器/引用管理器)。它为 4 个页面使用了选项卡功能的切换。

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&amp;tabindex=0&amp;act=ep&amp;id={$row->article_id}\">Edit</a>"  
      ...  
      ...  
      ...  

这是我遇到的问题。页面正确,tabindex 正确,然后停止工作。我只是得到一个空白页面,而不是我应该的编辑页面。我的 editPost 函数是正确的,因为我已经从 editpost.php?id=1 方式对其进行了测试,这是我试图避免的。是的,我的功能也包括在这里。

url 没有被正确传递吗?还是我的动作开关设置不正确。也许在切换之前设置 isset($_GET['act']) ?我不知所措。

谢谢你。

4

2 回答 2

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_rewrite 为:

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;
       }
    }

你明白了。

于 2012-12-13T20:50:48.917 回答
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;
      }
  }
}
于 2012-12-13T20:28:47.800 回答