2016-03-29 6 views
-6

動作しません。動作し、エラーは発生しません。PHPのログインは、私がログインシステムに取り組んでいると私はしたい、場合、ユーザは、ログインページに彼を戻すために、間違ったユーザー名&パスワードを入力し、そのOKリダイレクトが、それはありませんはindex.php/adminにあれば

機能コードとHTMLコード

if(isset($_POST['submit_form'])){ 
     $username = mysqli_real_escape_string($_POST['username']); 
     $password = mysqli_real_escape_string($_POST['password']); 
     $query = mysqli_query("SELECT * FROM users WHERE username = '$username' AND password ='{$password'"); 
     if($query==false){ 
      set_message(" Your password or username are wrong "); 
      redirect("login.php"); 
     }else{ 
      redirect("admin"); 
     } 
    } 

HTMLコード

<form class="form-inline" role="form" action="" method="post" enctype="multipart/form-data"> 
    <div class="form-group">   
     <label class="form-group" for="username">username</label> 
     <input type="text" name="username" class="form-control" id="username" placeholder="username"> 
    </div> 
    <div class="form-group"> 
     <label class="sr-only" for="password">Password</label> 
     <input type="password" name="password" class="form-control" id="password" placeholder="password"> 
    </div> 
    <button type="submit" name="submit_form" class="btn btn-black"> 
    <input type="hidden" name="submit_form" value="<?php echo session_id()"/> 
     Login 
    </button> 
</form> 

機能

function redirect($location) { 
    header("Location : $location"); 
} 

function query($sql){ 
    global $connection ; 
    return mysqli_query($connection, $sql); 
} 

function confirm($result){ 
    global $connection; 
    if(!$result){ 
     die("QUERY FAILED " . mysqli_error($connection)); 
    } 
} 

function escape_string($string){ 
    global $connection ; 
    return mysqli_real_escape_string($connection, $string); 
} 
+0

ではなく、関数内で直接グローバル変数を使用し、パラメータとして使用しないでください。 –

+3

"*動作していないし、エラーもない*" - 動作していない* how *?何が起こり、何が起こらないのですか?私たちが知っているのはあなたが私たちに示しているコードなので、私たちはこれを知らないが、ここではそれほど進んでいない。 (http://php.net/manual/en/function.error-reporting.php);あなたは[ ''のerror_reporting(E_ALL)]を有効にしましたか?あなたもあなたの関数のコード(例えば 'クエリ()'、 '確認()'、 'リダイレクト()'など)、またはどのようにこの機能を使用するを示していません。ユーザー名とパスワードが正しい場合 – Qirel

+0

それが管理/ index.phpに私をリダイレクトする必要があります。私は質問 – medboy94

答えて

0

はい、申し訳ありませんが私はちょうどこの事に慣れています。間違いを指摘してくれてありがとう。

//this will eliminate the BOT hitting up the forms 
    if(isset($_POST['submit_form']) && $_POST['submit_form']==session_id()){ 
    $username = mysql_real_escape_string($_POST['username']); 
    $password = mysql_real_escape_string($_POST['password']); 
    $query = mysqli_query("SELECT * FROM users WHERE username = '$username' AND password ='$password'"); 
    if($query==false){ 
     set_message(" Your password or username are wrong "); 
     redirect("login.php"); 
    }else{ 
     redirect("admin"); 
    } 
} 

また、フォームも更新しました。

<form class="form-inline" role="form" action="" method="post" enctype="multipart/form-data"> 
<div class="form-group">   
    <label class="form-group" for="username">username</label> 
    <input type="text" name="username" class="form-control" id="username" placeholder="username"> 
</div> 
<div class="form-group"> 
    <label class="sr-only" for="password">Password</label> 
    <input type="password" name="password" class="form-control" id="password" placeholder="password"> 
</div> 
<button type="submit" name="submit_form" class="btn btn-black"> 

    Login 
</button> <input type="hidden" name="submit_form" value="<?php echo session_id()"/> 

クエリを解析するとき、私はsprintfのを使用します。これは、SQLインジェクションを排除します。あなたは次のようなことができます:

これはうまくいけばうまくいきます。

関連する問題

 関連する問題