मैं जूमला के लिए एक मॉड्यूल लिख रहा हूं, इस बिंदु पर मुझे वास्तव में जेफैक्टरी का उपयोग करके डेटाबेस से कनेक्ट करने में सक्षम होना चाहिए। आम तौर पर कोई भी $db = JFactory::getDBO();
का उपयोग कर सकता है, लेकिन PHP त्रुटि मुझे बताती है कि जेएफटीसी कक्षा शामिल नहीं है। तो अब मुझे यह जानना होगा कि इस जेएफटीसी कक्षा को कैसे शामिल किया जाए। मैंने इंटरनेट पर कुछ सुझावों की कोशिश की है, अनुपस्थित सफलता, अभी तक। यह कोड है (यह स्टैंडअलोन पर सही काम करता है)में बाहरी php फ़ाइल में जफैक्टरी क्लास शामिल है, जूमला
<?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);
अब यह सब काम कर के रूप में मैं चाहता हूँ। केवल एक चीज अब है: सुरक्षा। मैं हैकर सबूत होने के बारे में भी निश्चित नहीं हूं। क्या कोई इसकी समीक्षा कर सकता है? धन्यवाद :)
मॉड्यूल लिखना ..? जब तक जूमला आपके मॉड्यूल को कॉल करता है तब तक जेएफटीसी को पहले से ही शामिल किया जाना चाहिए। क्या आप सुनिश्चित हैं कि यह एक जूमला मॉड्यूल है जिसे आप लिख रहे हैं (एक घटक या प्लगइन भी हो सकता है)। देखें [एक साधारण मॉड्यूल बनाना] (http://docs.joomla.org/Creating_a_simple_module)। –
हैलो, हाँ मैं एक मॉड्यूल लिख रहा हूँ। मुझे उम्मीद है कि आप क्या कह रहे हैं, जेएफटीसी को पहले से ही शामिल किया जाना चाहिए। लेकिन किसी भी तरह यह नहीं है। उपरोक्त कोड AJAX द्वारा बुलाया जा रहा है। उपर्युक्त कोड का उपयोग करते समय, सबकुछ काम कर रहा है जैसा मैं चाहता हूं। अगर मैं स्टैंडअलोन डीबी कनेक्शन को हटा देता हूं, तो बस कोई कनेक्शन नहीं है .. मैंने संपादित किया है और उपर्युक्त कोड sou जोड़ा है, आप मेरा प्रयास देख सकते हैं। धन्यवाद :) –
आप कहते हैं कि उपरोक्त कोड AJAX द्वारा बुलाया गया है। वास्तव में आप इसे कॉल करने के लिए किस यूआरएल का उपयोग कर रहे हैं, यद्यपि? यह परिभाषित करेगा कि क्या आप 'असली' मॉड्यूल लिख रहे हैं (सभी जूमला फ्रेमवर्क पहले से ही शामिल हैं) या एक स्टैंडअलोन स्क्रिप्ट जिसे फ्रेमवर्क सेटअप स्वयं करने की आवश्यकता है। यदि आपका AJAX 'index.php? विकल्प = com_yourcomponent & view = ....' जैसे यूआरएल का अनुरोध कर रहा है, तो यह पूर्व होगा। यदि आप '/ मॉड्यूल/mod_yourmodule/...' जैसे यूआरएल का अनुरोध कर रहे हैं तो यह बाद वाला होगा। मैं अनुमान लगा रहा हूं कि यह संभवतः * है * बाद वाला, क्योंकि आप 'मॉड्यूल' शब्द का उल्लेख करते हैं। लेकिन कृपया पुष्टि करें। –