Php 查询字符串页&;成员
我正在做一些测试,只是为了学习(通常我是用ajax的方式做的)。当url类似于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;
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当前的问题提供了一个解决方案。