如何将/1.php更改为index.php?id=1 如果(文件存在($filename)){ 回声“; } 否则{ 回声“; }

如何将/1.php更改为index.php?id=1 如果(文件存在($filename)){ 回声“; } 否则{ 回声“; },php,Php,好吧,我正在尝试这样做,我将有像1.php2.php3.php这样的页面。。。。但是我希望它们看起来像“index.php?id=1”,而不是/1.php、/2.php,并且希望阻止试图直接访问(例如)2.php的用户。。有人能帮忙吗?。。有什么简单的方法可以做到这一点吗?在index.php中,您可以做到这一点 if (file_exists($filename)) { echo "<a class='next' href='$filename'><img src='ima

好吧,我正在尝试这样做,我将有像1.php2.php3.php这样的页面。。。。但是我希望它们看起来像“index.php?id=1”,而不是/1.php、/2.php,并且希望阻止试图直接访问(例如)2.php的用户。。有人能帮忙吗?。。有什么简单的方法可以做到这一点吗?

在index.php中,您可以做到这一点

if (file_exists($filename)) {
echo "<a class='next' href='$filename'><img  src='images/next.png'</a>";
} 
else {
echo "<img src='images/next-dis.png'/>";
}

这将加载get变量的id,但是任何人都可以更改此变量并访问他们在此处输入的任何内容。

在index.php中,您可以这样做

if (file_exists($filename)) {
echo "<a class='next' href='$filename'><img  src='images/next.png'</a>";
} 
else {
echo "<img src='images/next-dis.png'/>";
}

这将加载get变量的id,但是任何人都可以更改此变量并获得对此处输入内容的访问权。

搜索.htaccess重写规则。您将找到类似场景的示例。请参阅-

搜索.htaccess重写规则中的“实用解决方案”部分。您将找到类似场景的示例。请参见-

中的“实用解决方案”部分,Apache
文件中的以下重写规则。htaccess
文件应该可以实现这一点

include($_GET["id"]".php");

这基本上匹配了
[0-9]+.php格式的任何URL,并将其重定向到
/index.php?id=####
其中##匹配#####.php。

Apache
.htaccess
文件中的以下重写规则应该可以做到这一点

include($_GET["id"]".php");


这基本上匹配了
[0-9]+.php格式的任何URL,并将其重定向到
/index.php?id=####
其中##匹配######.php.

您应该在
中这样做。htaccess
我搜索了几个小时,但找不到。你能告诉我我应该用谷歌搜索什么吗?你应该在你的
.htaccess
中搜索,我搜索了好几个小时,但是我找不到。你能告诉我我应该用谷歌搜索什么吗?即使有警告。。如果周围没有
,我就不会发布它。人们会读到这篇文章,有些人认为这样的收录是可以接受的。是的,我有第二个想法发布它。但我想向他们展示,动态地包含另一个文件是可能的。htaccess的问题是并非所有人都可以通过GoDaddy等服务访问此文件。如果是本地测试,或者您拥有对服务器的完全访问权限,那么这肯定是向goEven发出警告的最佳方式。。如果周围没有
,我就不会发布它。人们会读到这篇文章,有些人认为这样的收录是可以接受的。是的,我有第二个想法发布它。但我想向他们展示,动态地包含另一个文件是可能的。htaccess的问题是并非所有人都可以通过GoDaddy等服务访问此文件。如果是本地测试,或者您拥有对服务器的完全访问权限,那么这肯定是最好的方法。有什么原因不能工作吗((当我点击下一个时,它会转到1.php,但找不到文件。当我输入id=1或任何内容时,同一页面再次加载:((在这种情况下,1.php不存在。它是一个虚拟URL,由服务器重写。只要
index.php
位于系统的根目录,它就应该重写任何URL,如
/[0-9]+.php
到/index.php?id=####。您在哪里添加了
.htaccess
文件?另外,请确保
AllowOverride
httpd.conf
中为您的htdocs目录设置为
All
。我无法理解。我将它放在htdocs中,其中存储了包括index.php和1.php在内的所有文件。AllowOverride设置为to全部…现在,当我单击next时,它会打开/1.php,但会显示index.php的内容:((我认为它正在重写index.php?id=1(它不存在,这就是它显示index.php内容的原因)现在改为1.php。我想要相反的方式。这就是为什么?答案中给出的代码可能会将X.php重写为index.php?id=X,所以不确定是否是这样。有什么原因不能这样做吗?:((当我单击下一个时,它会转到1.php,但找不到文件。当我输入id=1或任何内容时,相同的页面会再次加载:((在本例中,1.php不存在。它是服务器正在重写的虚拟URL。只要
index.php
是系统的根目录,它就应该重写任何类似
/[0-9]的URL。)+.php
到/index.php?id=####。您在哪里添加了
.htaccess
文件?另外,请确保
AllowOverride
httpd.conf
中为您的htdocs目录设置为
All
。我无法理解。我将它放在htdocs中,其中存储了包括index.php和1.php在内的所有文件。AllowOverride设置为t哦,好的……现在当我点击next时,它会打开/1.php,但会显示index.php的内容:((我认为它正在将index.php?id=1(它不存在,这就是它显示index.php内容的原因)重写为1.php。我想要相反的方式。这就是为什么答案中给出的代码可能会将X.php重写为index.php?id=X,所以不确定它是否存在。