php中http与https跨域共享session的解决方法

yipeiwu_com5年前PHP代码库

遇到了HTTP、HTTPS协议下session共享解决cookie失效的问题,这里提供一个临时解决办法。
实现原理:把session id设置到本地的cookie。

如下:

复制代码 代码如下:

$currentSessionID = session_id();
session_id($currentSessionID );

以下是实现代码,分为http与https两部分。

1,http部分:

复制代码 代码如下:

<?php
session_start(); 
$currentSessionID = session_id(); 
$_SESSION['testvariable'] = 'Session worked'; 
$secureServerDomain = 'www.jb51.net'; 
$securePagePath = '/safePages/securePage.php' 
echo '<a href="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 'Session did not work.';
}
?>

说明:
有点安全问题,session id的传输是没加密的,可以嗅探侦测到,获取这个session id进而获取session数据。
建议加密此id。

相关文章

PHP数组实例总结与说明

如果您有很大的一个数组,而所要完成的仅是找出一个存在的给定值,您可以使用in_array()以返回true或false。如下代码将输出“Not found in this array”,...

php PDO中文乱码解决办法

// 方法一: PDO::__construct($dsn, $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NA...

PHP安全技术之 实现php基本安全

1.不要依赖注册全局变量功能(register_globals) 注册全局变量的出现曾经让PHP变得非常易用,但也降低了安全性(方便之处经常会破坏安全性)。建议在编程时把register...

PHP5.2下preg_replace函数的问题

preg_replace 使用的超过了php5.2默认允许的字节,也就是pcre.backtrack_limit和pcre.recursion_limit的大小的问题。 Discuz!6...

php对关联数组循环遍历的实现方法

本文实例讲述了php对关联数组循环遍历的实现方法。分享给大家供大家参考。具体分析如下: php对于类似 $age = array("zhangshan"=>14,"lisi"...