我真的很抱歉,如果我很討厭你們,但是這是我最後的問候問題.htacess技巧永久鏈接,.htacess漂亮網址
我需要WordPress的風格,「漂亮的永久鏈接」
但是這對我來說太困難了。
我需要的,這個網址http://test.com/?page=test&ID=1
是http://test.com/test/NAMEFROMDATABASE
如何?我知道如何通過使用$_GET['ID']
獲得ID=1
,但是如何從數據庫中的值中獲取值並讀取它?
我真的很抱歉,如果我很討厭你們,但是這是我最後的問候問題.htacess技巧永久鏈接,.htacess漂亮網址
我需要WordPress的風格,「漂亮的永久鏈接」
但是這對我來說太困難了。
我需要的,這個網址http://test.com/?page=test&ID=1
是http://test.com/test/NAMEFROMDATABASE
如何?我知道如何通過使用$_GET['ID']
獲得ID=1
,但是如何從數據庫中的值中獲取值並讀取它?
您無法直接從此URL通過$ _GET ['ID']獲得ID值:http://test.com/test/NAMEFROMDATABASE。
您可以按照以下邏輯獲取ID。
按類別名稱創建鏈接。即如果你有類別的筆記本電腦,然後創建鏈接像http://test.com/category/CATNAME
在htaccess中寫入重寫代碼。 RewriteRule ^category/(.*)$ categories\.php?CNAME=$2&%{QUERY_STRING} [L]
$catName=$_GET['CNAME']
OR
RewriteRule ^category/(.*)-ID-([0-9]+)$ categories\.php?ID=$2&%{QUERY_STRING} [L]
$catID= $_GET['ID']
對我來說,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']返回'用戶名',沒有問題。 –
非常感謝你,只有2美元對我不起作用,把它改成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
謝謝,但是可能我還不夠清楚。我知道如何從網址獲取值並在數據庫中查詢它。我想要做的是將帖子ID轉換爲POST名稱,例如?id = 1變成'randomname' 我只希望這是客戶端,這樣test/randomname將被測試/ ID = 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名稱不同。
你,這就是我需要知道的。那麼現在你可以告訴我,如何將page = test&name = myname更改爲test/myname。然後我會在數據庫中查詢? –
學習一些基本的SQL並做你自己的工程:) – gd1
這不是SQL!它的.htaccess,我現在將代碼的東西,但我該如何重寫URL,將test.com?page=x&ID=y轉換爲test.com/x/y –
爲什麼不這樣做'http:// test.com/test/1/NAMEFROMDATABASE',所以你的URL裏有ID,就像SO有它們一樣。這將幫助你做兩件事:1.如果需要,可以縮短網址。 2.將快速查找特定記錄並快速查找。 – Shef
我目前做: test.com/djs?djID=1 的orignial網址是test.com?page=djs&djID=1 但它不是SEO便於安裝,它會導致同樣的DJ多個結果頁面,再加上我希望用戶輸入一個dj的名稱,而不是隨機數,然後輸入dj名稱。 –
您可以輕鬆地將該URL更改爲'test.com/djs/1'。 – Shef