2016-07-22 69 views
-2

我使用PHP和我有一个输入,用户键入链接到他的网站。该链接应显示给其他人查看或打开。我正在测试输入,问题是链接不起作用,除非我在提到的URL之前键入http://或https://,并且我认为有人可能不写hhtp就写www.foo.com: //。 链接会自动将我的网站的根目录替换为http://或https://with(或者至少这是我的猜测),因为我正在使用XAMP,URL显示为localhost/MyFooProjectFile/www.foo.com。链接不工作没有http://协议

如何使链接在没有协议的情况下工作,或者在我的用户链接之前用正确的协议替代没有提及的协议?

注意:我知道这个问题可能看起来很愚蠢(因为谁是白痴认为链接可以在没有协议的情况下工作),但是让我想知道的是我在我的浏览器www.foo.co的地址栏中编写的它会把我带到那里,没有我参与协议。

请注意,在编写问题时我没有代码。

+0

只要检查他们输入的链接是否包含协议。如果没有,请添加它。 – rjdown

+0

由于http://是浏览器中最常用的协议,因此您的浏览器实际上在您输入地址栏中的任何URL前添加了“http://”(大多数浏览器不显示协议,但如果您复制将URL粘贴到地址栏中,也可以获得协议)。当谈到网站上的链接时,除非您明确告诉它,否则浏览器不知道您是指相对网址还是绝对网址。这就是为什么你需要链接中的协议。 –

+0

你可以通过@rjdown建议的方式解决它。 –

回答

0

重复的With HTML5 url input validation assume url starts with http://

信任的网址用户inputed正处于危险之中。你必须过滤URL,解析它们,构建它们,测试它们,然后将它们嵌入到页面中。

Not all the URL must have "//"

+1

好吧,由于OP说“用户键入到他的**网站的链接**”,您可以假设(或者更确切地说)需要有一个“protocol://”作为前缀。如果没有,只需添加“http://”。如果他们需要任何其他协议,只要让他们明确写出来。你说的确实是对的。这是所有应该存储或显示的用户输入的给定值。 –