Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在HTTP和HTTPS之间传递会话变量_Php_Session_Ssl_Login_Https - Fatal编程技术网

Php 在HTTP和HTTPS之间传递会话变量

Php 在HTTP和HTTPS之间传递会话变量,php,session,ssl,login,https,Php,Session,Ssl,Login,Https,某些主机提供商(如HostGator)为帐户提供共享SSL证书。这意味着我的HTTPS链接与我的HTTP是不同的域 ie:URL类似于和 我正在尝试将用户登录到安全域,设置会话变量,然后重定向到主页。但是,执行此操作时,会话变量将丢失 unsecure Index.php: <?php session_start(); echo $_SESSION['name']; ?> <html><body> <p><a href="https://s

某些主机提供商(如HostGator)为帐户提供共享SSL证书。这意味着我的HTTPS链接与我的HTTP是不同的域

ie:URL类似于和

我正在尝试将用户登录到安全域,设置会话变量,然后重定向到主页。但是,执行此操作时,会话变量将丢失

unsecure Index.php:

<?php session_start(); 
echo $_SESSION['name'];
?>
<html><body>
<p><a href="https://secure123.hostgator.com/~bill/login.php">Login</a></p>
</body></html>
<?php session_start(); 
$_SESSION['name'] = "Bill";
header("location: http://www.mydomain.com/index.php")
?>

Secure Login.php:

<?php session_start(); 
echo $_SESSION['name'];
?>
<html><body>
<p><a href="https://secure123.hostgator.com/~bill/login.php">Login</a></p>
</body></html>
<?php session_start(); 
$_SESSION['name'] = "Bill";
header("location: http://www.mydomain.com/index.php")
?>


如何确保http和https上的所有文件都能读取会话变量?

您可以通过GET提供会话id

header("location: http://www.mydomain.com/index.php?PHPSESSID=".session_id());
在另一边你可以打开

或使用函数设置会话id


Guy的可能副本已经很好地解释了如何管理HTTP和HTTPS之间的会话。通过在混乱的URL中获取结果来提供id,这是我试图避免的——用于SEO和书签等。还有其他方法吗?比如使用POST或其他什么?如果你通过我提供的链接,你可以了解不同的解决方案。。。您可以使用cookies、post、实现缓存层。。。检查所有答案并实现符合您需求的最佳答案:)通过在我试图避开的混乱URL中获取结果提供id-用于SEO和书签等。还有其他方法吗?比如使用POST或其他什么?你确定搜索引擎会尝试登录吗?另外,你也可以使用POST。登录后,向用户显示从https到http的自动提交(onload->submit)表单。