PHP包含了如果文件存在以及如果文件不存在怎么办的代码


PHP include code for if file exists and what to do if it doesn't

很久以前,这段代码曾经工作过,但现在似乎有些事情正在阻止它正常工作。我希望有人能告诉我发生了什么事。我担心PHP的升级已经杀死了这些代码。是吗?

我使用下面的代码来检查和查看一个html文件是否存在,如果存在,它将使用它。如果没有,它将使用文件index2.html。

<?php if ((file_exists("$id.html")) == true) { require ("$id.html"); } else { require ("index2.html"); } ?>

我在我的主页index.php上使用这段代码。然而,由于一些奇怪的原因,当我输入一个链接:例如:index.php?Id =exampleurlhere,代码没有检查文件是否存在,而是自动使用index2.html文件,尽管我的代码告诉我,如果文件存在(它确实存在),那么就需要使用它。为什么现在无视我的命令了?

多年来一直在使用这个代码,从来没有遇到过任何问题,直到最近才出现问题。有什么建议吗?

我认为问题在于"register_globals"设置。在(非常)老版本的PHP中,这是默认开启的,但在新版本中已被删除,因为这在旧版本中导致了许多变量注入攻击。

您的$id直接来自URL中的值。现在它不再自动注册了,您可以在该行上方添加一行"$id=$_GET['id'];",以使它再次工作。

这只是一个快速修复。我建议你重写程序,这样就不会有用户使用URL非法访问文件的任何变化。