PHP升级后比较失败

时间:2012-09-07 17:21:28

标签: php if-statement include php4

此代码曾用于早期版本的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专业版)。我只是在一个简单的链接(我想要返回www.website.com/?info=file )中调用“$ info = _ ”,即:< / p>
<a href="?info=file1">Click here to read File 1</a> 

4 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:3)

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

register_globals提取所有全局变量,以便在$_GET['info']开启时使用register_globals时,只需使用$info

此功能在php 5.3中已弃用,并已从php 5.4中删除,因为它会带来巨大的安全风险。

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

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

答案 2 :(得分:2)

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

在不知道错误的情况下,请尝试使用<?php代替<?

更新:由于您显然包含带有短打开标签的页面,因此您可以在主叫页面中致电:

ini_set('short_open_tag', '1');

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

答案 3 :(得分:-1)

您的代码中存在错误。改变这个:

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

对此:

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