PHP IF / Else用于登录显示

时间:2013-04-24 07:44:57

标签: php security if-statement login

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

2 个答案:

答案 0 :(得分: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的页面,而不是在最顶部的页面上,您可以指定条件,如果它是假的,您可以重定向

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;
}

答案 1 :(得分:4)

if (session_start()) {

应该是

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