Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何避免在PHP中更改地址栏中的地址_Php_Redirect - Fatal编程技术网

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

如何避免在PHP中更改地址栏中的地址,php,redirect,Php,Redirect,我的地址栏(在浏览器中)有一个问题。 我的网站的主页url如下所示:http://localhost/Website/index.php 如果我写../Website/home.php它会加载home.php页面。我认为,如果任何人能够访问他们想要的任何网页,如果知道其地址,这是不安全的。我想阻止地址栏中的自动url重定向。请任何人帮助我,如果有人编写../home.php地址,它会将浏览器重定向到index.php作为默认页面。万维网的整个概念是,每个资源(例如每个网页)都有一个唯一的资源标识

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


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

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

确保你有一个很好的大链接回到你的主页,如果人们在另一个页面上登陆并且找不到他们想要的东西,他们会使用它


我希望这能有所帮助。

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

PHP无法做到这一点;它是一种服务器端技术,因此无法修改浏览器的行为。不要在目录中放置任何其他文件,当用户尝试导航到该目录时,浏览器将通知用户不存在此类文件。

我同意最近发布的答案


但是如果您不需要
HTML
,您可以进入
FLASH
javaapplet
,一旦加载了它们,您的URL就不再改变。

即使没有框架,您也可以得到这个结果。如果您使用javascript和ajax动态加载您的内容,您的url将不会更改

<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>

虽然出于谷歌的考虑,我从不推荐这样做,但这将是最好的方法,并且仍然可以很好地与PHP配合使用。简言之:你不能这样做。正如其他人提到的,PHP是一种服务器端语言,这意味着它无法控制浏览器(即阻止某人更改URL)。阅读并遵循中的链接,了解服务器端语言和客户端语言之间的差异

Wikipeda的文章,也可能对你有兴趣,让你基本了解WWW是如何工作的,它是关于URL的

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

Web服务器配置 Most(every?)web服务器允许您配置规则以控制哪些文件应可访问(也称为访问控制)。她就是一个例子,告诉我们如何使用

前端控制器 您也可以直接使用PHP(和一点web服务器配置)来实现这一点。她最神奇的关键词是“她”。例如,这是一个类,充当应用程序的单个入口点。这意味着每个请求,例如

 http://localhost/Website/home.php

被重定向(转发,不管您如何命名)到并由

 http://localhost/Website/index.php
因此,如果用户试图访问某个URL,您最终可以并且必须决定用户可以查看哪些内容。
这使您能够更好地控制(外观)URL,但您必须投入更多精力来配置它

如果您对这种模式的工作原理感兴趣,我建议您看看实现这种模式的方法

悬而未决的问题。。。 虽然你可以这样做,但问题是你是否必须这样做。如果您不想访问
home.php
,为什么首先要将其放在web服务器上

或者你脑子里对网站的结构有错误的理解。单个网站由多个页面组成(大多数情况下),例如:


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

奇怪的事情是想做,但一个简单的方法(除了小型网站之外,对任何东西都不好)是使用标题(位置:xxxx)

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

<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>


如果我想为网站上除index.php以外的任何其他页面添加书签,该怎么办?呃,为什么要这样做?不允许用户在浏览器中输入url对网站有好处?这并没有回答问题,问题是如何防止用户更改地址栏中显示的url。
<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>