You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

API调用中PHP Session/Cookie获取异常问题求助

问题原因

当你在同域另一页面设置$_SESSION["gv_cust_cid4"]时,这个Session数据是和客户端(浏览器/Postman)的PHPSESSID Cookie绑定的:

  • 最初test-cookie2.php能输出值,是因为它在同一个请求周期内自己设置并读取了Session,和外部Session无关。
  • 而Postman或test-cookie3.php的CURL请求是独立的全新请求,默认不会携带之前设置Session时的PHPSESSID Cookie,服务器会为这个新请求创建全新的Session,自然读不到已设置的值。
解决方案

1. 让CURL请求携带目标Session的Cookie

修改test-cookie3.php的CURL配置,添加CURLOPT_COOKIE参数,传入对应Session的PHPSESSID值:

<?php
$url = 'https://example.com/test-cookie2.php';
$curl = curl_init();
// 替换为你实际获取到的PHPSESSID(可从设置Session的页面的响应Cookie中拿到)
$sessionCookie = 'PHPSESSID=abcdef1234567890';
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
curl_setopt($curl, CURLOPT_COOKIE, $sessionCookie); // 携带Session Cookie
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true );
$data = curl_exec($curl);
curl_close($curl);

print_r($data);
?>

2. Postman调用的正确流程

  • 先在Postman中访问设置Session的页面,此时Postman会自动保存服务器返回的PHPSESSID Cookie;
  • 再调用test-cookie2.php,Postman会自动携带该Cookie,就能读到已设置的Session值;
  • 若仍无法读取,检查Postman设置:确保开启了「Automatically send cookies」选项。

3. 同域脚本直接复用Session(更高效)

如果test-cookie3.php和设置Session的页面在同一服务器、同PHP环境下,完全不需要用CURL,直接在test-cookie3.php中启动Session读取即可:

<?php
session_start();
echo '<br>Sessie: '.$_SESSION["gv_cust_cid4"];
?>

内容的提问来源于stack exchange,提问作者TP Projects

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 08:34:59