如何访问发布到PHP服务器的所有值
我最初以为是在如何访问发布到PHP服务器的所有值,php,http,Php,Http,我最初以为是在$\u POST超级全局中,但如果URL中包含值,则不是这样 $\u REQUEST这样做了,并没有包括cookies(参考),这让我很惊讶,后来我发现我显然使用了默认的发行版php.ini文件,其中没有包含cookies(参考)的“C”。但是,我不希望使用$\u请求,因为它不区分get请求,更改服务器和php.ini文件可能会引起安全问题 访问所有post值的正确方法是什么 编辑。我添加了$real\u post部分。这是正确的做法吗 <?php setcookie('co
$\u POST
超级全局中,但如果URL中包含值,则不是这样
$\u REQUEST
这样做了,并没有包括cookies(参考),这让我很惊讶,后来我发现我显然使用了默认的发行版php.ini文件,其中没有包含cookies(参考)的“C”。但是,我不希望使用$\u请求
,因为它不区分get请求,更改服务器和php.ini文件可能会引起安全问题
访问所有post值的正确方法是什么
编辑。我添加了$real\u post
部分。这是正确的做法吗
<?php
setcookie('cookie', 'COOKIE', time() + (86400 * 30), "/");
echo('$_GET<pre>'.print_r($_GET,1).'</pre>');
echo('$_POST<pre>'.print_r($_POST,1).'</pre>');
echo('$_COOKIE<pre>'.print_r($_COOKIE,1).'</pre>');
echo('$_REQUEST<pre>'.print_r($_REQUEST,1).'</pre>');
$real_post=($_SERVER['REQUEST_METHOD'] == 'POST')?array_merge($_GET,$_POST):array();
echo('$real_post<pre>'.print_r($real_post,1).'</pre>');
?>
<form action='postorget.php?get=GET' method='post'>
<input type='text' name='post' value='POST'>
<input type='submit'>
</form>
美元
排列(
[获取]=>获取)
美元邮政
排列(
[发布]=>发布)
美元饼干
排列(
[cookie]=>cookie)
$\请求
排列(
[获取]=>获取
[发布]=>发布)
对不起,你的问题有点不清楚。附加到URL的参数(正如您在开头提到的)是GET参数,因此它们包含在
$\u GET
超全局中。它们根本不是POST变量。那么你的问题是什么?您可以将$\u POST
和$\u GET
组合在一起,或者最好在这两个位置检查所需的参数
你可以在这样的事情上投入无限的时间,但一个方便的方法可能是这样的:
这一行只是一个例子。它从超级全局变量$\u GET
或$\u POST
中检索名为“param”的参数,并将其存储在本地范围内的变量$params
中。通过这种方式,您可以访问正在查找的任何参数,而不管它是作为GET还是POST参数发送的。我经常将其封装在一个方便的函数中,该函数还负责验证参数的运行时值
您还可以将此示例包装到迭代循环中:
这其实是两个例子。显然,您只需要循环中显示的两条语句中的一条。这取决于您是喜欢参数数组还是单独的局部标量变量
如果您正在寻找一种获取所有get和POST参数的方法,而不知道可能是哪种参数,那么您必须将两个超全局参数组合起来:
但是请注意,这是一个非常值得怀疑的体系结构。它通常会打开安全漏洞 您可以执行以下操作: $uVariables=array(“GET”=>$\u GET,“POST”=>$\u POST,“COOKIES”=>$\u COOKIES,“SESSION”=>$\u SESSION)
然后使用json_encode()进行数据库存储。如果您以后决定构建日志查看器,您可以使用json_decode()将所有内容恢复到原始状态。我的理解是,get和POST请求永远不会同时发生,因此我不相信它们是get值,而是真正的POST值,即使PHP将它们显示为get变量。您是对的,您的请求是GET或POST,而不是两者。但这并不意味着不能提供GET和POST参数。也许你不应该,但你可以。可以是PUT/DELETE/OPTIONSthough@DarkBee这当然是对的,但不是这个问题的主题:-)此解决方案只能访问一半的值。我“可以”做一些类似的事情并将两者合并,但这听起来不像是“正确”的方式。我很好奇-你为什么需要这样做?@u_mulder添加了日志功能,并希望跟踪所有GET和POST值,结果让我吃惊。
$param = isset($_GET['param']) ? $_GET['param']
: (isset($_POST['param']) ? $_POST['param']
: null);
$params = [
'id' => null,
'key' => null,
'value' => null,
'remark' => null
]; // just as examples
foreach ($params as $key=>$null) {
// alternative 1: store the value of param $key in a single local scalar variable
// this results in local variables $id, $key, $value, $remark, just as examples
$$key = isset($_GET[$key]) ? $_GET[$key]
: (isset($_POST[$key]) ? $_POST[$key]
: null);
// alternative 2: store the value of param $key in a general but local params array
// this results in the above $params array, but filled with scalar values
$params[$key] = isset($_GET[$key]) ? $_GET[$key]
: (isset($_POST[$key]) ? $_POST[$key]
: null);
}
$params = array_merge($_GET, $_POST);