Php 查询字符串页&;成员

Php 查询字符串页&;成员,php,query-string,Php,Query String,我正在做一些测试,只是为了学习(通常我是用ajax的方式做的)。当url类似于http://xxx/?se=page&members=11 <?php if (isset($_GET['se'])){ switch ($_GET['se']){ case "page&members": include "members.php"; break;

我正在做一些测试,只是为了学习(通常我是用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";
            }
    }
?>
if ( isset( $_GET['page'] ) )
{
    $file = "{$_GET['page']}.php";

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

}


问题是,即使使用此url
http://xxx/?se=page&members=11

在您显示的示例中:$\u GET['se']=='page'和$\u GET['members']=='11'

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

             default:
                 include "in.php";
            }
    }
?>
if ( isset( $_GET['page'] ) )
{
    $file = "{$_GET['page']}.php";

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

}
您需要更改您的案例陈述:

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

假设
11
是id,则应将行为更改为:

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

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

             default:
                 include "in.php";
            }
    }
?>
if ( isset( $_GET['page'] ) )
{
    $file = "{$_GET['page']}.php";

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

}

您有两个变量,其中se持有值“page”,而成员持有值“11”,因此您的案例将始终默认为se从不持有值“{page&members}”

执行此操作

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


别忘了添加break语句!:-)
$\u GET['se']==“page”
,而不是
se=page&members=11
包含的文件中还提供了所有参数。因此,将查询字符串转发到包含的文件是不必要的,甚至不起作用。我也不建议包含用户可以处理的每个文件,因为这允许XSS漏洞。@YMMD很好,修复了我的代码。他可以自己避免XSS,这段代码为OP当前的问题提供了一个解决方案。