会话开始包括

时间:2016-03-21 19:26:24

标签: php session

我对会话非常不安全。我正在建立一个用户可以登录的网站。无论您是否登录,我的所有页面都会调用header.html。所以在我的index.php上,每个人都可以看到我有以下代码:

**index.php**
<?php
    if( !isset( $_SESSION['username'])) include('resources/auth/login.php');
            else exit( header('Location: home.php') );

                if( !isset( $_SESSION ) ) session_start();

    if( isset( $_GET['todo'] ) && $_GET['todo'] == 'logout'){

        session_unset();
        session_destroy();
        //echo 'You have been logged out!';
    }
?>

<?php include 'resources/includes/header.html';?>
<!-- A lot of code -->
<?php include 'resources/includes/footer.html';?>

会话代码出现在我的标题之前,我被重定向到home.php。我应该在我的标题中包含该会话代码吗?

home.php

<?php
    if( !isset( $_SESSION ) ) session_start();
    ?>
    <?php include 'resources/includes/header.html';?>
        <!-- A lot of code -->
    <?php include 'resources/includes/footer.html';?>

所以我今天早些时候才想到,我实际上是在我的身体中包含一个会话?因为在我的header.html中,我没有任何关于会话的内容。那么我应该在header.html中进行会话吗?如果我能以最聪明的方式做到这一点?

1 个答案:

答案 0 :(得分:1)

在您尝试访问任何session_start()变量之前,必须始终运行$_SESSION

因此,最安全的编码方式是始终在脚本中的第一个<?php之后添加它。

<强>的index.php

<?php
session_start();
if( !isset( $_SESSION['username'])) include('resources/auth/login.php');

并且

<?php
    session_start();
    if( !isset( $_SESSION ) ) 

        include 'resources/includes/header.html';

        include 'resources/includes/footer.html';
?>