【发布时间】:2016-03-11 06:55:29
【问题描述】:
我有 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}
使这成为可能的现有方法?
【问题讨论】:
-
我不认为
CURL可以在当前方法中进行会话。试试print_r($_SESSION);;或者您可以尝试找出您已经设置的会话 ID 并将其与CURL一起发送。 -
curl 不会重复使用您的会话 cookie,您必须手动附加它们
-
看起来第 3 方脚本正在向第二个 PHP 文件发送请求,但会话变量正在第一个 PHP 文件中设置。因此,脚本将无法访问第一个 PHP 文件中设置的值。
-
我很好奇的是为什么它返回状态 1,因为查询字符串中的键名不正确......即您提供的 URL 拼写错误 access_token 作为 acces_token。我知道这对你的问题没有帮助,但我确实觉得它很有趣。
-
我尝试在同一个浏览器中使用我的应用程序数据进行第三次应用程序登录
标签: php session curl oauth-2.0