【问题标题】:How to start session with php code如何使用 php 代码开始会话
【发布时间】:2018-09-16 15:49:02
【问题描述】:

我想向server发送请求。我正在使用此代码

$data=[..];

$header=[
"Accept-language: en-US,en;q=0.5",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Connection: keep-alive",
"Host: www.rvvi.cz",
"Referer: https://www.rvvi.cz/riv?s=rozsirene-vyhledavani",
"Upgrade-Insecure_Requests:1",
"User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/2010",
"Cookie: PHPSESSID=4ck9tc3vm4prgfubnjvutilgd2",
"Content-type: application/x-www-form-urlencoded"
 ];

$url = "https://www.rvvi.cz/riv";
$query = http_build_query($data);
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST,strlen($query));
curl_setopt($ch,CURLOPT_POSTFIELDS,$query);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$page=curl_exec($ch);
echo($page);

但问题在于标头中的 PHPSESSID。要访问它,我必须使用我的浏览器手动访问该服务器(这可能会启动我的 SESSION),复制 PHPSESSID 并将其粘贴到我的脚本中。但是,我想让这个脚本自动化。我需要在不使用浏览器或复制内容的情况下从我的服务器激活它们。 有什么方法可以让我只用我的 php 代码开始这个会话吗?

【问题讨论】:

  • 会话过期,所以这会中断。您需要找到另一种身份验证方式。
  • 你知道怎么做吗?我的尝试之一是首先使用 file_get_contents 请求,然后从 $http_response_header 获取此 PHPSESSID。但它不起作用。
  • 视情况而定。理想情况下,该站点应该提供某种 API,您可以使用这些 API 进行身份验证,然后提出您的请求。否则,您可以尝试使用另一个 cURL 请求登录,然后使用设置的 cookie,但这真的很麻烦,而且很麻烦。 API是最好的途径。您的问题非常广泛,因此不完全适合 Stack Overflow。

标签: php session curl session-cookies


【解决方案1】:
$curl = curl_init( 'https://httpbin.org/post' );
curl_setopt( $curl, CURLOPT_POST, true );
curl_setopt( $curl, CURLOPT_POSTFIELDS, array( 'field1' => 'some data', 'field2' => 'some more data' ) );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
$response = curl_exec( $curl );
curl_close( $curl );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-10
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 2021-09-10
    相关资源
    最近更新 更多