2011-08-22 64 views
1

我想檢查一個頁面是否存在。我的文件是article.php。這篇文章的網址是article.php ID = 1個article.php ID = 2等,但是,當我檢查,這樣它不工作:??PHP文件存在不工作?

$filecheck = "article.php?id=$id"; 
if (file_exists($filecheck)) { 
echo "This article exists."; 
} else { 
echo "Sorry this article does not exist."; 
} 

但它總是返回「對不起本文不存在。」 我該如何解決這個問題?

+0

爲什麼要添加QUERY_STRING到你的'$ filecheck'變種? – Tarik

+1

除非你指定了一個完整的'protocol:// host/path/file'類型的URL,否則所有的文件函數都會假設你正在執行本地文件操作,而你的代碼正在尋找一個文件名爲article.php的文件?id = XXX',這不太可能存在。 –

回答

1

文件「article.php?id = $ id」將不存在,因爲它不是物理文件。

我假設您使用$ id來查找存在於數據庫中的文章。如果是這種情況,那麼file_exists函數就不是你所需要的。

你需要做的是編寫一個快速的MySQL語句來檢查文章是否存在,然後從那裏開始。

像這樣的東西可能:

$query = "SELECT * FROM articles WHERE id='$id'"; 
$result = mysql_query($query); 

// Check if result is there (ie article exists) 
if ($result) { 
    echo "This article exists."; 
} else { 
    echo "Sorry this article does not exist."; 
} 

我希望幫助。需要幫助請叫我。

+0

感謝它現在正在工作。 – Akos

+1

沒有probs,很高興它已經爲你工作。如果您對答案感到滿意,請考慮接受答案。 –

+0

看來他真的不在乎:) – Tarik

4

不要將查詢字符串傳遞給它。

$filecheck = 'article.php'; 
+0

感謝您的回覆。 – Akos

+0

如果我的回覆解決了您的問題,請考慮接受它作爲您問題的答案。 –

1

這是因爲沒有文件名爲:article.php ID = $ ID

有可能是一個名爲:article.php雖然:)

+0

是的你是對的;) – Akos

1

如果它們是物理頁面,而不是動態創建的內容使用這種方式:

$filecheck = "article_1.php" 

if (file_exists($filecheck)) { 
echo "This article exists."; 
} else { 
echo "Sorry this article does not exist."; 
} 

否則檢查ID是否在數據庫中。

+0

偉大的建議!我會檢查它是否在數據庫中。謝謝! :) – Akos

1

那麼它沒有找到文件的原因是因爲你有一個查詢字符串。如果你是一個偶然的機會從其他來源得到這個數據,如果查詢字符串與它發送,那麼你可以做到這一點無法控制:

$yourFile = 'article.php?id=$id'; // Or wherever you get this value from 
$yourFile = strstr($yourFile , '?' , TRUE); 

echo $yourFile; // now has a value of article.php