用于登录显示的 PHP 的 IF/Else

标签 php security if-statement authentication

<分区>

我的目标是让 IF 状态显示“欢迎,%USERNAME%”,它链接到那个人的帐户设置。如我所见,问题是如果他们未登录则不会显示它。我希望它是“请登录”链接。

<?php 

 require("common.php"); 

 if (session_start()) {
     echo '<p class="right"><a href="/account"><?php echo htmlentities($_SESSION['user']['username'], ENT_QUOTES, 'UTF-8'); ?></a>!</p>';
     }
 else {
      echo '<p class="right"><a href="">Please Login</a></p>';
      }

我的问题是 IF/Else 不正确...我做错了什么或忘记了什么...?

最佳答案

你的方法是错误的,你需要在页面的最顶部有 session_start(),而不是像这样使用 session 变量

$_SESSION['is_logged_in'] = false;

现在,当用户登录时将值更改为 true 并在用户注销时再次更改为 false

所以现在你可以设置一个条件

if($_SESSION['is_logged_in'] == true) {
   echo 'Welcome';
} else {
   echo 'Please login';
}

另一方面,如果用户未使用 header()

登录,您也可以将用户重定向到登录页面

因此,例如,如果您不希望用户看到名为 admin.php 的页面,那么您可以在该页面的最顶部指定条件,如果它为 false,则可以重定向

管理员.php

session_start();
if($_SESSION['is_logged_in'] == false) {
    header('Location: login.php'); 
    /* You can replace login.php to whatever page you want your 
       user to be redirected */
    exit;
}

关于用于登录显示的 PHP 的 IF/Else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16186301/

相关文章:

C 编程语言 :if statements are not working correctly with characters

PHP - 无法从数据库检索数据

php - 如何在查询中使用保留关键字

java - 如何安全地运行不受信任的 Java 应用程序?

支持多个解密 key 的Python加密方案

PHP + SQL - 选择存在时的情况 (...) - 如果 0 插入行

android - 代码未到达 if 语句

php - 检查数组中的所有值是否存在于表中

php - 让我们在 LNMP Ubuntu 16.04 上使用 Nginx 为 Laravel 应用程序加密

c# - Restsharp oAuth 2 腿身份验证错误 : Invalid signature for signature method HMAC-SHA1