2017-02-03 14 views
1

私はmysqlデータベースにユーザ名とパスワードの存在を検証するPHPコードを書いています。このphpは、ログインページ(index.html)のsigninボタンをクリックすると呼び出されます。私のPHPコードは以下の通りです:PHPを使用して別のhtmlページに移動

<?php 
require_once 'dbconfig.php'; 

// Unescape the string values in the JSON array 
$logindata = stripcslashes($_POST['pLogData']); 

// Decode the JSON array 
$logindata = json_decode($logindata,TRUE); 

// now $tableData can be accessed like a PHP array 
$user_email = $logindata['user']; 
$user_password = $logindata['pass']; 

//First lets get the username and password from the user 
$query = $db_conn->prepare("SELECT * FROM tblUsers WHERE email=:user_email LIMIT 1"); 

$query->execute(array(':user_email'=>$user_email)); 

$userRow=$query->fetch(PDO::FETCH_ASSOC); 

if($query->rowCount() > 0) { 
    if(password_verify($upass, $userRow['pass'])) { 
     $_SESSION['user_session'] = $userRow['userid']; 
     if($userRow['userid'] == 1) { 
      header("Location: adminPanel.html"); 
     } else { 
      header("Location: main_dashboard.html"); 
     } 
     // return true; 
    } else { 
     header("Location: index.html"); 
     // return false; 
    } 
} 
?> 

AJAX呼び出しのコードは次のようになります。これは、PHPで設定したナビゲーションが起きていないことを除いて正常に動作している

function login(username, passwd) { 
    var loginData = { 
     'user': username, 
     'pass': passwd 
    }; 

    loginData = $.toJSON(loginData); 

    $.ajax({ 
     type: "POST", 
     url: "loginValidate.php", 
     data: "pLogData=" + loginData, 
     success: function(msg) { 
      console.log(msg); 
      // return value stored in msg variable 
     } 
    }); 
} 

。私は間違いがどこにあるか把握することができません。移動しなければならないhtml全体がコンソールに印刷されています。

ご協力いただければ幸いです。

+0

〜ajaxこれは機能しません。 'file name'を返し、javascriptで' window.location = filename'を使います。フォームを提出し、もしuncussessfullが 'main_dashboard.html'のそれ以外のものにリダイレクトするならば。 –

+0

@Suchit、あなたの提案はうまくいきましたが、ユーザー名とパスワードを検証するためにサーバーにヒットする必要があります。これはPHPを使用して簡単です。 htmlをphpファイルに置き換えると、切り替えることができます。私はなぜそれがHTMLファイルのために切り替わっていないのか知りたい。 –

+1

.htmlはPHPコードを認識しません.AJAXを使用する場合は、検証後にファイル名を返し、リダイレクトに使用します。 –

答えて

2

これは機能しません。ファイル名を返し、window.location=filenameをjavascriptで使用してください。またはフォームを提出し、 が不本意な場合はmain_dashboard.html(the desired page)に現在以外にリダイレクトします。この削除ヘッダの位置については

success: function(filename) { 
     window.location=filename; 
    } 

とmain_dashboard.htmlまたはその他のようなecho filenameを使用する:あなたは、ファイル名を返す場合

あなたはこれを行うことができます。

0

貴重なご意見ありがとうございます。私はこの問題を解決することができました。作業コードは次のとおりです。

if($query->rowCount() > 0) { 
    $upass = $userRow['pass']; 
    // if(password_verify($user_password, $userRow['pass'])) { 
    if($user_password == $upass) { 
     //echo "Check verified"; 
     $_SESSION['user_session'] = $userRow['userid']; 

     if($userRow['userid'] == 1) { 
      //header("Location: http://localhost:90/codebase-test/adminPanel.html"); 
      //return $userRow['userid']; 
      $filename = "adminPanel.html"; 
      //return $filename; 
     } 
     else{ 
      $filename = "main_dashboard.html"; 
      //return $filename; 
     } 
     echo $filename; 
     // return true; 
    } 
    else { 
     echo "index.html"; 
     //echo $filename; 
     //return false; 
    } 
} 

私が変更したビットだけが掲載されています。それは今働いている。

EDIT また、私はajax呼び出しを少し変更しました。以下のコード:

$.ajax({ 
    type: "POST", 
    url: "loginValidate.php", 
    data: "pLogData=" + loginData, 
    success: function(filename){ 
     window.location = filename; 
    } 
}); 
関連する問題