2017-09-12 13 views
1

私はログインとMySQLセッションに対して入力とチェックを行い、セッションを作成する検証フォームを設計しました。しかし、私がセッションを破棄しようとすると、ログアウトしても動作しません。ここに3つの関連するページがあります。 注 - signin.inc.php、signout.inc.php、nav.php、home.phpなどはすべて「インクルード」フォルダ内にあります。 index.phpだけが外にあります。セッションを終了できず、PHPでログアウトできません

のindex.php - >

<?php session_start(); ?> 
<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>DigiVault</title> 
    <link rel="stylesheet" type="text/css" href="css/font-awesome.min.css"> 
    <link rel="stylesheet" type="text/css" href="css/clean.css"> 
    <link rel="stylesheet" type="text/css" href="css/home.css"> 
    <link rel="stylesheet" type="text/css" href="css/index.css"> 
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.css" /> 
    </head> 
    <body> 
    <header> 
     <div class="main-brand"> 
     <?php 
      if(isset($_SESSION['u_id'])){ 
      echo " 
      <label for='menuToggle' class='menu-icon'>&#9776;</label> 
      "; 
      } 
     ?> 
     <h2>&nbsp;DigiV<span style="color:#ccc"><i class="fa fa-lock" aria-hidden="true"></i></span>ult</h2> 
     </div> 
    </header> 
     <?php 
      if(!isset($_SESSION['u_id'])){ 
      echo " 
       <nav id='index-nav'> 
       <ul> 
       <li id='about-us'>About Us</li> 
       <li id='get-started'>Get Started</li> 
       </ul> 
      </nav> 
      "; 
      }else { 
      include_once 'include/nav.php'; 
      } 
     ?> 
    <div class="main-wrapper"> 
     <?php 
     if(!isset($_SESSION['u_id'])){ 
      include_once 'include/home.php'; 
     } else{ 
      include_once 'include/user.php'; 
     } 
     ?> 
    </div> 
    </body> 
</html> 

Home.php - >

<div class="signin-container"> 
    <p class="form-header" style="color:white">Login</p> 
    <form id="signin-form" action="include/signin.inc.php" method="POST"> 
     <input type="text" name="uid" placeholder="Username/Email"> 
     <input type="password" name="pwd" placeholder="Password"> 
     <button type="submit" class="form-button" name="submit-signin">Sign In!</button> 
     <span id="to-register" style="padding-top:1.13em">Are you new?</span> 
    </form> 
    </div> 

Nav.php - >

<nav class="user-nav animated bounceInLeft"> 
    <ul> 
     <li><a href="#">HOME</a></li> 
     <li><a href="#">ABOUT</a></li> 
     <li><a href="#">FORM</a></li> 
     <li><a href="#">GALLERY</a></li> 
     <li><a href="#">BLOG</a></li> 
     <li> 
      <?php 
       if(isset($_SESSION['u_id'])){ 
       echo " 
        <form action='signout.inc.php' method='post'> 
        <button type='button' name='submit-signout'>Logout</button> 
        </form> 
       "; 
       } 
      ?> 
     </li> 
    </ul> 
</nav> 

signin.inc.php - >

<?php 

session_start(); 

if(isset($_POST['submit-signin'])){ 

    include_once 'dbh.inc.php'; 

    $uid= mysqli_real_escape_string($conn,$_POST['uid']); 
    $pwd= mysqli_real_escape_string($conn,$_POST['pwd']); 

    if(empty($uid) || empty($pwd)){ 
    header("Location: ../index.php?signin=error"); 
    exit(); 

    }else { 
    $sql= "SELECT * FROM users where user_uid='$uid' OR user_email='$uid'"; 
    $result = mysqli_query($conn,$sql); 
    $resultcheck = mysqli_num_rows($result); 

    if($resultcheck < 1){ 
     header("Location: ../index.php?signin=error"); 
     exit(); 
    } else { 

     if($row = mysqli_fetch_assoc($result)){ 
     $hashedPwdCheck = password_verify($pwd, $row['user_pwd']); 
     if($hashedPwdCheck == false){ 
      header("Location: ../index.php?signin=error"); 
      exit(); 
     } 
     elseif($hashedPwdCheck == true) { 
      $_SESSION['u_id'] = $row['user_id']; 
      $_SESSION['u_first'] = $row['user_first']; 
      $_SESSION['u_last'] = $row['user_last']; 
      $_SESSION['u_email'] = $row['user_email']; 
      $_SESSION['u_uid'] = $row['user_uid']; 
      header("Location: ../index.php"); 
      exit(); 
     } 
     } 
    } 
    } 
}else { 
    header("Location: ../index.php?signin=error"); 
    exit(); 
} 

signout.inc.php - >

<?php 

if(isset($_POST['submit-signout'])){ 

    session_start(); 
    session_unset(); 
    session_destroy(); 
    header("Location: ../index.php"); 
    exit(); 
} 

注 - 問題は完全に作品にサインアウトし、検証および署名であるが、バグがどこかにあります場合、私は念のためにそれらを置きます。 <button type='submit' name='submit-signout'>Logout</button>すべき

+0

'解除($ _ SESSION [ '何か']);'は – mwweb

+0

うーんボタンタイプ= "ボタン" がsumbitを送りますか? – MacBooc

+0

「うまくいかない」とはどういう意味ですか? '$ _SESSION ['u_id'] = null' /' unset($ _ SESSION ['u_id']) 'などを試しましたか? –

答えて

0

<button type='button' name='submit-signout'>Logout</button>必要性、それ以外の場合は提出しないであろう形

関連する問題