【发布时间】:2012-01-25 10:53:09
【问题描述】:
我有一个这样的 PHP 脚本:
<?php
include 'authorization_script.php';
foreach ($_POST as $key => $value){
//do something here
}
?>
问题是如果“authorization_script.php”传递了一个只有数字名称的$_POST 变量,脚本将崩溃。而不是解决这个问题,我只想确保没有 $_POST 变量被传递给包含脚本。
要让它工作,这个“authorization_script”不需要任何外部变量,但是因为 $_POST 变量默认是全局的,所以它们被传递给这个脚本。 one of my previous questions 有人建议我可以用 PHP 中的命名空间来解决这个问题。
我可以更改 $_POST 变量的命名空间,以便它们不会传递给包含脚本吗?如果是这样,有人可以帮助如何做到这一点?还是有更好的办法?
谢谢
编辑:不要像你们中的一些人建议的那样,通过重命名 $_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 框架脚本中抛出的(this script 上的第 528 行)。
有什么更好的方法来验证来自有经验的 Joomla 人员的用户吗?
【问题讨论】:
-
当然解决实际问题会更好?为什么你的脚本会崩溃?您给出了哪些错误消息?
-
一旦你将
foreach$_POST数组转换成另一个数组,你为什么不直接unset($_POST);? -
@SourLemon 问题是我从“authorization_script.php”调用的 Joomla 函数的一部分。现在我宁愿不改变它。
-
@wanovak - 这不是一个坏主意。谢谢!
-
现在更新后这是一个全新的问题,您应该像这样处理它并打开一个新线程吗?
标签: php authentication post namespaces include