PHP';s用于登录显示的IF/Else


PHP's IF/Else for a Login display

我的目标是让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['is_logged_in'] = false;

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

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

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

另一方面,如果用户没有使用header() 登录,您也可以将其重定向到登录页面

例如,如果你不想让用户看到一个名为admin.php的页面,而不是在最上面的页面上,你可以指定条件,如果它是false,你可以重定向

admin.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;
}
if (session_start()) {

应该是

session_start();
if (isset($_SESSION['user']['username'])) {