PHP升级后比较失败


Comparison failing after PHP upgrade

此代码以前在PHP4的早期版本中工作,但现在托管服务器已升级到PHP5,因此不再在我的网站上工作。有什么简单的方法可以修改这个代码使其重新工作吗?

<?
if ($info == "file1") {include ("file1.html");}
if ($info == "file2") {include ("file2.html");}
if ($info == "file3") {include ("file3.html");}
if ($info == "file4") {include ("file4.html");}
if ($info == "file5") {include ("file5.html");}
?> 

编辑:是的,这是我在最终网站上的代码(这里不是PHP专业版)。我只在一个简单的链接中调用"$info=_"(我想返回www.website.com/?info=file),即:

<a href="?info=file1">Click here to read File 1</a> 

如果这是实际的代码,那么问题是在PHP块的开头使用短标记<?。在PHP5中,默认情况下不再支持这些功能。而是使用

<?php ...code here... ?>

或者,您可以要求提供商在php.ini中设置"short_open_tag"选项。

根据您的编辑,问题似乎是您在php.ini文件中的旧版本php中打开了register_globals

register_globals提取所有全局变量,因此在通常使用$_GET['info']的情况下,如果启用register_globals,则可以简单地使用$info

该功能在php5.3中被弃用,并从php5.4中删除,因为它会带来巨大的安全风险。

为了解决您的问题,您可以在您的条件之前设置变量:

$info = $_GET['info'];
if ($info == "file1") {include ("file1.html");}
...

默认情况下,不启用短标记<? ?>

在不知道错误的情况下,尝试使用<?php而不是<?

更新:由于您显然包含了带有短打开标签的页面,因此在您的调用页面中,您可以调用:

ini_set('short_open_tag', '1');

我怀疑您的服务提供商是否会为您设置短开放标签属性。

您的代码中有一个错误。更改此项:

if ($info == "file5") {include ("file5html");}

对此:

if ($info == "file5") {include ("file5.html");}