2017-12-14 72 views
1

これはclass.user.phpのlogin()関数とis_logged_in()関数です。 私はlogin()関数で行ったセッションを返すためにis_logged_in()を使用します。ユーザがログインしている場合、ログインボタンをログアウトに変更したい。

public function login($email,$upass) // 
{ 
    try 
    { 
     $stmt = $this->conn->prepare("SELECT * FROM pelanggan WHERE email_pel=:email_id"); 
     $stmt->execute(array(":email_id"=>$email)); 
     $userRow=$stmt->fetch(PDO::FETCH_ASSOC); 

     if($stmt->rowCount() == 1) 
     { 
      if($userRow['status_pel']=="Y") 
      { 

       if($userRow['pass_pel']==md5($upass)) 
       { 

        $_SESSION['userSession'] = $userRow['id_pel']; 
        return true; 


       } 
       else 
       { 
        header("Location: login.php?error"); 
        exit; 
       } 
      } 
      else 
      { 
       header("Location: login.php?inactive"); 
       exit; 
      } 
     } 
     else 
     { 
      header("Location: login.php?error"); 
      exit; 
     }  
    } 
    catch(PDOException $ex) 
    { 
     echo $ex->getMessage(); 
    } 
} 


public function is_logged_in() 
{ 
    if(isset($_SESSION['userSession'])) 
    { 
     return true; 
    } 


} 
login.php

<?php 
session_start(); 
require_once 'class.user.php'; 
$user_login = new USER(); 

if($user_login->is_logged_in()!="") 
{ 
    $user_login->redirect('index.php?modul=login'); 
} 

if(isset($_POST['btn-signin'])) 
{ 
    $email = trim($_POST['email_log']); 
    $upass = trim($_POST['password_log']); 

    if($user_login->login($email,$upass)) 
    { 
     $user_login->redirect('index.php?modul=login'); 
    } 
} 
?> 

そして、私はこのようなボタンを変更するis_logged_in()関数を使用しますが、それはうまくいきませんでした。私は他の条件を使いましたが、それでもうまくいきませんでした。両方のボタンは表示されず、そのうちの1つだけが表示されました。

<div class="btnmasuk span1"> 
        <?php 
        require_once 'class.user.php'; 
        $user_login = new USER(); 

        if(!$user_login->is_logged_in()){ // I use false condition 
         echo '<a href="logout.php"><button class="btn btn-danger">Keluar</button></a>'; 
        }else{ 

         echo '<a href="login.php"><button class="btn btn-primary">Masuk</button></a>'; 
        } 



        ?> 


       </div> 

どうすればこの問題を解決できますか?私の壊れた英語のために申し訳ありません。ユーザがログインしている場合

+0

ログイン時に 'SESSION'を作成する必要があります。このセッションが設定されていない場合は、ユーザが 'SESSION ['logged_in'] == true'(例えば)の場合にログインボタンが表示されます。 'if else'を使うだけです。あなたは私に知らせるだけの例が必要な場合。 –

+0

私は例が必要です、あなたは私のコードに基づいて例を与えることができますか?申し訳ありませんが、私はまだ自分のコードに実装することを理解しています。 – VTaehyung

+0

私はあなたのための例を書いた。私に知らせてください –

答えて

0

ログイン:

public function getLogin($user, $pass) 
{ 
    // Your query goes here to get Login info based on given $user and $pass. 
    $_SESSION['user_logged_in'] = true; 
} 

コード内のボタンを表示:

<?php if($_SESSION['user_logged_in']): ?> 
    <!-- show HTML logout button --> 
<?php else: ?> 
    <!-- show HTML login button --> 
<?php endif; ?> 

私はあなたが何を意味するかについて考えてください。上記の記述に基づいてコードを最適化する必要があります。

私に教えてください!

0

あなたがチェックif文を作ることができます。u_naamは、ユーザー値でログインすることができ

<?php 
        if (isset($_SESSION['u_naam'])) { 
         echo '<form action="includes/logout.inc.php" method="POST"> 
          <button type="submit" name="submit">Logout</button> 
         </form>'; 
        } else { 
         echo '<form action="includes/login.inc.php" method="POST"> 
          <input type="text" name="uid" placeholder="Username"> 
          <input type="password" name="pwd" placeholder="password"> 
          <button type="submit" name="submit">Login</button> 
         </form> 
         '; 
        } 
?> 
+0

列データベースから "u_naam"ですか? – VTaehyung

+0

この場合、u_naamは、この特定の例では*が*で始まる値です。あなたはセッションとif else文で呼び出すことができるセッションで作業することができます – Tomm

関連する問題