2

我的目标是让 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 不正确……我做错了什么或忘记了……?

4

2 回答 2

5

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

$_SESSION['is_logged_in'] = false;

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

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

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

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

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

管理员.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;
}
于 2013-04-24T07:47:12.287 回答
4
if (session_start()) {

应该

session_start();
if (isset($_SESSION['user']['username'])) {
于 2013-04-24T07:46:38.393 回答