2010-08-30 65 views
1

讓我說我有一個帖子,可以在頁面post.php?pid=60找到,但如果用戶更改url爲post.php?pid=95頁面顯示所有奇怪的是 有一種方法,我可以讓他們重定向到另一個說帖子dosn't存在或頁面?如果是的話,我會如何做到這一點?這是處理不存在頁面的最佳方式嗎?如果不是什麼是首選?PHP和MySQL動態頁面顯示問題

我正在使用PHP & MySQL如果有幫助。

+2

您需要將邏輯添加到'post.php',*之後*從數據庫中獲取信息(因爲您不知道有效的ID),並根據結果集中沒有返回的行重定向。 – 2010-08-30 02:53:30

回答

2

由給定$_GET["pid"]

得到這個職位,從DB如果後發現(即給定PID存在)

然後顯示它通常

其他包括錯誤網頁內容/應用頭重定向到錯誤頁面等

希望的邏輯可以幫助你

0

你應該檢查是否有我如果沒有,則顯示錯誤消息。

你有任何支持代碼嗎?這裏是一個樣本:

$pid = isset($_GET['pid'])?(int)$_GET['pid']:0; // use the ternary operator to set a default value 

if (!empty($pid) { 
    $res = mysql_query("SELECT columns FROM table_name WHERE pid = $pid") or trigger_error('MySQL Returned: ' . mysql_error()); 
    $rows = mysql_num_rows($res); 
    if ($rows > 0) { 
     // display the data 
    }else { 
     // There is no data so display the no-data page 
    } 
} 

它可能並不完全適合你,因爲你將不得不調整它,但應該給你一個大概的瞭解。

+0

是的,我有代碼,但我只想知道如何做到這一點的基本思路。 – slick 2010-08-30 02:58:39

1

好吧,你可以嘗試從數據庫中選擇帖子,如果查詢沒有帶來任何東西,你會重定向到顯示所有帖子的頁面。對我來說,比展示「找不到頁面」消息更有意義(在這種情況下)。這個想法是這樣的:

$result = query('SELECT * FROM posts WHERE id=60'); 
if(! $result) 
    redir('all_posts.php'); 

這只是爲了描述問題。我假設查詢函數返回false,null或甚至一個空數組,如果沒有行返回,而不是通常的MySQL資源。

只記得添加一個exit;(可能在重定向函數中),不讓頁面渲染所有奇怪的東西。