我有几个PHP脚本用于AJAX查询,但我希望它们能够在Joomla的身份验证系统的保护下运行。以下是安全的吗?有没有不必要的线?
<?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.");
?>
<?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. */
?>
答案 0 :(得分:2)
虽然我在代码中看不到任何不安全的东西,但最好是对标准的Joomla组件进行AJAX / JSON调用。这里有一篇关于如何执行此操作的好文章: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。当您将&format=xml
添加到请求网址的末尾时,它将从view.xml.php而不是view.html.php中提取。
答案 1 :(得分:0)
确实有效,您需要获取用户的会话数据
jimport( 'joomla.session.session' );
$session =& JFactory::getSession();
打印会话以查看出现的内容