其他人已经问过如何从perl,java,bash等中做到这一点,但是我需要在PHP中做到这一点,而且我没有看到已经问过任何专门针对PHP(或带有答案)的问题。
我的代码:
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
这行不通。目标站点具有print_r($_GET); print_r($_POST);
,因此当我检查时,$result
我应该能够看到正在发送的字段。但是,$ _POST数组为空-我只看到get变量。如果我?...
从$ url中删除查询字符串,则POST数组将正确填充。但是现在我没有GET参数了。我该怎么做呢?
我的具体情况是,我需要发送过多的数据以使其无法容纳在查询字符串中,但我无法将其全部作为POST发送,因为我要提交的站点正在基于变量选择发布数据的处理程序在GET字符串中。我可以尝试进行更改,但理想情况下,我希望能够在同一查询中发送get和post数据。
# GET query goes in the URL you're hitting
$ch = curl_init('http://example.com/script.php?query=parameter');
# POST fields go here.
curl_setopt($ch, CURLOPT_POSTFIELDS, array('post' => 'parameter', 'values' => 'go here'));
如果执行POST,PHP本身不会决定忽略GET参数。无论使用哪种http谓词加载页面,它都会填充$ _GET-如果URL中有查询参数,它们将进入$ _GET。
如果您没有得到$ _POST和$ _GET,则是由于某种原因导致重定向或以其他方式杀死了某些东西。例如,您是否检查$_SERVER['REQUEST_METHOD']
过您的代码是否实际作为POST运行?如果未实际执行发布,则PHP不会填充$ _POST。您可能已经向服务器发送了一个帖子,但这并不意味着您的代码实际上将在POST模式下执行-例如,mod_rewrite重定向。
由于您已启用FOLLOW_REDIRECT,因此只需假设您在执行代码时实际上收到了一篇文章。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句