2010-02-11 74 views
1

我有一個顯示選定成員信息的頁面。現在,我選擇使用GET數據在URL中選擇成員,如下所示:Page/index.php?Member=member1我看到這樣做的網站:Page/member1這是可能的只有一個PHP文件?在不使用GET的情況下在URL中傳遞數據

+0

它可以用PHP來實現 - 見我的帖子,但它不乾淨,可能容易出錯。 –

回答

1

這不能用PHP來完成 - 你用mod_rewrite和通常在Apache上的.htacess來做到這一點。

+0

這是如何工作的? – Brian

+0

我的下面的帖子回答瞭如何用apache進行重寫 – Erik

3

友好的URL需要Web服務器進行某種處理,以便頁面請求通過單個php腳本(又名控制器)傳遞。

例如,Apache有能力匹配URL中的模式並在幕後修改請求 - 您實際上會編寫PHP來作爲用戶輸入原始GET字符串的反應,但他們可以使用友好而不是。

爲Apache

簡單的例子 - 放的.htaccess你的文檔根,並寫上:

RewriteEngine On 
RewriteRule ^Page/([A-Za-z0-9\_]+)/?$ index.php?member=$1 [QSA,L] 

我不知道相當於將在IIS的 - 但我知道它是可用

1

有很多方法可以做到這一點,所有這些都取決於Web服務器。與Apache,一些可能性:

  • mod_rewrite的(最靈活的方式,但可能是乏味的配置)
  • 選項+多視圖(很容易,但需要PHP文件被命名爲類似請求的URL)
  • 自定義404處理程序(不推薦)

假設您使用的是Apache並已啓用MultiView。文件Page.php將與Page/*匹配,其明顯包括Page/member1。然後您必須檢查URL(請看$_SERVER,它包含您需要的一切)並決定是否可以遵守請求。

0

可以單獨使用下面做在PHP:

1)獲取相對於文檔根目錄的文件名。

$_SERVER['PHP_SELF'] 

http://example.com/test.php/foo.bar將是/test.php/foo.bar。

2)通過你的分隔符爆炸(在這種情況下/)

array explode (string $delimiter , string $string [, int $limit ]) 

3)驗證數組值,然後放入變量

var $myValue = myarray[0]; 
相關問題