2016-11-09 22 views
0

複数のユーザーでログインを作成しました。私はphpMyAdminデータベースに接続しており、シングルユーザログインが適切に動作しています。 login.phpコードでは、意図したページにリダイレクトされません.dbconnect.phpは動作しています。phpログイン後複数のユーザーを複数のページにリダイレクト

login.php

<?php 

require('dbconnect.php'); 

if(isset($_POST['uname']) && isset($_POST['pw'])){ 

    $email=$_POST['uname']; 
    $pw=$_POST['pw']; 

if ($stmt = mysql_query("SELECT role FROM register WHERE 'email'= ? and 'pw'= ? ")) { 
    /* bind parameters for username and password */ 
    $stmt->bind_param('ss', $email, $pw); 


    /* execute query */ 
    $stmt->execute(); 

    // If result matched $myusername and $mypassword, table row must be 1 row 
    if ($stmt->affected_rows == 1) { 
     // bind the result to a variable 
     $stmt->bind_result($role); 
     $stmt->fetch(); 


     switch($role){ 

      case 'admin': 
       header("location:admin.php"); 
       exit(); 

      case 'trackcoordinator': 
       header("location:trackco.php"); 
       exit(); 

      case 'reviewer': 
       header("location:reviewer.php"); 
       exit(); 

      case 'author': 
       header("location:sub.php"); 
       exit(); 

      default: 
       echo "Wrong Username or Password"; 
     } 

    } 

    $stmt->close(); 
} 
} 

//$db->close(); 

?> 

これは、レジスタテーブルです。そして、データは、ログインプロセスのために、この1からフェッチされます。

enter image description here

+0

ログイン情報は正しいですか?あなたのパスワードをプレーンテキストで保存しているようです。 mysqliまたはPDO –

+0

のログイン情報が正しい場合は、mysqlを使用しないでください。このコードが実行されているとき、エラーmsrはありません。空白のページと同じページを再ロードします – clay

+0

echo $ role何を入手しますか? –

答えて

0

も、私はあなたがif()文で=の代わり==使用気づいた、break()exit()を交換してみてください。それも変更してみてください。

EDIT: 複数のユーザーリダイレクトを行うもう1つの方法は、access_level(またはそのようなもの)と呼ばれるデータベーステーブルに1,2,3 ...などのint値を持つ列を追加することです現在のユーザーのアクセスレベルを確認し、ユーザーのアクセスレベルに応じて別のURLにリダイレクトする

1

@Mikeyはmysql_querymysqliの文の準備とバインドを混同していると指摘しています。また、クエリの引用符を誤って使用しています。

はのは、あなたのdbconnect.phpこの

<?php 
$db= new mysqli('localhost', 'my_user', 'my_password', 'world'); 
?> 

のように見えたとしましょう、あなたのlogin.phpライン10(if文)は、その後、あなたが問題ないはず

if ($stmt = $db->prepare("SELECT role FROM register WHERE email = ? and pw = ? ")) { // You can either use backquotes (`email`) or no quotes 

ようにする必要があります。

関連する問題