我正在使用WAMP构建一个Web应用程序。我需要使用.htaccess文件,所以我只是在记事本中创建了一个文件并将其保存为.htaccess。从那时起,一些登录会话变量不再传递给其他PHP页面。我决定完全删除.htaccess文件,但它没有回滚。
当前状态是在我通过登录过程启动会话后,我无法在其他PHP文件中使用会话数组。有些不对劲。有什么想法吗?
每次登录尝试后:
<?php
session_start();
require 'core/database/connect.php';
require 'core/functions/clients.php';
$errors = array();
?>
调用会话变量:
<div class="nav_wrapper">
<div class="container navbar_container ">
<ul class="navbar">
<li><a href="Home.html">Home</a></li>
<li><a href="AboutUs.html">About</a></li>
<li><a href="products.html">Products</a></li>
<li><a href="events.html">Events</a></li>
</ul>
<?php
if (isset($_SESSION['email'])) {
include 'includes/loggedin.php';
echo $_SESSION['email'];
} else {
include 'includes/notloggedin.php';
echo $_SESSION['email'];
}
?>
</div>
</div>
答案 0 :(得分:1)
基于your comment,您的问题不在.htaccess中。您的问题是您没有正确启动和恢复会话。
您需要在每个请求上拨打session_start()
一次 - 而且只需一次 - 而不仅仅是在登录期间。来自the manual:
session_start()根据通过GET或POST请求传递的会话标识符创建会话或恢复当前的,或通过cookie传递。
为避免多次调用,您通常会安排应用程序,以便拥有一个“前端控制器” - 一个页面,通常是index.php,它处理所有请求或至少包含在每个请求中。您可以将session_start()
放在该文件中,只放在该文件中,这样可以确保调用一次,但可以防止在请求期间多次调用它。