2012-03-29 115 views
1

我正在做一些测试,只是为了学习(通常我以ajax的方式做到这一点)。我试图改变页面时的URL是一样的东西http://xxx/?se=page&members=11查询字符串页面和成员

<?php 
    if (isset($_GET['se'])){ 
     switch ($_GET['se']){ 
      case "page&members": 
       include "members.php"; 
       break; 

      default: 
       include "in.php"; 
      } 
    } 
?> 

的问题是,代码会重定向到这个网址http://xxx/?se=page&members=11

+0

'$ _GET [ '本身'] == “页”',** **不' se = page&members = 11' – 2012-03-29 16:22:37

回答

1

做这个

<?php 
if (isset($_GET['se']) && isset($_GET['members'])){ 
    include (($_GET['se']=="page") ? "members.php" : "in.php"); 
} 
?> 
+0

正是我所需要的。谢谢 – Daniel 2012-03-29 16:54:42

0

在例子中,你却显示in.php:$ _GET [” SE '] == '页' 和$ _GET [' 会员] == '11'

你想改变你的case语句:

switch ($_GET['se']){ 
     case "11": 
     include "members.php"; 
... 
+0

不要忘记添加break语句! :-) – YMMD 2012-03-29 16:22:33

2

假设11是id,那么你应该改变行为到:

链接:http://xxx/?page=members&id=11

if (isset($_GET['page'])) 
{ 
    $file = "{$_GET['page']}.php"; 

    if (file_exists($file)) 
     include($file); 
    else 
     include('in.php'); 

} 
+1

所有参数也可在包含的文件中找到。因此,将查询字符串转发到包含的文件是没有必要的,甚至不会工作。我也不建议包含用户可以解决的每个文件,因为这会导致XSS漏洞。 – YMMD 2012-03-29 16:24:36

+1

@YMMD好点,修复了我的代码。他可以自己避开XSS,这个代码为OP当前的问题提供了一个解决方案。 – 2012-03-29 16:26:49

+1

* wrong * answer,你正在处理错误的URL。 – 2012-03-29 16:32:12

0

你有2个变量,那里有自身持有的价值“页”和成员存放值“11”,因此你的情况下,将始终默认为本身从不保存的值 '{页&成员}'