我有2个.php文件
第一个php创建一个会话:
<?php
session_start();
$_SESSION['ID'] = '1';
$_SESSION['NAME'] = 'ALIAS';
$_SESSION['TIME'] = time();
print_r($_SESSION);
第二个文件具有相同的会话,如果使用GET方法从同一浏览器调用它,则应返回会话的值:
<?php
session_start();
if($_SERVER['REQUEST_METHOD'] == "GET"){
$key = $_GET["access_token"];
if($key=="b8bc45179e0c022a0a5e7738356549a3ebf3788c"){
$json = array("status" => 1, "msg" => $_SESSION['NAME']);
}else{
$json = array("status" => 0, "msg" => "ACCESS ERROR");
}
header('Content-type: application/json');
echo json_encode($json);
}
从浏览器的导航栏调用时,如下所示:
https://test.com.mx/p_session.php?access_token=b8bc45179e0c022a0a5e7738356549a3ebf3788c
我明白了:
{"status":1,"msg":ALIAS}
但是当来自第三方的脚本时:
<?php
$ch = curl_init('https://test.com.mx/p_session?access_token=b8bc45179e0c022a0a5e7738356549a3ebf3788c');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$response = curl_exec($ch);
curl_close($ch);
print_r($response);
来自同一浏览器的电话:
{"status":1,"msg":null}
存在使这成为可能的方法吗?
答案 0 :(得分:2)
在PHP中使用会话时,会话cookie将设置为客户端浏览器,其中包含会话ID。 默认情况下,卷曲不会保留cookie,因此当您调用第二个文件时,它无法访问您的Cookie。
首先,您应该使用curl调用第一个URL,获取它返回给您的cookie,然后使用这些cookie请求第二个URL。此外,你甚至不能首先调用第一个文件,所以它甚至都没有给你一个cookie。 (即使它确实如此,你也无法在没有选项的情况下保持这种状态)
示例选项:
curl_setopt( $curl_handle, CURLOPT_COOKIESESSION, true);
curl_setopt( $curl_handle, CURLOPT_COOKIEJAR, $cookie);
curl_setopt( $curl_handle, CURLOPT_COOKIEFILE, $cookie);
您应该使用curl调用第一个网址,保留Cookie,然后拨打第二个网址。
google&#34; curl php cookie&#34;和类似的更多,但这基本上就是它。