关于这个问题有几个问题,我已经尝试了那里建议的大多数解决方案,但我仍然无法解决这个问题。我正在使用支付宝支付API。成功付款后,RETURN URL上的会话数据为空。我在会话中只设置了几个字段,比如用户ID、购物车中的产品ID
下面是返回URL函数:
public function payment_success() {
echo "<pre>"; print_r($_SESSION);
exit;
}
我看到的输出:
Array
(
[__ci_last_regenerate] => 1600755715
)
请注意,在从一个函数重定向到另一个函数时,会话数据仍然存在。问题仅在于支付网关的返回URL功能,该功能也在同一控制器中
PHP版本:7.2.31代码点火器版本:3.1.11
//我的配置.php:
$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 0;
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
我按照的建议尝试过的可能性
//1
$config['sess_save_path'] = APPPATH.'ci_session/';
//2
$config['sess_expiration'] = 7200;
//3 in Session.php
// ini_set('session.name', $params['cookie_name']);
ini_set('session.id', $params['cookie_name']);
//4 tried under PHP versions 7.1 and 7.3
问题是关于"cookie SameSite属性";。它将用于Chrome版本84。感谢@04FS的提示。在.htaccess中添加以下行对我有效
Header always edit Set-Cookie (.*) "$1; SameSite=None;Secure"