如何避免在PHP中更改地址栏中的地址

时间:2010-01-27 07:48:06

标签: php redirect

我的地址栏有一个问题(在浏览器中)。 我网站的主页网址如下:http://localhost/Website/index.php

如果我写.../Website/home.php,则会加载home.php页面。我认为如果知道地址,任何人都可以访问他们想要的任何网页,这是不安全的。我想阻止地址栏中的自动URL重定向。请任何人帮我制作,以便如果有人写了.../home.php地址,它会将浏览器重定向到index.php作为默认页面。

8 个答案:

答案 0 :(得分:6)

万维网的整个概念是每个资源(例如每个网页)都有唯一的资源标识符(地址)。它是互联网如何运作的一个组成部分,你应该遵守它,而不是避免它。

确保你有一个很好的大链接回到你的主页,如果他们落在不同的页面上,人们将使用它,但无法找到他们想要的东西。

我希望这会有所帮助。

答案 1 :(得分:2)

简而言之:你做不到。正如其他人所提到的,PHP是一种服务器端语言,这意味着它无法控制浏览器(即阻止某人更改URL)。阅读并遵循How does PHP work?中的链接,了解服务器端和客户端语言之间的区别。

Wikipeda文章World Wide WebUniform Resource Locator (URL)Web Server也可能让您对基本了解WWW的工作原理以及URL的含义感兴趣。

但您可以控制可以访问的文件。有两种方法:

Web服务器配置

大多数(每个?)Web服务器允许您配置规则以控制哪些文件应该可访问(也称为访问控制)。她是如何使用Apache web server

的例子

PHP:前端控制器

您也可以直接使用PHP(以及一点Web服务器配置)。魔术关键字她是Front Controller pattern。这是例如作为应用程序的单一入口点的类。这意味着每个请求,例如到

 http://localhost/Website/home.php

http://localhost/Website/foo/bar.php

被重定向(转发,但您要将其命名)并由

处理
 http://localhost/Website/index.php

因此,最终您可以并且必须决定用户在尝试访问某个网址时会看到哪些内容。
这使您可以更好地控制(外观)URL,但您必须付出更多努力来配置它。

如果您对其工作方式感兴趣,我建议您查看实现此模式的Zend Framework

公开提问......

虽然你可以这样做,但问题是你是否必须这样做。如果您不希望home.php可以访问,为什么首先将它放在您的Web服务器上?

或许你脑海中的网站结构错误。 单个网站包含多个页面(大多数情况下),例如

index.php   // is the main page
about.php   // is about the site or you
news.php    // contains the latest news you provide
archive.php // older news or articles
...

甚至希望用户/访问者可以通过在地址栏中输入URL或通过书签直接访问这些页面。这就是网站或WWW的工作方式。

答案 2 :(得分:1)

PHP无法做到这一点;它是服务器端技术,因此无法修改浏览器的行为。只是不要在目录中放置任何其他文件,浏览器会在用户尝试导航时告知用户没有这样的文件。

答案 3 :(得分:1)

即使没有框架,您也可以获得此结果。如果您使用javascript和ajax动态加载您的内容,则您的网址不会更改。

虽然我从不推荐谷歌这样做,但这是最好的方式,并且仍然可以正常使用PHP

答案 4 :(得分:0)

我会接受Sohnee的建议,但如果你真的想要,你可以通过使用HTML框架来创造幻觉。

答案 5 :(得分:0)

我同意最近发布的答案。

但如果您不需要HTML,则可以进入FLASHJava Applet,一旦加载,您的网址就不会再发生变化。

答案 6 :(得分:0)

使用旧的和好的框架!!那么地址就不会改变。

<frameset rows="0,*" frameborder="0" framespacing="0" border="0">
    <frame name="nothing" src="about:blank" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" framespacing="0">

    <frame name="everything" src="http://localhost/Website/index.php" marginwidth="0" marginheight="0" scrolling="auto" frameborder="0" framespacing="0">
</frameset>

答案 7 :(得分:-2)

除了简单方式(并且除了小网站之外的任何东西都不好)之外,想要做的奇怪的事情是使用Header(LOcation:xxxx)。