Я создал собственный скрипт PHP, который загружает информацию, отправленную формой, в базу данных MySQL. Я хотел бы вставить идентификатор пользователя из Joomla пользователя, который представил данные MySQL.
Для этого я прочитал, что Joomla генерирует сессионный cookie, когда пользователь входит в joomla. Я надеюсь, что смогу найти подходящие файлы cookie, а затем скопировать идентификатор пользователя joomla и обновить значение в пользовательской базе данных mysql.
Вот то, что я имею до сих пор. Он не работает должным образом, но он должен дать вам представление о подходе к моей проблеме.
<?php
session_start();
//makes connection to databases
include_once "mysql-connect.php";
if (isset($_SESSION['id'])) {
$id = $_SESSION['id']; //I save the id in a session variable
saveUserData($id);
// activeProfile is the name of the cookie used by Joomla/Jomsocial
} elseif (isset($_COOKIE['activeProfile'])) {
$id = $_COOKIE['activeProfile'];
saveUserData($id);
} else {
$return_msg = "not_logged_in";
}
function saveUserData($id) {
// this is where I save the id in a session variable
$_SESSION['id'] = $id;
$myConnJ = mysqli_connect("hostname","username","password","databasename")
or die ("could not connect to joomla");
//query login info from Joomla
$sql = "SELECT * FROM jos_session WHERE id='".$id."'";
$result = mysqli_query($myConnJ, $sql)
or die('ERROR: jos_user query failed for id = $id');
$row = mysqli_fetch_array($result);
echo $row;
// user data I need for charts is saved in session vars
$jom_id = $row['id'];
$_SESSION['jom_id'] = $jom_id;
}
?>
Я пробовал разные эхо, чтобы отобразить данные, но ничего не работает. В идеале $ jom_id будет идентификатором пользователя из данных сеанса, которые я могу вставить в пользовательскую базу данных. Я думаю, что это требует некоторого развития метода проверки соответствия куки.
Еще одна вещь, я читал о похожих проблемах, и было предложено использовать встроенные команды Joomla для доступа к данным сеанса Joomla. Если у вас есть понимание того, как я могу использовать эти команды, пожалуйста, дайте мне знать. Вот несколько примеров кода:
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(dirname(__FILE__)));
define( 'DS', DIRECTORY_SEPARATOR );
require_once (JPATH_BASE . DS . 'includes' . DS . 'defines.php');
require_once (JPATH_BASE . DS . 'includes' . DS . 'framework.php');
$mainframe = JFactory::getApplication('site');
Как всегда, спасибо за любое направление, которое вы можете предоставить. Это очень ценится.