php中http与https跨域共享session的解决方法
遇到了HTTP、HTTPS协议下session共享解决cookie失效的问题,这里提供一个临时解决办法。
实现原理:把sessionid设置到本地的cookie。
如下:
$currentSessionID=session_id(); session_id($currentSessionID);
以下是实现代码,分为http与https两部分。
1,http部分:
<?php session_start(); $currentSessionID=session_id(); $_SESSION['testvariable']='Sessionworked'; $secureServerDomain='www.nhooo.com'; $securePagePath='/safePages/securePage.php' echo'<ahref="https://'.$secureServerDomain.$securePagePath.'?session="'.$currentSessionID.'">点这里跳转到HTTPS协议</a>'; ?>
2,HTTPS部分
<?php $currentSessionID=$_GET['session']; session_id($currentSessionID); session_start(); if(!emptyempty($_SESSION['testvariable'])){ echo$_SESSION['testvariable']; }else{ echo'Sessiondidnotwork.'; } ?>
说明:
有点安全问题,sessionid的传输是没加密的,可以嗅探侦测到,获取这个sessionid进而获取session数据。
建议加密此id。