2013-10-09 71 views
0

我非常新手試圖完成一個任務,所以讓我解釋一下這裏的問題:變化GET參數和使用mod_rewrite

我有一個chasback網站上,有關於數據庫的零售商,我的鏈接:

a href="/view_retailer.php?rid=<?php echo $tops_row['retailer_id']; ?>" 

PHP頁面,顯示內容有:

if (isset($_GET['rid']) && is_numeric($_GET['rid'])) 
{ 
    $retailer_id = (int)$_GET['rid']; 
} 
else 
{  
    header ("Location: index.php"); 
    exit(); 
} 

這對我的網址顯示:?/ view_retailer RID = 8

我想將其更改爲/ view_retailer?rid =零售商標題

我不明白爲什麼它不工作,我已經在我的數據庫中列零售商標識和標題。

然後我需要通過mod_rewrite從/ view_retailer?rid = retailer-title更改爲/ loja/retailer-title。

我怎樣才能到達那裏?感謝幫助我!

+0

124。42會返回true,用'is_numeric()' - 檢查數字,我只會使用'if(ctype_digit($ value))' – cantsay

回答

2

我可以回答的第一位

a href="/view_retailer.php?rid=<?php echo $tops_row['retailer_id']; ?>" 

需要是:

<a href="/view_retailer.php?rtitle=<?php echo $tops_row['retailer_title']; ?>" 

而且

if (isset($_GET['rtitle']) && is_string($_GET['rtitle'])) 
{ 
    $retailer_title = (string)$_GET['rtitle']; 
} 
else 
{  
    header ("Location: index.php"); 
    exit(); 
} 

你也應該消毒東西從GET/POST來確保它如果你打算用它查詢數據庫是安全的。

至於mod_rewrite。在這方面非常垃圾,所以我無法幫助。

+0

您的代碼幫助我使頁面正常工作,但它顯示「store not found」即使有一個名稱與數據庫查詢相匹配的零售商,爲何它只是使用我不明白的ID,感謝好友! –

+0

你的查詢是什麼樣的? –

+0

工作就像一個魅力,問題是一個PHP變量,我沒有改變我的SELECT查詢,感謝很多朋友,你搖滾。感謝大家試圖幫助,可能是正確的,但我首先測試的是這個,但無論如何,謝謝! –

0

在retailers表中添加名爲「slug」的列或類似的東西。然後你必須修改你的查詢,因此你不是在尋找id,而是某個字符串(slug)。請確保您的蛞蝓包含唯一標誌正確的網絡地址:沒有空格,非拉丁文字母等

當涉及到的代碼,它可能看起來類似的東西:

if (!empty($_GET['title'])) 
{ 
    $title = someSanitizeFunc($_GET['title']); 
    $retailer = db()->queryOne("SELECT id FROM retailers where slug = '".$title."'); 
} 

這只是例子,你必須調整它到你的CMS或任何你使用的。

0

如何在數據庫中使用3個表格?

retailer_idretailer_nameretailer_url_name

值(例如)

43The Awesome Supermarketawesome-supermarket

檢查$_GET['rid']用正則表達式來檢查信件和DB中的-性格和對陣retailer_url_name

// check for letters and - 
if (preg_match('/^[a-z\-]+$/', $_GET['rid']) { 
// do stuff here 
} else { 
// invalid ID 
}