php - Joomla 错误 : 'Illegal variable _files or _env or _get or _post or _cookie or _server or _session or globals passed to script'

标签 php forms joomla

我在 Joomla 中遇到这个错误:

Illegal variable `_files` or `_env` or `_get` or `_post` or `_cookie`
or `_server` or `_session` or `globals` passed to script.

我在谷歌搜索上没有得到太多帮助。

最佳答案

如果您尝试指定名称仅由数字组成的 URL 参数,您将看到此错误,例如

http://www.example.com/?1234567=test

或者如果您尝试使用 joomla-reserved 变量,例如

http://www.example.com/?_files=test

这不是一个很好的错误消息。如果您可以访问 unix 终端,则可以使用一些命令行工具调试此类问题,例如

$ find /var/www/html -exec grep -l 'Illegal variable' {} \;
/var/www/html/libraries/joomla/environment/request.php

这是一个虚构的 joomla 安装,假设有一个相当标准的 DocumentRoot。结果立即确认这是一个 Joomla 错误,并报告是哪个文件导致的。从该文件中提取:

static $banned = array( '_files', '_env', '_get', '_post', '_cookie', '_server', '_session', 'globals' );

foreach ($array as $key => $value)
{   
    // PHP GLOBALS injection bug 
    $failed = in_array( strtolower( $key ), $banned );

    // PHP Zend_Hash_Del_Key_Or_Index bug 
    $failed |= is_numeric( $key );

    if ($failed) {
        jexit( 'Illegal variable <b>' . implode( '</b> or <b>', $banned ) . '</b> passed to script.' );
    }
    ...
}

请注意,错误消息特别具有误导性,因为不仅在保留变量名称的情况下抛出,而且在参数名称为数字时也会抛出。

关于php - Joomla 错误 : 'Illegal variable _files or _env or _get or _post or _cookie or _server or _session or globals passed to script' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8356683/

相关文章:

PHP MySQL 表数据到 Accordion

php - 如何在 "OR LIKE"条件 Laravel 中使用 "AND"

javascript - 无法使用 php 发布 html 页面

php - 这是检查复选框被选中的 PHP 的正确方法吗?

javascript - js 提交按钮显示 'submit query' ,不起作用,仅在 IE Edge/IE * 中

php - 在我自己的脚本中使用 jimport

Joomla 路径不在 open_basedir 路径中

php - 如何在php中找到一个范围内的数值

html - 如何将单选按钮与文本左对齐?

css - 将链接添加到 CSS 样式表