通过PHP登录保存经过身份验证的会话
这是关于前面的StackOverflow问题,Tom B.建议使用此格式通过HTTP/HTTPS登录:通过PHP登录保存经过身份验证的会话,php,html,http,curl,session-state,Php,Html,Http,Curl,Session State,这是关于前面的StackOverflow问题,Tom B.建议使用此格式通过HTTP/HTTPS登录:username:password@domain.com 这种方法使检查页面源的任何人都可以看到用户名和密码 有没有办法通过PHP(可能是cURL)执行初始登录,然后继续HTML会话?我尝试了以下操作,但由于某些原因,会话未保存,导致正在进行的HTML失败: <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'ht
username:password@domain.com
这种方法使检查页面源的任何人都可以看到用户名和密码
有没有办法通过PHP(可能是cURL)执行初始登录,然后继续HTML会话?我尝试了以下操作,但由于某些原因,会话未保存,导致正在进行的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';
?>
我如何通过PHP脚本成功登录,并将会话转到下一个HTML页面资源是第三方的,因此我无法控制会话信息。
谢谢。您可以使用cookie文件保存成功(手动)登录的会话id。这样一来,curl脚本将显示为首先创建会话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文件(仅包含此行)
要获取会话id,请手动登录相关站点,使用浏览器开发工具查看cookie并复制
PHPSESSID
。显然,使用这种方法,您只能首先自己获取会话id。您可以使用cookie文件保存成功(手动)登录的会话id。这样一来,curl脚本将显示为首先创建会话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文件(仅包含此行)
要获取会话id,请手动登录相关站点,使用浏览器开发工具查看cookie并复制
PHPSESSID
。显然,使用这种方法,您必须首先自己获取会话id。只有在同一台机器上运行php时才可能。基本上,您需要做的是从cURL的响应中获取cookie,并使用PHP将cookie写入文件系统的正确位置,以模拟成功登录。所有这些都假设cookie用于身份验证。还有其他形式的身份验证:持久形式、url中的sessionid、IP地址等。只有在同一台机器上运行php时才可能。基本上,您需要做的是从cURL的响应中获取cookie,并使用PHP将cookie写入文件系统的正确位置,以模拟成功登录。所有这些都假设cookie用于身份验证。还有其他形式的身份验证:持久形式、url中的sessionid、按IP地址等。如果您想使用curl,可以使用保存会话id。我读过这方面的内容,但不确定如何实现它。你能在这方面提供一些资源吗?给你举一个我使用的测试脚本的例子。希望对您有所帮助如果您想使用curl,您可以使用保存会话id。我读过这方面的内容,但我不确定如何实现它。你能在这方面提供一些资源吗?给你举一个我使用的测试脚本的例子。希望各位老师能及时回复。服务器(实际上是一个IP摄像头)似乎没有使用cookie。这怎么可能?如果我在浏览器上打开一个选项卡进行登录,其他选项卡可以访问相机而无需再次登录。但浏览器的cookie缓存是空的。如果我完全关闭浏览器并重新启动,服务器会再次请求登录吗?如果没有cookies,它是如何跟踪的?很抱歉回复太晚。服务器(实际上是一个IP摄像头)似乎没有使用cookie。这怎么可能?如果我在浏览器上打开一个选项卡进行登录,其他选项卡可以访问相机而无需再次登录。但浏览器的cookie缓存是空的。如果我完全关闭浏览器并重新启动,服务器会再次请求登录吗?没有饼干,它是如何跟踪的?
www.awebsite.com TRUE / FALSE 0 PHPSESSID 5rsiasdfasdfasdfasdf73dvi9r0