我创建了一个自定义PHP脚本,它将表单提交的信息上传到MySQL数据库。我想从提交MySQL数据的用户的Joomla中插入用户ID。
为此,我已经读过Joomla在用户登录joomla时生成会话cookie。我希望能够识别匹配的cookie,然后复制joomla用户ID并将值更新到自定义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将是我可以插入自定义数据库的会话数据中的用户ID。我认为这需要对验证匹配的cookie的方法进行一些开发。
还有一件事,我正在阅读类似的问题,并建议使用内置的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');
一如既往,感谢您提供的任何指导。非常感谢。
答案 0 :(得分:0)
也许我误解了你的要求,因为在Joomla中检索用户ID非常简单。为了从当前登录的用户获取信息,您只需访问JFactory::getUser()
方法。无需烦恼会议:
$user = &JFactory::getUser();
现在你有一个包含你需要的所有信息的对象:
您可以获得$id = $user->id;
我在joomla中获取了上述信息!维基:Accessing the current user object
JUser类的Api文档:JUser。