我将网站的面板部分更改为安全的SSL位置:“https://panel.domain.com”并将其配置为在DirectAdmin上的其他用户创建的单独域。这样做是出于安全原因,并且有可能在将来将面板移动到完全不同的服务器。
出现的问题:当有人从http或https登录并转到安全login.php(https)并且在登录后返回到http时,您没有看到您已登录并且随附的选项,但您再次看到登录表单。我想通过会话cookie显示已登录的选项,例如概述和我在http上的信息。
我用饼干等尝试过很多东西,但是我无法做到。如果我在浏览器中检查cookie,我看到panel.website.com和www.website.com都有不同的会话ID。这是我正在使用的最新代码。
Login.php HTTPS页面
<?php
// regenerate session id to make session fixation more difficult
session_regenerate_id(true);
// generate random code for the authentication cookie and store it in the session
$authCode = md5(uniqid(mt_rand(), true));
$_SESSION['authentication'] = $authCode;
// create authentication cookie, and restrict it to HTTPS pages
setcookie('authentication', $authCode, 0, '/', '', true, true);
?>
<form method="post" action="https://panel.website.com/login">
<table>
<tr>
<td><input type="text" name="email" /></td>
</tr>
<tr>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td><input type="submit" name="login" value="login" /></td>
</tr>
</table>
</form>
登录后使用登录表单和链接/选项的Index.php HTTP
<?php
// check that the authentication cookie exists, and that
// it contains the same code which is stored in the session.
$pageIsSecure = (!empty($_COOKIE['authentication']))
&& ($_COOKIE['authentication'] === $_SESSION['authentication']);
if (!$pageIsSecure)
{
不显示页面,重定向到登录表单
<form method="post" action="https://panel.website.com/login">
<table>
<tr>
<td><input type="text" name="email" /></td>
</tr>
<tr>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td><input type="submit" name="login" value="login" /></td>
</tr>
</table>
</form>
登录http
后显示选项<?php }else{ ?>
<li><a href=" https://panel.website.com/overview">Overview</a></li>
<li><a href=" https://panel.website.com/my-information">My Information</a></li>
<?php } ?>