PHP AJAX Joomla认证脚本


PHP AJAX Joomla Authentication Script

我有一个这样的PHP脚本:

<?php
include 'authorization_script.php';
foreach ($_POST as $key => $value){
    //do something here
}
?>

问题是如果 "authorization_script.php"传递了一个只有数字名称的$_POST变量,脚本将崩溃。而不是修复这个问题,我只是希望确保没有$_POST变量被传递到包含脚本。

这个"authorization_script"不需要任何外部变量,但是由于$_POST变量在默认情况下是全局的,所以它们被传递给这个脚本。在我之前的一个问题中,有人建议我可以用PHP中的名称空间来解决这个问题。

我可以改变$_POST变量的命名空间,使它们不传递给包含脚本吗?如果有,有人能告诉我怎么做吗?还是有更好的办法?

Thx

编辑:而不是通过重命名$_POST变量来破解我的方法,就像你们中的一些人建议的那样,我应该解决真正的问题。这是Joomla网站内的一个AJAX脚本。当我调用这个ajax脚本时,我仍然希望对用户进行身份验证,然后从本地数据库对凭证进行分级。我发现从AJAX脚本对用户进行身份验证的方法如下:
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.");

我认为错误是从joomla框架脚本内部抛出的(该脚本的第528行)。

有什么更好的方法来验证经验丰富的Joomla用户吗?

或者如果你不想修复你的include脚本,你可以做这个可怕的hack:

<?php
// watch this ugly hack
$post_hack = $_POST;
unset($_POST);
include 'authorization_script.php';
$_POST = $post_hack;
foreach ($_POST as $key => $value){
    //do something here
}
?>

我是否可以更改$_POST变量的命名空间,使它们没有传递给包含脚本?

。全局变量是全局的,与命名空间无关。

还是有更好的方法?

修复include脚本。你应该努力使你的代码能够适应错误的输入——,特别是执行授权的代码。

对,这很难看,但应该修复它:

<?php
$aPost = $_POST;
unset($_POST);
include 'authorization_script.php';
foreach ($aPost as $key => $value){
    //do something here
}
?>