【问题标题】:How to get current Joomla user with external PHP script如何使用外部 PHP 脚本获取当前 Joomla 用户
【发布时间】:2010-03-15 07:00:35
【问题描述】:

我有几个用于 AJAX 查询的 PHP 脚本,但我希望它们能够在 Joomla 的身份验证系统的保护下运行。以下安全吗?有没有多余的线?

joomla-auth.php(与Joomla的index.php位于同一目录):

<?php

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' );

/* Create the Application */
$mainframe =& JFactory::getApplication('site');

/* Make sure we are logged in at all. */
if (JFactory::getUser()->id == 0)
    die("Access denied: login required.");

?>

test.php:

<?php

include 'joomla-auth.php';

echo 'Logged in as "' . JFactory::getUser()->username . '"';

/* We then proceed to access things only the user
   of that name has access to. */
?>

【问题讨论】:

  • 如果你从不同的目录调用那个脚本就不行了
  • 即使脚本本身在joomla根目录下(Joomla 1.7)

标签: php authentication joomla external-script


【解决方案1】:

虽然我在代码中没有看到任何不安全的内容,但最好将 AJAX/JSON 调用调用到标准 Joomla 组件。这里有一篇关于如何做到这一点的好文章:http://blog.syncleon.com/2009/05/ajax-ify-your-joomla-website.html 我还在我的书http://www.packtpub.com/files/learning-joomla-1-5-extension-development-sample-chapter-8-using-javascript-effects.pdf 中写过关于 JavaScript、Joomla 和异步请求的文章(跳到第 168 页)。

基本上,您所做的是为 AJAX 调用的输出创建一个视图,然后创建一个 view.xml.php(或 view.json.php)文件而不是 view.html.php。当您将 &amp;format=xml 添加到请求 URL 的末尾时,它将从 view.xml.php 而不是 view.html.php 中提取。

【讨论】:

  • 模块而不是组件的最佳实践是什么?是否可以创建代理模块而不是代理组件?
  • @Stilero 您不能对模块进行 AJAX 调用。您必须让模块中的 JavaScript 调用组件。
【解决方案2】:

确实有效,您需要获取用户的会话数据

jimport( 'joomla.session.session' );
$session                =& JFactory::getSession();

打印会话以查看结果

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 2014-01-07
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    相关资源
    最近更新 更多