我有一组php处理页面通过get传递数据进行交互,但现在我必须在几个处理页面之间传递JSON,并且需要与使用GET时相同的功能。
当前工作的get方法:
//The guts
header("Location: $moreprocessing_url/?userid=$id");
exit();
然后在moreprocessing_url中选择:
$userid = $_GET[id];
//More guts
$something = 'important';
header("Location: $public_url/?something=$something");
exit();
所以现在在第一个处理页面中,我不需要发送简单的字符串,而是需要发送JSON - 所以我使用CURL发布JSON - 但是在帖子之后我想要发布的页面继续处理并使原始页面停止。与上述代码的工作方式相同,但使用CURL / post。也许我对CURL的理解不够强,这是不可能的?
我的CURL:
$curl = curl_init($moreprocessing_url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, false);
curl_setopt($curl, CURLOPT_HTTPHEADER,
array("Content-type: application/json"));
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_exec($curl);
curl_close($curl);
exit();
所以这会返回到发生CURL的当前页面而不是我想要的moreprocessing_url - 这可能吗?基本上我希望页面被发布,接管和发送CURL的页面停止。
答案 0 :(得分:0)
我相信你正在尝试这样做:
如果这是真的,那么你需要对你的cURL脚本进行一些调整。这些方面的东西:
$curl = curl_init("url.php"); // the URL that processes your POST
curl_setopt($curl, CURLOPT_POST, true); // use POST method
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json")); // set POST header
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // set POST body
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // send output to a variable for processing
curl_setopt($curl, CURLOPT_HEADER, true); // set to true if you want headers in the output
curl_setopt($ch, CURLOPT_NOBODY, true); // set to true if you do not want the body
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); // set to false if you want to see what redirect header was sent
$output = curl_exec($curl);
curl_close($curl);
var_dump($output);
根据CURLOPT_HEADER
和CURLOPT_NOBODY
使用的值,$output
变量将包含响应标题,正文或两者(它们由两个空行分隔)。如果您需要标题中的内容,可以使用正则表达式提取所需的标题并将其发送到浏览器。
如果您选择这样做,您可以回复身体。