2017-09-20 3 views
0

私は前もってクライアント側のデータを送信していないことを確認したが、エラー報告を有効にしたが、何も起こっていない。PHPヘッダ(リダイレクトしない)、リダイレクトページのHTMLのみを投稿する

これは検証時にリダイレクトを使用する単純なログインスクリプトです。

<?php 
include_once "database-handler2.php"; 
require "password.php"; 

$UserName = $_POST["name"]; 
$Password = $_POST["pass"]; 

if(isset($UserName)) 
{ 
    $query = "SELECT Password FROM users WHERE Username='$UserName'"; 
    $hashed_password = mysqli_query($connection, $query); 

    while ($row = mysqli_fetch_row($hashed_password)) 
    { 
     $res = $row[0]; 
    } 


    if(password_verify($Password, $res)) { 
     // Show Errors 
     error_reporting(E_ALL); 
     ini_set('display_errors','On'); 
     // Redirect 
     header('Location:http://example.com/ex/index.php', true); 
     die('redirect'); 
    } 
} 

その他の付属のPHPに余分な空白などがないことを確認しました。成功関数は何もしません.AJAXを使用すると、alert()またはdebug.log()を有効にしてPHPのレスポンスの成功メッセージが表示されたら、ページからプリントアウトしますそのHTMLの下にエラーやその他の情報を入れずにHTMLにリダイレクトしようとしています。

Javascriptコード:

$('#submitButton').click(function() 
{ 
     var userName = document.getElementById("user").value; 
     var pass = document.getElementById("pass").value; 
    $.ajax({ 
     url: '/handlers/login-handler.php', 
     type:'POST', 
     data: 
     { 
      name: userName, 
      pass: pass 
     }, 
     success: function(msg) 
     { 
        alert(msg); 
     }    
    }); 
}); 

私は警告(MSG)を取る場合ということに注意してください。ボタンをクリックした場合よりも何も起こりません。

enter image description here

+2

AJAXからの応答を読み取る場合リダイレクトがリダイレクトされます。代わりに何が起こると思いますか? – Barmar

+0

AJAXはページ自体をリロードすることはありません。 AJAXリクエストの後にリダイレクトする場合は、Javascriptコードでリダイレクトする必要があります。 – Barmar

+1

PHPをリダイレクトする場所からページをリロードする場合は、なぜAJAXを使用していますか?通常のフォーム提出を使用します。 – Barmar

答えて

0

あなたは、AjaxレスポンスにPHPコードからsuccessタイプの応答を返す必要があり、その後、あなたはあなたのページが成功したプロセスの後にリダイレクトされますしwindow.location JSコードを使用する必要があります。

+0

@Brandon PHPセッションで情報を保存している場合、JSでリダイレクトしても情報は保存されません。 –

1

PHPコード

header('Location:http://example.com/ex/index.php', true);

とあなたのAJAXの成功応答にコードの行の下に追加の行を削除してください。

window.location.href="http://example.com/ex/index.php"

あなたはAJAXであれば、サーバー側のリダイレクトは動作しません。そして、あなたはjqueryの/ JavaScriptでリダイレクトする必要があります。

0

フォームを送信するのにjavascript/jQueryを使用せず、代わりに標準HTMLフォームを使用します。フォームを送信するためにjavascriptは必要ありません。

<form method="post" action="/handlers/login-handler.php"> 
 
    <label for="user">Username:</label> 
 
    <input type="text" id="user" name="user"> 
 
    <label for="pass">Password:</label> 
 
    <input type="text" id="pass" name="pass"> 
 
    <input type="submit" value="Submit"> 
 
</form> 
 

関連する問題