保持读取的文件上的Cookie仍然存在于下一个读取php

时间:2019-06-19 10:48:41

标签: php rest curl php-curl

因此,我想用https://www.mangaeden.com/api/mymanga(我称为“第一个文件”)中的PHP进行API调用,以JSON格式检索我的个人数据(例如,我最喜欢的漫画等),但是要这样做我必须从https://www.mangaeden.com/ajax/login/?username=xxx&password=xxx登录(我称为“第二个文件”),该文件包含一个用于存储cookie的程序,该程序包含我从URL参数中输入的用户名和密码。

当我使用cURL函数运行第一个文件以发送标头时,也成功发送了包含cookie数据(包括我的用户名和密码)的标头,但是此后,当我调用第二个文件发送我的个人数据时,cookie会执行不存在,所以我的数据文件不出现。

function run_set_cookie_function_inside_this_file($file_url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $file_url);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_exec($ch);
    curl_close($ch);
}

// if this file is executed, the user's username and password will be stored in cookies
run_set_cookie_function_inside_this_file("https://www.mangaeden.com/ajax/login/?username=xxx&password=xxx");
// this file requires user's username and password which stored in cookies to return other data (example: user's favorite movie, pet, etc.)
echo file_get_contents("https://www.mangaeden.com/api/mymanga/");

注意:这2个文件(第一个和第二个文件)不是我的,因此我无法更改其中的程序代码

那是我的问题,所以我的问题是我如何保持在第一个文件上创建的cookie仍然存在于第二个文件中?

对不起,我的英语不好,句子很难理解。 非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

                $ch = curl_init();
                curl_setopt($ch, CURLOPT_URL,'https://www.mangaeden.com/ajax/login/?username=xxx&password=xxx');
                curl_setopt($ch, CURLOPT_COOKIE, true);
                curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt');
                curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt');
                curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
                curl_exec($ch);

                $ch = curl_init();
                curl_setopt($ch, CURLOPT_URL,'https://www.mangaeden.com/api/mymanga/');
                curl_setopt($ch, CURLOPT_COOKIE, true);
                curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt');
                curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt');
                curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
                $output = curl_exec($ch);
                echo $output;
                curl_close($ch)

我有类似这样的登录名,第一个curl和第二个请求api!