2016-06-16 2 views
0

私のWebサイトにユーザーログインシステムを実装しようとしています。次のように私はすでに登録ログイン機能を作ってきたし、今私はそれがこれだけ特定のページにアクセスできるユーザーでログインするためにセッションを使用しようとしています、私のログインページのコードは次のとおりです。私がしようとしたPHPページへのユーザーアクセスを認証するセッション

<? session_start(); ?> 

<div align="left"> 
    <a href='register.php'>REGISTER&nbsp; <i class="fa fa- user-plus" aria-hidden="true"></i></a> 
    <? 
     include('HtmlNavSetupnohome.php'); 
     include('sqlDeets.php') 
    ?> 

    <link href="css/hawthorne_type1_color1.css" rel="stylesheet"> 
    <link href="css/font-awesome.min.css" rel="stylesheet"> 

    <form action="" method="POST"> 
     <h3>USERNAME:</h3><input id="username" type="text" name="username"/> 
     <h3>PASSWORD:</h3><input id="password" type="password" name="password"/><br> 
     <input class="login" type="submit" name="submit" value="Login" /> 
    </form> 

    <? 
     include('connect.php'); 
     if (isset($_POST['username']) and isset($_POST['password'])) { 
      $username = $_POST['username']; 
      $password = $_POST['password']; 
      $query = "SELECT * FROM user WHERE username='$username' and  password='$password'"; 
      $result = mysql_query($query) or die(mysql_error()); 
      $count = mysql_num_rows($result); 

      if (isset($_POST['submit'])) { 
       if ($count == 1) { 
        $_SESSION['username'] = $username; 
       } else { 
      ?> 

      <br>INVALID LOGIN DETAILS<br> 
      <? 
       session_destroy(); 
       $_SESSION['username'] = null; 
       } 
      } 

      if (isset($_SESSION['username'])) { 
      ?> 
      <script type="text/javascript">location.href = 'http://www.bradleyboothman.co/homepage.php';</script> 
      <? 
       $_SESSION['username'] = $username; 
      } else { 

      } 
     } 

私が間違ってやっている

<?php 
    session_start(); 

    if (!isset($_SESSION['username'])) { 
     // use is not logged in 
    } else { 
     // user is logged in 
    } 

任意のアイデア:私は保護したいが、運がなかった各ページに、次のでしょうか?どんな助けもありがたい。

+0

あなたはすべてのエラーメッセージを取得しているお試しください!実際にログインしていることを確認しましたか? – Epodax

+0

あなたは '<? session_start();他のページの先頭に?> –

+0

'$ count> 0'を置くことをお勧めします。なぜ、あなたはusernameセッションを2回設定しますか? – MuthaFury

答えて

0

結果セット内の行数をカウントするためにMySQL APIを使用することは、一般的なアプローチであると思われますが、無限の質問のソースもここにあります。私はフェッチあなたが実際ににしようとした行と示唆:

行が見つかった場合
  1. 、ユーザーが

  2. それ以外の場合は有効ですが、それはまた、つかむことができます

ではありません実際には、最後のログインで入力したのではなく、DBに格納されているようにユーザー名を表示する必要があります。

あなたのコードはいくつか改善されているかもしれませんが、私は特に有用だと考えているアドバイスを提供します:現在の学習教材(オンラインチュートリアル、本など)を削除してください。最初の場所は、より良いものを見つける。少なくともPDOを使用するもの、準備された文およびpassword_verify()。人生はあなたが必要としないことを学ぶには短すぎます。

+0

よろしくお願いします。 – mrdarb

-1

は、私はあなたがループならば、あなたは、単に達成するために使用することができますが、ページを更新すると毎回SESSIONの有無を確認したい場合はあなたがあなたのスクリプト

+0

これはコメントではありません – MuthaFury

0

の終わりに、あなたのセッションを時間を計るdestroyがあるため、それは仕事をdosentと思いますそれ。

<?php 
ob_start(); // to make the below header work 

if($_SESSION[username]=="") 
{ 
    header('Location: index.php'); // Redirect to homepage or Login page 
} 
else 
{ 
    //Do nothing 
} 

?> 

その他のオプションは、ユーザーがログイン時に$ _SESSION [ID]と呼ばれる新しいセッション変数を設定し

ある。

ユーザーがログアウトしたときにそのセッションを削除します。

if条件を使用して、IDのSESSIONが空であるかどうかを確認します。

if($_SESSION[id]=="") 
{ 
    header('Location: index.php'); 
} 
0

この

if (isset($_POST['username']) && isset($_POST['password'])) { 
    $username = $_POST['username']; 
    $password = $_POST['password']; 

    /* 
    $query = "SELECT * FROM user WHERE username='$username' and password='$password'"; 
    $result = mysql_query($query) or die(mysql_error()); 
    $count = mysql_num_rows($result); 
    */ 

    // Let's assume it is 1 (Erase this comment once you test this) 
    $count = 1; 

    if (isset($_POST['submit'])) { 
     if ($count > 0) { 
      $_SESSION['username'] = $username; 
      } 
      else { 
      echo "<br />INVALID LOGIN DETAILS<br />"; 
      session_destroy(); 
      $_SESSION['username'] = null; 
      } 
     } 

    if (isset($_SESSION['username'])) { 

    echo "<script type='text/javascript'>location.href = 'http://www.bradleyboothman.co/homepage.php';</script>"; 

    } 
     else { 

     } 
    } 
関連する問題