此代码以前在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");}