PHP AJAX скрипт аутентификации Joomla - PullRequest
1 голос
/ 21 декабря 2011

У меня есть такой PHP-скрипт:

<?php
include 'authorization_script.php';

foreach ($_POST as $key => $value){
    //do something here
}
?>

Проблема в , если , то в "authorization_script.php" передается переменная $ _POST с только числовым именем, сценарийпотерпит крахВместо того, чтобы исправить эту проблему, я просто хочу убедиться, что переменные $ _POST никогда не передаются в сценарий включения.

Для работы этого сценария authorization_script не нужны никакие внешние переменные, но поскольку переменные $ _POSTпо умолчанию являются глобальными, они передаются в этот скрипт.В одном из моих предыдущих вопросов было предложено *1009* решить эту проблему с помощью пространств имен в PHP.

Могу ли я изменить пространство имен переменных $ _POST, чтобы они не передавались вскрипт включения?Если это так, может кто-нибудь помочь, как это сделать?Или есть лучший способ?

Thx

РЕДАКТИРОВАТЬ: вместо того, чтобы взломать мой выход из этого путем переименования переменной $ _POST, как некоторые из вас предложили мне исправить настоящую проблему,Это скрипт AJAX на сайте Joomla.Когда я вызываю этот сценарий 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?

Ответы [ 3 ]

3 голосов
/ 21 декабря 2011

или, если вы не хотите исправлять свой скрипт включения, вы можете сделать это ужасно:

<?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
}
?>
0 голосов
/ 21 декабря 2011

Правильно, это очень некрасиво, но должно это исправить:

<?php
$aPost = $_POST;
unset($_POST);
include 'authorization_script.php';

foreach ($aPost as $key => $value){
    //do something here
}
?>
0 голосов
/ 21 декабря 2011

Могу ли я изменить пространство имен переменных $ _POST, чтобы они не передавались в сценарий включения?

Нет.Глобальные глобальные значения независимо от пространства имен.

Или есть лучший способ?

Исправить скрипт включения.Вы должны постараться сделать свой код устойчивым к неправильному вводу - особенно код, который выполняет авторизацию.

...