inclure la classe Jfactory dans un fichier php externe, Joomla
Je suis en train d'écrire un module pour Joomla, à ce point, j'ai vraiment besoin d'être en mesure de se connecter à la base de données à l'aide de Jfactory. Normalement, on pourrait simplement utiliser $db = JFactory::getDBO();
, mais l'erreur PHP me dit le JFactory classe n'est pas inclus. Alors maintenant, j'ai besoin de savoir comment inclure cette JFactory classe. J'ai essayé un couple de suggestions trouvées sur internet, en l'absence de succès, pourtant. C'est le code (il fonctionne parfaitement sur autonome)
<?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';
}
}
?>
J'espère que mon problème est clair pour vous. Votre aide sera très appréciée.
Tentative 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';
}
}
?>
mais cela ne fonctionne pas non plus.
tentative 2 (bon)
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);
Maintenant, il est tout à travailler comme je veux. La seule chose, c'est maintenant: la sécurité. Je ne sais pas trop sur ce qui est la preuve de pirates. Quelqu'un peut-il examiner? merci 🙂
source d'informationauteur Maarten Hartman
Vous devez vous connecter pour publier un commentaire.
Je suis sûr que vous le comprendre, mais il serait peut-être utile pour quelqu'un d'autre
À utiliser joomla de base de données de la classe (même si vous savez que ce n'est pas recommandé 🙂 ) vous avez besoin, d'abord à définir trois constantes, comme:
Ensuite, vous devez inclure trois fichiers, comme:
MODIFIER
Vous pouvez inclure uniquement les deux fichiers comme:
Enfin utiliser joomla classe, comme:
Pour accéder aux informations de Base de données de Joomla ,Vous devez inclure("configuration.php").Ce joomla configuaraion fichier contient toutes les informations de la base de données access.
classe JFactory défini dans ce dossier "joomlaRootFolder/libraries/joomla/factory.php"
Récemment, le
libraries/joomla/factory.php
a été supprimé, ce qui a été à l'origine de tous les scripts utilisésrequire_once ( JPATH_BASE .DS.'libraries'.DS.'joomla'.DS.'factory.php' );
à l'échec. Que c'est encore utilisé dans l'acceptation & plus upvoted de réponse ici, il est temps pour une mise à jour...Vous n'avez pas besoin de la
JDatabaseFactory
classe plus à utiliser Joomla fonctions de base de données par le biais deJFactory::getDBO();
comme leJFactory
classe et obtient déjà inclus.Ces cinq lignes sont assez:
Vous serez en mesure de le faire, par exemple, cette nouveau: