2017-10-26 54 views
1

データをajaxで取得して検証し、条件ごとにユーザーをリダイレクトします。ユーザーのログインに成功した場合と同様に、ダッシュボードにリダイレクトします。そうでない場合は、リダイレクトしてページを制限します。私はネットワークコンソール(開発者用ツール)の結果データを取得しますが、特定のページにリダイレクトできません。 ここにindex.phpのページがあります。ajaxからデータを取得した後にURLをリダイレクトできない

<div id="loginContainer"> 
    <form id="loginFrm" method="post"> 
     <h3>Members Login Area</h3> 
     <img id="divider" src="images/divider.png"> 
     <input type="email" name="lemail" required placeholder="Enter a valid email address"> 
     <input name="lpassword" placeholder="Password" type="password" required> 
     <input type="submit" value="Sign In"> 
     <input id="submit" type="hidden" name="submit"> 
     <p><a href="#">Forgot Password ?</a></p> 
     <p id="bottom">Don't have account? <a href="#" id="signup">Sign up here</a></p> 
    </form> 
</div> 
<script> 
    $(document).ready(function() { 
     $("#loginFrm").submit(function() { 
      var data = $("#loginFrm").serialize(); 
      insertRecords(data); 
      return false; 
     }); 
     function insertRecords(data) { 
      $.ajax({ 
       url: 'loginProcess.php', 
       data: data, 
       type: 'POST', 
       dataType: 'html', 
       success: function (data) { 
        $("#result").html(data); 
        }, 
        error: function() { 
         alert('Error : COde not work properly'); 
        } 
       }); 
      } 
     }); 
</script> 

これは私のloginProcess.phpページで、ユーザーからのデータを取得します。

<?php 
ob_start(); 
error_reporting(E_ALL); 
print_r($_POST);// see all result in network console 
require_once('inc/dbconnection.php'); 
require_once('inc/functions.php'); 
$emailErr = $password=""; 
if (isset($_POST['submit'])) { 

if (empty($_POST["lemail"])) { 
    $emailErr = 'Please enter your email address.'; 
} else { 
    $email = filterEmail($_POST["lemail"]); 
    if ($email == FALSE) { 
     $emailErr = 'Please enter a valid email address.'; 
    } 
} 
if (empty($_POST["lpassword"])) { 
    $passwordErr = 'Please enter your password here.'; 
} else { 
    $password = sha1($_POST['lpassword']); 
} 
} 
// after pressing login, checking if the variables exist in the database 
if (empty($emailErr) && empty($passwordErr)) { 
    $query = $db->prepare("SELECT password FROM users WHERE email=?"); 
    $query->execute(array($email)); 
    if ($query->fetchColumn() === $password) { 
     // starts the session created if login info is correct 
     session_start(); 
     $_SESSION['email'] = $email; 
     header("Location: dashboard.php",true, 302); 
     exit; 
    } else { 
     header("Location: restrict.php",true, 302); 
     exit; 
    } 
} else { 
    header("Location: index.php?Email=$emailErr&Password=$passwordErr",true, 302); 
    die; 
} 
ob_end_flush(); 
?> 

注:私はあなたがAJAXphpにリダイレクトすることはできませんヘッダー機能で

答えて

1

を(302、true)を削除した後にチェックしました。あなたは以下のようにAJAXsuccess機能にリダイレクトする必要があります。

window.location.href = 'dashboard.php' 
+0

私は以下を使用しますが、私のためには機能しません。 echo( ""); –

+0

このような成功関数で応答を試してください。===>成功:function(data){ window.location.href = 'dashboard.php' }、 –

+0

条件が真でない場合、ページを制限する方法は? –

0

あなたはajax() Javscript機能によって期待される形式のデータが含まれていないから結果を取得しているページは(によって引き起こされる場合はAJAX要求は失敗しますリダイレクトされた結果ページ)。

PHPからURLをJavaScript関数に渡さないようにしてください。リダイレクト先のURLがに設定されているかどうかを確認してください。

window.location.replace('dashboard.php'); 
0

PHPフォーム処理スクリプトからリダイレクトする必要がありますか? ERROR/NO ERRORレスポンスを生成し、AJAXレスポンスのケースを処理することで、フォームページからページをリダイレクトする必要があります。

関連する問題