首页 > 解决方案 > PHP 登录/注销问题

问题描述

我一直在学习一些 PHP 以进入 Wordpress 开发,我正在尝试构建一个登录/注销系统,但是有一些问题,

所以我有index.php

    <?php
ini_set("session.save_path", "/home/system/sessionData");
    session_start();
   
        
include('functions.php')  
 ?> 


         <?php  if (isset($_SESSION['logged-in']) && $_SESSION['logged-in']) : ?>
   <p>   please login</p>
       
      
            <form method="post" action="login.php">
                        Username <input type="text" name="username">
                        Password <input type="password" name="password">
                <input type="submit" value="Logon">
                </form>
               
                <?php endif; ?>
            
        </div>


       
        <?php if(isset($_SESSION['logged-in']) && $_SESSION['logged-in'] == true) : ?>
           just logged in content
           <a href="logout.php" class="logout-link">Logout</a> 
           <?php endif; ?>
          
       

然后我得到了 login.php,它基本上只是从数据库中获取数据并验证它,一切正常,但是当我注销并将用户重定向回 index.php 时,我看不到任何 div index.php 只是一个空白的白页。

我的注销.php

ini_set("session.save_path", "/home/system/sessionData");   
session_start();

$_SESSION = array();
unset($_SESSION['username']);
unset($_SESSION['logged-in']);
session_destroy();
header('Location:index.php');
die;

如果我在 index.php 的顶部添加以下“ $_SESSION['logged-in'] = ''; ”,我可以看到内容但会话没有明显保存,我相信整个问题与此有关吗?我已经在我的 login.php 中定义了这个会话,我应该在 index.php 中再次定义它吗?

标签: php

解决方案


index.php 中的条件语句有问题

显示登录表单的第一个条件是

<?php  if (isset($_SESSION['logged-in']) && $_SESSION['logged-in']) : ?>

意思是如果$_SESSION['logged-in']设置并$_SESSION['logged-in']设置为布尔值true将显示登录来源。

根据您的问题解释,您必须使用正确的条件

<?php  if (!isset($_SESSION['logged-in'])) : ?>

这意味着如果$_SESSION['logged-in']未设置将显示登录表单。


推荐阅读