2016-07-22 67 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://」。如果他們需要任何其他協議,只要讓他們明確寫出來。你說的確實是對的。這是所有應該存儲或顯示的用戶輸入的給定值。 –