2011-05-18 59 views
0

我正在爲Joomla 1.6構建一個組件。Joomla - 如何在php文件中使用Ajax接收數據後連接到數據庫

我有一個連接到數據庫的問題。

我已經發送數據到php文件,名爲rating.php與ajax;數據沒有問題地發送到文件。但是,如果我離開線路,數據不會發送

 
defined('_JEXEC') or die('Restricted access'); 

但是我收到了「受限訪問」消息。其次,即使當我註釋掉以前的檢查時,我也無法連接到這個php文件中的數據庫,顯然是因爲我不能在文件內調用Joomla變量(如getDBO())。我能做些什麼來解決這兩個問題?

謝謝

回答

0

的Joomla將只設置_JEXEC當您通過瀏覽的index.php您的網站。換句話說,Joomla不會對Joomla「外部」的文件做任何事情。 _JEXEC將不會被設置,並且數據庫將不會被連接到。

爲了解決這個問題,我將包括一個Joomla頁面,以便將數據庫加載:

<?php 
ob_start(); 
require 'index.php'; 
ob_end_clean(); 
// Rating code 
?> 

該代碼包括您的網站的首頁,並使用output buffering不實際輸出您的網站。你不需要檢查_JEXEC,因爲它被使用的唯一原因是爲了確保有人不通過Joomla直接訪問文件。在你的情況下,_JEXEC是無關緊要的。

爲了使腳本更快,請將index.php替換爲內容最少的內頁的鏈接。主頁往往比內部頁面慢。

我還沒有測試過這個代碼,但它應該可以工作。

0

如果您正在開發組件,最好通過「index.php」而不是其他文件來創建請求。這樣您就可以確定該框架已加載,並且您可以在處理請求時使用其任何功能。另一個優點是更易於維護(特別是在大型擴展上),因爲當您對所有請求具有相同的入口點時,更容易遵循工作流程。