Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过PHP登录保存经过身份验证的会话_Php_Html_Http_Curl_Session State - Fatal编程技术网

通过PHP登录保存经过身份验证的会话

通过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

这是关于前面的StackOverflow问题,Tom B.建议使用此格式通过HTTP/HTTPS登录:
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