Piszę moduł dla Joomla, w tym momencie naprawdę muszę być w stanie połączyć się z bazą danych przy użyciu Jfactory. Normalnie można by po prostu użyć $db = JFactory::getDBO();
, ale błąd PHP mówi mi, że klasa JFactory nie jest zawarta. Więc teraz muszę wiedzieć, jak dołączyć tę klasę JFactory. Próbowałem już kilku sugestii znalezionych w Internecie, nie mając jeszcze sukcesu. To jest kod (działa idealnie na wolnostojącym)należą klasy Jfactory w zewnętrznym pliku php, 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';
}
}
?>
Mam nadzieję, że mój problem jest dla ciebie jasny. Twoja pomoc będzie bardzo ceniona.
Próba 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';
}
}
?>
ale to nie działa albo.
próba 2 (sukces)
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);
Teraz to wszystko działa tak, jak chcę. Teraz jest tylko jedno: bezpieczeństwo. Nie jestem pewien, czy to dowód hakerski. Czy ktoś może to sprawdzić? dzięki :)
Pisanie modułu ..? Zanim Joomla zadzwoni do twojego modułu, JFactory musi być już włączony. Czy na pewno jest to moduł Joomla, który piszesz (może to być również komponent lub wtyczka). Zobacz [Tworzenie prostego modułu] (http://docs.joomla.org/Creating_a_simple_module). –
Witam, tak, piszę moduł. Spodziewałem się dokładnie tego, co mówisz, JFactory musi być już włączony. Ale jakoś nie jest. Powyższy kod jest wywoływany przez AJAX. Podczas korzystania z powyższego kodu wszystko działa tak, jak chcę. Jeśli usunę oddzielne połączenie DB, to po prostu nie ma połączenia..Medytowałem i dodałem powyższy kod sou widzisz moją próbę. dzięki :) –
Mówisz, że powyższy kod jest wywoływany przez AJAX. Dokładnie jakiego adresu URL używasz, aby go nazwać? Spowoduje to określenie, czy piszesz "prawdziwy" moduł (z już uwzględnioną strukturą joomla), czy samodzielny skrypt, który musi wykonać samą instalację szkieletu. Jeśli twoja AJAX żąda adresu URL, takiego jak "index.php? Option = com_yourcomponent & view = ....", będzie to pierwsze. Jeśli żądasz adresu URL, takiego jak "/ modules/mod_yourmodule/...", będzie to drugie. Domyślam się, że to * jest * tym ostatnim, ponieważ wspominasz słowo "moduł". Ale proszę potwierdzić. –