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

<?php
switch($x) {

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

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

}
?>

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

有帮助吗?

解决方案

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

刚刚提出:

$x = 

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

刚刚提出:

<*>

位于脚本的顶部。

如果您特别希望这对 GET HTTP方法有效,您也可以使用 $ _ GET 。我见过有些人声称 $ _ REQUEST 在某种程度上是不安全的,但没有证据支持这一点。

REQUEST['x']

位于脚本的顶部。

如果您特别希望这对 GET HTTP方法有效,您也可以使用 $ _ GET 。我见过有些人声称 $ _ REQUEST 在某种程度上是不安全的,但没有证据支持这一点。

其他提示

您以前的虚拟主机似乎都使用 register_globals ,您的代码依赖于此。这是一个危险设置,在PHP 6.0中被正确删除了!请改用开关($ _ GET ['x']){

您应该使用$ _GET来读出这些变量。有一个名为 register_globals 的弃用函数,但我肯定不会建议使用它,因为它是一个潜在的安全风险。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top