我正在为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