gpt4 book ai didi

php - 使用 cURL POST 方法的问题

转载 作者:行者123 更新时间:2023-12-02 18:49:14 25 4
gpt4 key购买 nike

我正在尝试抓取一个网站,以便提取 XHTML 数据以保存为 PHP 中的变量。

该网站使用 AJAX,这意味着我正在查找的数据是在使用搜索字符串(例如 http://website.com/ajax.php?mid=2&pid=4)的 XMLHttpRequest 之后返回的

我尝试设置从 Chrome 和 Firefox 获取的请求 header (略有不同),并尝试将它们包含在 curl_setop()stream_context_create() 选项中 file_get_contents(),但数据仍然没有返回。当我在 Chrome 中检查脚本的请求 header 时,它将该方法显示为 GET,即使该方法已设置为 POST。它对 cURL 和流上下文都执行此操作。

该网站不需要登录,但我注意到它会发送 session cookie 作为请求的一部分,我也将其包含在 HTTP 请求中但无济于事。

另一点需要注意的是,从请求 header 中删除 Content-Length 值会立即返回一个空白页面,而保留它会在超时前保持加载大约一分钟,但这可能是无关紧要。

我的问题是,是否有其他人有使用 HTTP header 处理 PHP 和 AJAX 请求的经验?当我将其指定为 POST 时,为什么我会看到 GET 请求?

提前感谢您提供任何见解。

最佳答案

这是在 CURL 中执行 POST 的一种方法:

<?php
session_start();
if( empty( $_SESSION ) ) {
header('Location: /directar/index.php/site/login/return/Test');
}
echo "Info de sesion:";
var_dump( $_SESSION );

$c = curl_init('http://ws048-nueva/directar/index.php/AccessTest/CheckAcess');
$parametros_post = 'action=verChau';
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_POSTFIELDS, $parametros_post);
curl_setopt($c, CURLOPT_VERBOSE, TRUE);
curl_setopt($c, CURLOPT_COOKIE, 'PHPSESSID=' . $_COOKIE['PHPSESSID']);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
session_write_close();
$page = curl_exec ($c);
echo "<br>";
echo "<br>";
echo $page;
curl_close ($c);

if( $page === 'true' ) {
echo "<br>si";
}
else {
echo "<br>no";
}

?>

这是我在 Yii 中使用 CheckAccess 方法完成的,如果当前登录的用户有权执行我作为 POST 参数发送的操作,则返回 true 或 false,并且它正在工作。 (我正在传递 session 信息 cookie)。

关于php - 使用 cURL POST 方法的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16015137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com