3

我正在为我的公司设计一个新网站,并且我正在尝试实现切换导航,这是我过去在所有网站上使用的。

<?php
switch($x) {

default:
include("inc/main.php");
break;

case "products":
include("inc/products.php");
break;

}
?>

出于某种原因,当我转到 index.php?x=products 时没有任何反应,它仍然显示 inc/main.php,换句话说,它没有从 URL 中检测到 X 变量。这与全局变量有关吗?

4

4 回答 4

16

是的,您的 PHP 配置已正确register_globals关闭,因为这非常不安全。

只是说:

$x = $_REQUEST['x']

在脚本的顶部。

$_GET如果您特别希望它仅适用于GETHTTP 方法,您也可以使用它。我见过一些人声称这$_REQUEST在某种程度上是不安全的,但没有证据支持这一点。

于 2008-11-03T11:40:11.667 回答
5

您以前的虚拟主机似乎都使用了register_globals并且您的代码依赖于它。这是一个危险的设置,在 PHP 6.0 中被正确地删除了!改为使用switch($_GET['x']) {

于 2008-11-03T11:41:19.667 回答
1

您应该使用 $_GET 来读出这些变量。有一个不推荐使用的函数register_globals,但我绝对不建议使用它,因为它存在潜在的安全风险。

于 2008-11-03T11:41:06.033 回答
0

您可以使用http://php.net/manual/es/function.extract.php如果您想提取变量,但请记住,这可以让任何用户在您的脚本中使用他们想要的内容设置变量,这使得它与使用 register_globals 一样不安全

于 2011-08-23T07:42:33.683 回答