2016-05-17 14 views
0

ログインPHPが動作するようにしようとしています。何が間違っているのか分かりません。私はそれを以前に働かせていたが、それは突然すべて停止した。私もブートストラップを使用していますが、私はそれが問題を引き起こすとは思わない。 PHPとフォームの間のすべてが一致するようです。私は、ログインフォームのためのjavascriptとCSSのモーダルを使用していますが、私はそれもどちらかに影響を与えるとは思わない。カスタムphpログインフォーム:モーダルを使用して

PHP:

<?php 
session_start(); 
include_once 'dbconnect.php'; 

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

echo "Successfully Logged In!"; 

//header("Location: index.php"); 

} 

if (isset($_POST['login'])) { 

$email = mysqli_real_escape_string($con, $_POST['email']); 

$password = mysqli_real_escape_string($con, $_POST['password']); 

$result = mysqli_query($con, "SELECT * FROM users WHERE email = '" . $email . "' and password = '" . md5($password) . "'"); 
?> 
<!--<script> 
    alert("<?php echo 'Result is: '.$result; ?>"); 
</script> --> 
<?php 
$row = mysqli_fetch_array($result); 
echo $row; 

if ($row != NULL) { 

    $_SESSION['usr_id'] = $row['id']; 

    $_SESSION['usr_name'] = $row['name']; 

    // header("Location: index.php"); 

} else { 

    $errormsg = "Incorrect Email or Password!!!"; 

} 

} 

?> 

ここでは、フォームと私のログインモーダルです:

<!-- The Modal --> 
    <div id="login" class="modal"> 

<!-- Modal content --> 
    <div class='js-fade fade-in is-paused'> 
     <div class="modal-content"> 
      <span class="close" data-dismiss="modal">x</span> 
       <form role="form" action="index.php" method="post" name="loginform"> 

             <fieldset> 

              <legend>Login</legend> 



              <div class="form-group"> 

               <label for="name">Email</label> 

               <input type="text" name="email" id="email" placeholder="Your Email" required class="form-control" /> 

              </div> 



              <div class="form-group"> 

               <label for="name">Password</label> 

               <input type="password" name="password" id="password" placeholder="Your Password" required class="form-control" /> 

              </div> 


              <div class="form-group"> 

               <input type="submit" name="login" value="login" class="btn btn-info login" role="button" /> 

              </div> 

             </fieldset> 
              <div class="signupbtn"> 
               <li><a href="signup/index.php" class="noaccount btn btn-info" id="signupbtn">Don't have an account? Sign Up here.</a></li> 
              </div> 
            </form> 
     </div> 

    </div> 
</div> 

ナビゲーションバー:

<!-- Nav Bar --> 
<nav class="navbar navbar-default navbar-fixed-top navbar-left"> 
    <div class="container"> 
     <div class="navbar-header"> 
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
      </button> 
       <a class="navbar-brand brand" href="#" style="font-family: Warnes">Unleasht</a> 
     </div> 
    <div class="collapse navbar-collapse"> 
     <ul class="nav navbar-nav"> 
      <li class="navbarli"><a href="#" class="navbarli">HOME</a></li> 
      <li class="navbarli"><a href="#about" class="navbarli">ABOUT</a></li> 
      <li class="navbarli"><a href="#music" class="navbarli" data-toggle="collapse" data-target=".navbar-collapse.in">MUSIC</a></li> 
      <li class="navbarli"><a href="#contact" class="navbarli" data-toggle="collapse" data-target=".navbar-collapse.in">CONTACT</a></li> 
     </ul> 
     <ul class="nav navbar-nav navbar-right"> 

      <?php 
      function loggedIn(){ 
      if(isset($_SESSION['usr_id'])) 
      { echo '<li class="dropdown"> 
        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">'. $_SESSION['user'] .'<span class="caret"></span></a> 
        <ul class="dropdown-menu"> 
         <li><a href="#">'. $_SESSION['usr_name'] .'</a></li> 
         <li><a href="#">Account</a></li> 
         <li role="separator" class="divider"></li> 
         <li><a action="login/logout.php">Logout</a></li> 
        </ul> 
       </li>'; 
      }else{ 
       unset($_SESSION['usr_id']); 
       echo '<li><a href="#login" class="navbarli" data-toggle="modal" data-target="#login" id="loginbtn"><span class="glyphicon glyphicon-log-in navbarli"></span> Login</a></li>'; 
       } 
      } 
      loggedIn(); 
      ?> 

     </ul> 
    </div><!--/.nav-collapse --> 
    </div> 
</nav> 

私が間違って何をしているのですか?

+0

そして、はい、私はMD5が原因のパスワードを使用することは良いことではないことを知っていますセキュリティ。今のところ、私はログインを有効にしようとしています。それからmd5から別のものに切り替えます。 –

+0

あなたは本当に[MD5パスワードハッシュ](http://security.stackexchange.com/questions/19906/is-md5-considered-insecure)を使用すべきではありません。本当にPHPの[組み込み関数](http: //jayblanchard.net/proper_password_hashing_with_PHP.html)を使用してパスワードセキュリティを処理します。あなたは(http://stackoverflow.com/q/36628418/1011527)[パスワードをエスケープしていない]またはハッシュする前に、それらの他の洗浄メカニズムを使用していることを確認してください。パスワードを変更すると、パスワードが変更され、不要な追加のコーディングが発生します。 –

+0

[Little Bobby](http://bobby-tables.com/)は[あなたのスクリプトはSQLインジェクション攻撃の危険にさらされていると言います。](http://stackoverflow.com/questions/60174/how-can-i-prevent -sql-injection-in-php)[MySQLi](http://php.net/manual/en/mysqli.quickstart)の[prepared](http://en.wikipedia.org/wiki/Prepared_statement)のステートメントについて学んでください。 .prepared-statements.php)。 [文字列をエスケープする](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)でも安全ではありません! –

答えて

0

あなたは$ _SESSIONを設定することはできませんあなたが任意のヘッダを送信した後、次のコードを試してみてください[「usr_id」]:

<?php 
session_start(); 
include_once 'dbconnect.php'; 
if(isset($_SESSION['usr_id'])) { 
    echo "Successfully Logged In!"; 
}elseif (isset($_POST['login'])) { 
    $email = mysqli_real_escape_string($con, $_POST['email']); 
    $password = mysqli_real_escape_string($con, $_POST['password']); 
    $result = mysqli_query($con, "SELECT * FROM users WHERE email = '" . $email . "' and password = '" . md5($password) . "'"); 
    if (mysqli_num_rows($result)==1) { 
     $row = mysqli_fetch_array($result); 
     $_SESSION['usr_id'] = $row['id']; 
     $_SESSION['usr_name'] = $row['name']; 
     echo "OK fine"; 
    } else { 
     echo "Incorrect Email or Password!!!"; 
    } 
} 
?> 
+0

OPはなぜこれを "試して"すべきですか? ***良い答え***は、何が行われたのか、それがOPのためだけでなく、将来の訪問者のためにそうした方法で行われた理由について、常に説明します。 –

+0

さらに、いつでもSESSION変数を設定することができます。ヘッダーが送信された後はセッションを開始することはできません。 OPは言ったことを覚えておいてください* "私はそれ以前に働いていましたが、突然停止しました" –

関連する問題