2011-10-03 180 views
-1

我真的很抱歉,如果我很討厭你們,但是這是我最後的問候問題.htacess技巧永久鏈接,.htacess漂亮網址

我需要WordPress的風格,「漂亮的永久鏈接」

但是這對我來說太困難了。

我需要的,這個網址http://test.com/?page=test&ID=1http://test.com/test/NAMEFROMDATABASE

如何?我知道如何通過使用$_GET['ID']獲得ID=1,但是如何從數據庫中的值中獲取值並讀取它?

+0

爲什麼不這樣做'http:// test.com/test/1/NAMEFROMDATABASE',所以你的URL裏有ID,就像SO有它們一樣。這將幫助你做兩件事:1.如果需要,可以縮短網址。 2.將快速查找特定記錄並快速查找。 – Shef

+0

我目前做: test.com/djs?djID=1 的orignial網址是test.com?page=djs&djID=1 但它不是SEO便於安裝,它會導致同樣的DJ多個結果頁面,再加上我希望用戶輸入一個dj的名稱,而不是隨機數,然後輸入dj名稱。 –

+0

您可以輕鬆地將該URL更改爲'test.com/djs/1'。 – Shef

回答

5

您無法直接從此URL通過$ _GET ['ID']獲得ID值:http://test.com/test/NAMEFROMDATABASE

您可以按照以下邏輯獲取ID。

  1. 按類別名稱創建鏈接。即如果你有類別的筆記本電腦,然後創建鏈接像http://test.com/category/CATNAME

  2. 在htaccess中寫入重寫代碼。 RewriteRule ^category/(.*)$ categories\.php?CNAME=$2&%{QUERY_STRING} [L]

  3. 在PHP代碼中從類別名稱中獲取類別ID。 $catName=$_GET['CNAME']

OR

  1. 創建按類別名稱和類別ID鏈接。即如果你有類別的筆記本電腦,然後創建鏈接,如http://test.com/category/CATNAME-ID-CATID
  2. 在htaccess中寫入重寫代碼。 RewriteRule ^category/(.*)-ID-([0-9]+)$ categories\.php?ID=$2&%{QUERY_STRING} [L]
  3. 在PHP代碼中直接獲取類別ID。 $catID= $_GET['ID']
+0

對我來說,RewriteRule^djs /(.*)$ index \ .php?page = djs&djID = $ 1&%{QUERY_STRING} [L]轉換test.com /index.php?page=djs&djID=username into test.com/djs/username,$ _GET ['djID']返回'用戶名',沒有問題。 –

+0

非常感謝你,只有2美元對我不起作用,把它改成1美元完美無缺。 –

1

怎麼樣?我知道如何通過使用$ _GET ['ID']來獲得ID = 1,但是如何從網址中的數據庫中添加一個值並讀取它?

您從數據庫中獲取的價值,像這樣:

$id = mysql_real_escape_string($_GET['id']); 
$sql = "SELECT folder, urlname FROM urls WHERE id = '$id' "; 
// don't forget to single quote '$id'  ^^or you'll get errors 
// and even worse mysql_real_escape_string() will not protect you. 
if ($result = mysql_query($sql)) { 
    $row = mysql_fetch_row($result); 
    $pagename = $row['urlname']; 
    $folder = $row['folder']; 
} 

如果你知道id是一個整數$id = intval($_GET['id']);
我建議您始終使用mysql_real_escape_string(),因爲它適用於所有的價值觀和intval你也可以使用只適用於整數。
在SQL中引用數字從來都不是問題,所以養成一直引用所有內容的習慣。
這樣你就不會犯錯誤。

可以永遠

$sql = "SELECT urlname FROM urls WHERE id = '{$_GET['id']}' "; 

因爲這是一個SQL注入安全漏洞。

參見:
How does the SQL injection from the "Bobby Tables" XKCD comic work?
http://php.net/manual/en/function.mysql-query.php
http://php.net/manual/en/function.mysql-fetch-row.php
http://php.net/manual/en/function.mysql-connect.php
http://php.net/manual/en/function.mysql-close.php

+0

謝謝,但是可能我還不夠清楚。我知道如何從網址獲取值並在數據庫中查詢它。我想要做的是將帖子ID轉換爲POST名稱,例如?id = 1變成'randomname' 我只希望這是客戶端,這樣test/randomname將被測試/ ID = 1 –

1

你不能這樣做,在htaccess的,你需要這樣反而調整接收ID的腳本= 1將接收名稱= XXX。比它會查找數據庫的名稱和計算ID

好了,所以在.htaccess你就會有這樣的事情

RewriteRule ^something/(.+)\.htm$ something/file.php?djname=$1 

在你的PHP腳本,你必須

$name = mysql_real_escape_string($_GET['djname']); 

$sql = "SELECT * FROM djtable where name='" . $name . "' LIMIT 1"; 

OBS:1.使用適當的sql轉義。 2.確保數據庫中的dj名稱不同。

+0

你,這就是我需要知道的。那麼現在你可以告訴我,如何將page = test&name = myname更改爲test/myname。然後我會在數據庫中查詢? –

+1

學習一些基本的SQL並做你自己的工程:) – gd1

+0

這不是SQL!它的.htaccess,我現在將代碼的東西,但我該如何重寫URL,將test.com?page=x&ID=y轉換爲test.com/x/y –