2011-10-20 42 views
-1

我用html和jquery製作了我的搜索表單。當我在搜索字段中輸入一個名稱,然後單擊搜索時,它會檢查我指定的MySQL數據庫,並在搜索字段中顯示包含該文本的所有名稱。網址是localhost/players.html,因爲我現在在apache上測試它,並且它的遊戲服務器玩家統計頁面。如何在物理上不存在的頁面上顯示信息?

我有結果顯示我希望他們,在列中顯示某些信息的表中。

單擊結果時,我想在新頁面上顯示玩家統計信息,但我不想爲每個註冊玩家創建和存儲數千頁的頁面。所以我想要它創建一個虛擬頁面,或類似的東西。在鏈接被點擊的地方,URL會是/players/PlayerName.html,或者如果這是不可能的,也許players.php?action = getstats(PlayerName)我不確定如何做到這一點,或者如果可能的話。

我希望它能夠工作,所以如果我輸入www.myurl.co.uk/players/PlayerName.html,它會顯示該播放器的統計信息頁面,而不會顯示實際的HTML頁面。

+0

一本php書籍/教程可能會幫助你。 URL參數可以通過使用全局$ _GET變量來讀取:http://www.w3schools.com/php/php_get.asp – jantimon

回答

2

做這樣的

創建一個網頁叫做「player.php」,該頁面將接收參數的用戶ID。

所以在你的高評分表添加鏈接,每個玩家點擊時就會去player.php指向此頁面的參數用戶名

<a href="/player.php?player_id=xxxxx">Player</a> 

,您可以通過全球$ _GET得到您的參數這樣

$player_id = $_GET["player_id"] 

所以在你頁面的變量只是選擇數據爲該用戶

$sql = "select * from player_stat where UserID = " . $player_id; 

只記得mysql_escape $ player_id在添加到查詢之前,以避免SQL注入

這是簡單的方法,你也可以用URL重寫apache模塊來做到這一點,以便獲得像/ player/stat /暱稱

但如果您的系統不支持這一點,那更有用。

+0

謝謝,這工作很好,也幫助我找出了我遇到的另一個問題。謝謝。 – SAFC

+0

這是正確的答案和「標準」的做法。我對使用$ _GET有點偏執,因爲注入攻擊已經成熟,並且讓人們通過猜測其他數據值來訪問數據。我會A)在你將它分配給變量的同時使用它,B)使用0填充的用戶ID(以便每個用戶ID具有相同數量的字符)並檢查用戶ID的長度。如果它不正確引導用戶(我在我的更敏感的應用程序中禁用IP)C)使用PDO而不是依賴於mysql_escape等。 PDO可以防止「And 1 = 1」的注射,例如 – jcanker

+0

,但您可以檢查傳遞的值是否爲整數,並且問題已解決:) –

0

這是使用mod_rewrite完成的,mod_rewrite是根據模式重寫URL的模塊。您經常將這些模式輸入到一個名爲「.htaccess」文件的文件中,該文件放置在Web根目錄中。

例如:

RewriteEngine on 
RewriteRule ^players/([^/]+).html.zip /search.php?playername=$1 [L] 

如果你去 「/players/MikeRoberts.html」,那麼你的PHP腳本 「的search.php」 將獲得價值 「MikeRoberts」(你可以訪問使用$ _GET [ 'playername'])。

請記住:您可能需要在您的服務器上啓用mod_rewrite。請參閱:How to enable mod_rewrite for Apache 2.2或使用Google瞭解如何執行此操作。

相關問題