Estoy escribiendo un módulo para Joomla, en este punto realmente necesito poder conectarme a la base de datos usando Jfactory. Normalmente uno podría simplemente usar $db = JFactory::getDBO();
, pero el error de PHP me dice que la clase JFactory no está incluida. Así que ahora necesito saber cómo incluir esta clase de JFactory. He intentado un par de sugerencias encontradas en Internet, sin éxito, aún. Este es el código (funciona perfecto en modo independiente)incluye la clase Jfactory en un archivo php externo, 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';
}
}
?>
Espero que mi problema esté claro para usted. Su ayuda será muy apreciada.
Intento 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';
}
}
?>
pero esto no está funcionando bien.
intento 2 (con éxito)
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);
Ahora todo es trabajar como yo quiero. Lo único es ahora: seguridad. No estoy muy seguro de que esto sea una prueba de hackers. ¿Alguien puede revisar esto? gracias :)
Escribiendo un módulo ...? Para cuando Joomla llame a su módulo, JFactory debe estar incluido. ¿Estás seguro de que es un Módulo de Joomla que estás escribiendo (también podría ser un componente o un complemento)? Consulte [Creación de un módulo simple] (http://docs.joomla.org/Creating_a_simple_module). –
Hola, sí, estoy escribiendo un módulo. Esperaba exactamente lo que estás diciendo, JFactory debe ser incluido ya. Pero de alguna manera no es así. El código anterior está siendo llamado por AJAX. Cuando uso el código anterior, todo está funcionando como quiero. Si elimino la conexión de base de datos independiente, simplemente no hay conexión ... edité y agregué el código anterior para ver mi intento. gracias :) –
Usted dice que el código de arriba es llamado por AJAX. ¿Exactamente qué URL estás usando para llamarlo? Esto definirá si está escribiendo un módulo 'real' (con todo el framework joomla ya incluido) o un script independiente que necesita hacer la configuración del framework. Si su AJAX está solicitando una URL como 'index.php? Option = com_yourcomponent & view = ....', será la primera. Si está solicitando una URL como '/ modules/mod_yourmodule/...' será la última. Supongo que probablemente * es * el último, ya que mencionas la palabra 'módulo'. Pero por favor confirma –