gpt4 book ai didi

php - 通过 PHP 登录保存经过身份验证的 session

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:28:33 26 4
gpt4 key购买 nike

这是引用这个早期的 StackOverflow 问题,login credentials ,其中 Tom B. 建议使用此格式通过 HTTP/HTTPS 登录:username:password@domain.com

这种方法使检查页面源代码的任何人都可以看到用户名和密码。

有什么方法可以通过 PHP (也许是 cURL) 执行初始登录,然后继续进行 HTML session ?我尝试了以下方法,但由于某种原因, session 未保存,导致后续 HTML 失败:

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://url.xxx');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, "user:password");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$output = curl_exec($ch);
curl_close($ch);
include 'sessionPage.html';
?>

这种格式也不起作用:

curl_setopt($ch, CURLOPT_URL, 'http://user:password@url.xxx');

我如何通过 PHP 脚本成功登录并将 session 转发到后续 HTML 页面? 资源是第三方的,所以我无法控制 session 信息。

谢谢。

最佳答案

您可以使用 cookie 文件来保存成功(手动)登录的 session_id。这样,curl 脚本将看起来是首先创建 session ID 的用户。

curl 脚本

function get_data( $url ) {
$cookie = 'cookie.txt';
$ch = curl_init();
$timeout = 5;
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );
curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie );
curl_setopt( $ch, CURLOPT_COOKIEFILE, $cookie );
$data = curl_exec( $ch );
curl_close( $ch );

return $data;
}

cookie 文件(只包含这一行)

www.awebsite.com    TRUE    /   FALSE   0   PHPSESSID   5rsiasdfasdfasdfasdf73dvi9r0

要获取 session ID,请手动登录到相关站点,使用浏览器开发工具查看 cookie 并复制 PHPSESSID。显然,使用这种方法,您只能自己先获取 session_id。

关于php - 通过 PHP 登录保存经过身份验证的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31937199/

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