我正在爲Joomla編寫一個模塊,此時我真的需要能夠使用Jfactory連接到數據庫。通常可以簡單地使用$db = JFactory::getDBO();
,但PHP錯誤告訴我不包含JFactory類。 所以現在我需要知道如何包含這個JFactory類。我已經嘗試了一些在互聯網上發現的建議,但沒有成功。這是代碼(它可以獨立運行)在外部php文件中包含Jfactory類,Joomla
<?php
// server info
$server = 'localhost';
$user = 'ss';
$pass = 'oo';
$db = 'ss';
$connection = mysql_connect($server, $user, $pass) or die ("Could not connect to server ... \n" . mysql_error());
mysql_select_db($db) or die ("Could not connect to database ... \n" . mysql_error());
if(isSet($_POST['username']))
{
$username = $_POST['username'];
$username = mysql_real_escape_string($username);
$sql_check = mysql_query("SELECT Username FROM users WHERE Username='$username'");
if(mysql_num_rows($sql_check))
{
echo '<font color="#cc0000"><STRONG>'.$username.'</STRONG> is already in use.</font>';
}
else
{
echo 'OK';
}
}
?>
我希望我的問題對你很清楚。您的幫助將不勝感激。
嘗試1
<?php
include('../../../../configuration.php');
include('../../../../libraries/joomla/factory.php');
$config =& JFactory::getConfig();
// server info
$server2 = $host;
$user2 = $user;
$pass2 = $password;
$db2 = $db;
$connection = mysqli_connect($server2, $user2, $pass2) or die ("Could not connect to server ... \n" . mysqli_error());
mysqli_select_db($db2) or die ("Could not connect to database ... \n" . mysqli_error());
if(isSet($_POST['username']))
{
$username = $_POST['username'];
$username = mysql_real_escape_string($username);
$sql_check = mysql_query("SELECT username FROM #__users WHERE username='$username'");
if(mysql_num_rows($sql_check))
{
echo '<font color="#cc0000"><STRONG>'.$username.'</STRONG> is already in use.</font>';
}
else
{
echo 'OK';
}
}
?>
但這不是工作要麼。
嘗試2(成功)
include('../../../../configuration.php');
$jc = new JConfig();
$table = 'users';
$users = $jc->dbprefix . $table;
// connect to the database
$mysqli = new mysqli($jc->host, $jc->user, $jc->password, $jc->db);
現在是所有的工作,我想。現在唯一的事情就是:安全。我不太確定這是黑客的證據。有人可以檢查這個嗎?謝謝:)
寫一個模塊..?當Joomla調用你的模塊時,JFactory已經被包含了。你確定這是一個你正在寫的Joomla模塊(也可能是一個組件或插件)。請參閱[創建簡單模塊](http://docs.joomla.org/Creating_a_simple_module)。 – 2012-02-27 12:09:31
你好,是的,我正在寫一個模塊。我確切地預計你在說什麼,JFactory已經被包括在內了。但不知何故,事實並非如此。上面的代碼被AJAX調用。當使用上面的代碼時,一切都按照我的想法工作。如果我刪除了獨立的數據庫連接,就沒有連接。我編輯並添加了上面的代碼,你可以看到我的嘗試。謝謝:) – 2012-02-27 13:48:21
你說上面的代碼被AJAX調用。但是,具體使用哪個URL來調用它?這將決定你是在編寫一個'真正'的模塊(所有的joomla框架已經包括在內),還是一個需要自己完成框架設置的獨立腳本。如果你的AJAX正在請求一個像'index.php?option = com_yourcomponent&view = ....'的URL,它將會是前者。如果你要求一個像'/ modules/mod_yourmodule/...'這樣的URL,它將成爲後者。我猜測它可能是*後者,因爲你提到了'模塊'這個詞。但請確認。 – 2012-02-27 16:34:19