php - 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 中再次定义它吗?
解决方案
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']
未设置将显示登录表单。
推荐阅读
- nativescript - NativeScript 在页面标签上添加 xml 命名空间
- javascript - 打字稿:按值检查对象是否存在于数组中
- java - HashMap 在内部检查两个键是否相等,使用的是哪种算法?
- javascript - 我需要在角度翻译中翻译一个动态变量
- xml - XML - XSLT 按计数分组元素
- node.js - TypeError: Request path contains unescaped characters at googleapis
- javascript - How can I get PurifyCSSPlugin to remove my unused css in Angular6?
- android - 如何通过公交获得覆盖距离
- sql - Oracle Regexp_substr 字符串
- php - ReactPHP get_class() 期望参数 1 是对象,给定字符串