请求将PHP连接到Joomla的帮助

时间:2011-06-17 06:35:15

标签: php mysql cookies joomla session-variables

我创建了一个自定义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');

一如既往,感谢您提供的任何指导。非常感谢。

1 个答案:

答案 0 :(得分:0)

也许我误解了你的要求,因为在Joomla中检索用户ID非常简单。为了从当前登录的用户获取信息,您只需访问JFactory::getUser()方法。无需烦恼会议:

$user = &JFactory::getUser();

现在你有一个包含你需要的所有信息的对象:

  1. id - 唯一的数字用户ID。在引用其他数据库表中的用户记录时使用它。
  2. name - 用户名。
  3. 用户名 - 用户的登录名/屏幕名称。
  4. 电子邮件 - 用户的电子邮件地址。
  5. 密码 - 用户密码的加密版本
  6. password_clear - 仅在更改用户密码时设置。否则,保持空白。
  7. usertype - 用户在Joomla中的角色!
  8. gid - 设置为用户的组ID,对应于usertype。
  9. block - 当用户在Joomla中设置为“已阻止”时设置为“1”。
  10. registerDate - 设置为用户首次注册的日期。
  11. lastvisitDate - 设置为用户上次访问该网站的日期。
  12. guest - 如果用户未登录,则此变量将设置为“1”。其他变量将是未设置或默认值。
  13. 您可以获得$id = $user->id;

    这样的ID

    我在joomla中获取了上述信息!维基:Accessing the current user object
    JUser类的Api文档:JUser