2

私の目標は、その人のアカウント設定にリンクする "Welcome, %USERNAME%" を IF が表示するかのようにすることです。問題は、私が見ているように、ログインしていない場合は表示されないことです。代わりに「ログインしてください」リンクにしたいと思います。

<?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、条件を指定できます。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;
}
于 2013-04-24T07:47:12.287 に答える
4
if (session_start()) {

する必要があります

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