如何在 joomla 中获取 sql 中的会话 ID

How to get session ID in sql in joomla

我在 Joomla 中使用 vcharts 并尝试根据登录者实现图表。遗憾的是 vcharts 只允许我使用 SQL 进行查询而不是 PHP 所以我将如何然后获取会话 ID。

我发现这种方法:使用 joomla api

<?php
    $link = mysqli_connect("localhost", "joomla_usr", "geheim", "joomla_db");
    define('_JEXEC', 1);
    define('JPATH_BASE', dirname(__FILE__));
    define('DS', DIRECTORY_SEPARATOR);
    require_once(JPATH_BASE . DS . 'includes' . DS . 'defines.php');
    require_once(JPATH_BASE . DS . 'includes' . DS . 'framework.php');
    require('libraries/joomla/factory.php');
    $mainframe = JFactory::getApplication('site');
    $mainframe->initialise();
    $session = JFactory::getSession();
    $query_user = "SELECT name, username, email FROM joomla_users WHERE id=(SELECT userid FROM joomla_session WHERE session_id='" . $session->getId() . "')";
        $result_user = mysqli_query($link, $query_user);
        $row_user = mysqli_fetch_array($result_user);
 ?>

也许您可以直接使用查询从您的平台访问 mysql 数据库。或者以任何方式嵌入PHP。

基于 SO 问题 Variables added to vchart joomla sql query not picked up(它公开了 joomla 用户通常必须付费才能看到的 vcharts 手册的相关部分...)似乎可以在 [=25] 中使用占位符=] 是:

{loggedinuserid}

所以,你可以这样写

SELECT * FROM #__users WHERE id = {loggedinuserid}

当然这只是一个猜测,因为我从未使用过 vcharts,也没有看过实际的文档。

如果它不喜欢 #__ 前缀占位符,那么我想您需要像这样手动替换它:

SELECT * FROM lmnop_users WHERE id = {loggedinuserid}

综上所述,我对 Plotalot 扩展有一些经验,它的文档非常好。