【发布时间】:2020-03-20 13:27:13
【问题描述】:
我构建了一个简单的 PHP 脚本来登录网页并在第二页上接收一些数据。现在,我使用了一个 php 文件和两个使用相同 cookie 的单独 curl 连接。第一个 curl 连接进行登录,第二个接收数据。
现在我想将这两个部分拆分为两个单独的 php 文件,以便通过 Ajax 独立调用。
登录成功,但检索数据不起作用,似乎是由于缺少cookie。
我不太确定是否可以让它以这种方式工作,以及实现我正在尝试的最佳实践是什么,也许有人可以照亮我的想法。
// SET CONSTANTS
define('COOKIE_NAME', 'c.txt');
define('url_login', 'https://website.com/login.cgi');
$postString = 'user='.$user.'&passwd='.$passwd.'&otp='.$otp;
// CREATE CURL CONNECTION FOR LOGIN
$curl_connection = curl_init(url_login);
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_USERAGENT,
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl_connection, CURLOPT_HEADER, false);
curl_setopt($curl_connection, CURLOPT_COOKIEJAR, COOKIE_NAME);
curl_setopt($curl_connection, CURLOPT_COOKIEFILE, COOKIE_NAME);
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $postString);
$loginpage = curl_exec($curl_connection);
// CREATE CURL CONNECTION TO GET DATA
$data_url = 'https://website.com/getData.cgi';
$curl_connection = curl_init($data_url);
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_USERAGENT,
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl_connection, CURLOPT_HEADER, false);
curl_setopt($curl_connection, CURLOPT_COOKIEJAR, COOKIE_NAME);
curl_setopt($curl_connection, CURLOPT_COOKIEFILE, COOKIE_NAME);
$data = curl_exec($curl_connection);
这就是它的工作原理......
一旦我将 curl 连接拆分为单独的 php 文件,第二部分就无法提供此输出:
HTTP/1.1 200 OK 服务器:nginx 日期:格林威治标准时间 2020 年 3 月 20 日星期五 12:49:12 内容类型:文本/html 内容长度:85 连接:关闭缓存控制:无缓存,无存储, must-revalidate Pragma: no-cache Expires: 0 Set-Cookie: ws-sid-10-147-g1e32=deleted;路径=/; max-age=0 严格传输安全性:max-age=63072000;包括子域;预加载 X-Frame-Options: DENY X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block 没有找到 cookie
【问题讨论】:
-
请添加您的代码并说明您的尝试
-
另外,请解释您的代码如何“不起作用”。您是否收到特定的错误消息?代码是否在不拆分文件的情况下退出?它会合并文件吗?
-
已编辑帖子,希望现在清楚