【发布时间】:2012-01-18 17:19:35
【问题描述】:
是否可以在 PHP 中包含某些内容而不传递传递给原始脚本的变量?
我正在使用 Joomla,我收到错误记录 here(“非法变量...”)。 php 脚本是一个将数据发送回浏览器的 AJAX 脚本,因此该脚本需要大量 POST 变量,执行数据库查询,然后回显结果。我正在尝试加强安全性,因此我在此脚本中添加了一个包含以使用内置的 Joomla 模块对用户进行身份验证。我从here 得到了用户身份验证脚本的想法。
身份验证脚本适用于某些页面,但对于其他页面,我会收到上述错误。所以我想包含身份验证脚本而不向它传递任何变量。这可能吗?
编辑:这里有更多细节。
在 ajax 脚本中我有这个:
<?php
include '/var/www/joomla-auth.php';
...
下面是脚本,基本上包含的“joomla-auth.php”脚本负责获取mysql查询的用户名和密码。 joomla-auth 的内容:
<?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.");
$user =& JFactory::getUser();
我很确定抛出错误的是定义或要求行:
非法变量 _files 或 _env 或 _get 或 _post 或 _cookie 或 _server 或 _session 或全局变量传递给脚本。
如上面第一个链接中所述。
编辑 2:
'joomla-auth.php' 脚本生成 $username 和 $password 变量,然后在 AJAX 脚本中使用。我在 AJAX 脚本的顶部尝试了这个:
function get_creds(){
include '/var/www/joomla-auth.php';
return Array($username,$password);
}
$creds = get_creds();
$username = $creds[0];
$password = $creds[1];
....
但是 $_POST 变量仍然被传递到 /var/www/joomla-auth.php :-(
【问题讨论】:
-
从您的描述中很难准确说出您要完成的工作。您能否将您的代码添加到您的问题中?只是进行 post 调用的片段和引发错误的被调用脚本的一部分。
标签: php ajax authentication joomla include