从哪里可以获得有关$_REQUEST中数组字段的信息?

时间:2012-03-19 作者:Rafal

我刚开始学习PHP和使用WordPress,对Codex中的信息有点困惑。有人告诉我,Codex得到了我所需要的所有信息,但我还是坚持了下来。

What array fields are in $_REQUEST in WordPress? 在法典中找不到它。

E、 g.:人们使用$my_contact = $_REQUEST[\'contact\'];<他们怎么知道$_REQUEST\'contact\' 领域

是否有任何工作流来查找Codex中未描述的变量信息?我是否应该打印所有数组以查看其中的字段?

谷歌帮不了我。。关于$\\u请求。

5 个回复
SO网友:Rarst

这主要是纯PHP,但它确实有WordPress扭曲。

PHP有个superglobal variables, 包含与当前请求相关的信息。其中:

  • $_GET 包含来自URL(HTTP GET请求)的信息$_POST 来自表单提交(HTTP POST请求)的信息$_COOKIES 关于Cookie集和$_REQUEST 是上述各项的组合(根据文件$_COOKIES 通常可以配置为跳过以获得更好的安全性)
但是,WP在加载过程中强制执行自己的逻辑wp_magic_quotes() 处理要仿真的变量magic quotes 设置和实施$_REQUEST 包含以下内容的组合$_GET$_POST, 无论PHP配置如何。

因此,在WordPress环境中,它将包含GET和/或POST请求数据。具体是什么数据将完全取决于您所处的页面以及该页面上发生了什么。

SO网友:fuxia

只是一个关于$_REQUEST: 每当您在代码中看到这一点时,您就知道它是由初学者编写的。正如@Rarst所解释的,这是多种来源的组合。但是,如果数据实际上是按GET发送的,为什么任何人都要处理应该只按POST发送的数据呢?

不要接受来自之前未声明的输入流的数据。使用$_GET 如果你想得到$_POST 如果你想发帖。没有别的了。

要在没有WordPress干预的情况下访问发布的数据,请使用输入流包装器php://input.<因此,与其…

// already changed by WordPress when you get it
$data = $_POST; 
…使用…

// Doesn’t work with \'enctype="multipart/form-data"\'
$data = file_get_contents( \'php://input\' ); 
别忘了data validation.

SO网友:tyler

您提到打印阵列,因此您可能已经知道如何执行此操作。通过执行print_r($_REQUEST);. 这将为您提供每个页面从$\\u请求访问的确切信息。

尽管这里需要注意的是,每个页面可能设置了不同的键。此外,根据您是否在生产中,将其写入临时日志文件可能会有所帮助。您不希望访问者看到此输出。

SO网友:Rafal

我需要它只是为了测试。按照您的建议执行,将所有字段写入一个文件,使用钩子“comment\\u post”确保$\\u请求在发布注释后具有数据。

function rj_comment() {
   // sprint_r as print_r   
   function sprint_r($var) {
    ob_start();
    print_r($var);
    $output=ob_get_contents();
    ob_end_clean();
    return $output;
}   
global $_REQUEST;

$stringData = sprint_r($_REQUEST);

$myFile = "c:/s_request_fiels.txt"; #file name
$fh = fopen($myFile, \'w\') or die("can\'t open file");    
fwrite($fh, $stringData);
fclose($fh);    
};

add_action (\'comment_post\',\'rj_comment\');

SO网友:Subhasish Nath

回答您的以下问题:

他们如何知道$\\u请求有“联系人”字段?

我的回答是:

他们知道,因为他们知道written this hidden input field inside the <form> (as the first input field) 如以下所示:

<input type="hidden" name="contact" value="advanced">
他们还可以启用自定义搜索模板,而不是默认搜索模板search.php 通过在中编写以下代码functions.php

<?php
function wpse_load_custom_search_template(){
    if( isset($_REQUEST[\'contact\']) == \'advanced\' ) {
        require(\'advanced-search-result.php\');
        die();
    }
}
add_action(\'init\',\'wpse_load_custom_search_template\');
?>
希望这能帮助你了解他们是如何知道哪个领域的$_REQUEST

结束

相关推荐

WordPress的行为类似于函数。php不存在

我在本地主机windows服务器上开发我的主题,一切正常,直到我决定将其转移到我的主机。我把它作为我之前转移过的所有wordpress网站,更改了live网站和wordpress url,但就在我激活主题时,功能中没有任何功能。php文件被使用,对于我从那里得到的每一个函数Fatal error: Call to undefined function问题出在哪里?一切都和转移是好的,因为网站的作品像它应该与二十十个主题,也内页工程太多,因为我不使用任何功能,但在frontpage那里是蒂姆拇指使用和几个自