2017-09-14 8 views
0

私はPHPのコードに問題があるので、それは私を狂ってしまいます。 事は、私はログインページを作っています、そして、私はindex.php、login.phpとdashboard.phpを持っています。 ログインフォームはindex.phpにあり、login.phpでユーザがデータベースに入っているかどうかをチェックし、ユーザをdashboard.phpにリダイレクトするが、正しいユーザを入力してパスすると、代わりにindex.phpにリダイレクトされるdashboard.php ??セッションの不正使用ですか?

login.php

<?php 
session_start(); 
include($_SERVER['DOCUMENT_ROOT'] . "/new_cms/includes/db.php"); 

$username = $_POST['username']; 
$password = $_POST['password']; 
$btn = $_POST['submit']; 

if(isset($btn)){ 
    if(empty($username) || empty($password)){ 
     echo "You must fill all fields"; 
    }else{ 
     $sql = "SELECT * FROM admins WHERE username = '$username' AND password = '$password'"; 
     $query = mysqli_query($dbconn, $sql); 
     $rows = mysqli_num_rows($query); 

     if($rows > 0){ 
      $_SESSION['usr'] = $rows['password']; 
      header("Location: dashboard.php"); 
     }else{ 
      echo "Invalid login"; 
     } 
    } 
} 
?> 

dashboad.php

<?php 
session_start(); 
include($_SERVER["DOCUMENT_ROOT"] . "/new_cms/includes/db.php"); 
include($_SERVER["DOCUMENT_ROOT"] . "/new_cms/admin/login.php"); 

if(!isset($_SESSION['usr'])){ 
    header("Location: index.php"); 
}else{ 
    echo "Welcome"; 
} 
?> 

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

+0

($ _、SERVER [ "DOCUMENT_ROOT"] "/new_cms/admin/login.php"。)が含ま 'ダッシュボードから'この行をlogin.php'を削除; ' – C2486

+0

あなたは、少なくともいくつかのデバッグを行うようにしてくださいあなた自身。 '$ rows'にあなたが期待する情報が含まれていることを確認しましたか? dashboard.phpでは、 '$ _SESSION'の内容は何ですか? – OptimusCrime

答えて

1

$ rowsはmysqli_num_rowsを使用しているため、配列ではなく数値です。まだ$行['パスワード']を取得しようとします。

代わりに、結果の最初の行をフェッチし、これを使用してセッション変数に割り当てます。

if(isset($btn)){ 
    if(empty($username) || empty($password)){ 
     echo "You must fill all fields"; 
    }else{ 
     $sql = "SELECT * FROM admins WHERE username = '$username' AND password = '$password'"; 
     $query = mysqli_query($dbconn, $sql); 
     $rows = mysqli_num_rows($query); 

     if($rows > 0){ 
      $user = mysqli_fetch_assoc($query); 
      $_SESSION['usr'] = $user['password']; 
      header("Location: dashboard.php"); 
     }else{ 
      echo "Invalid login"; 
     } 
    } 
} 
+0

ありがとう、本当に私を助けてくれました。 –

+0

安全性の理由からパスワードをセッション変数に入れないことを検討したいと思うかもしれません。代わりに、そこにユーザー名を入力してください。 – Cashbee

+0

チップマンのおかげで、本当にありがとう、確かに私はそれを今からやる –

関連する問題