2017-03-09 7 views
0

を返す私は、Ajaxを使用してパスワードリセットモジュールを作成しようとしていますが、PHPファイルからの戻り値(console.log())は常に空白です。私のPHPファイルにもエラーはなく、私は空の文字列をエコーし​​ません。助けてください、これは私のAJAXリクエストアヤックス - 成功には、空の文字列

$.ajax({ 
    type:'POST', 
    url:'verify-change-pass', 
    data: {_oldpass : op, _pass1 : p1, _pass2 : p2}, 
    success:function(data) { 
     data = data.trim(); 

     switch(data){ 
      case "er_no_acc" : 
       $('#grp_oldpass').addClass('has-error'); 
       $('#feedback_oldpass').addClass('glyphicon glyphicon-remove form-control-feedback'); 
       document.getElementById('msg_oldpass').innerHTML = "*No account found. Please refresh the page to generate new session."; 
       //alert('Please enter your username'); 
       break; 
      case "er_oldpass_empty" : 
       $('#grp_oldpass').addClass('has-error'); 
       $('#feedback_oldpass').addClass('glyphicon glyphicon-remove form-control-feedback'); 
       document.getElementById('msg_oldpass').innerHTML = "*Please enter old password."; 
       // alert('Please enter your password'); 
       break; 
      case "er_oldpass_invalid" : 
       $('#grp_oldpass').addClass('has-error'); 
       $('#feedback_oldpass').addClass('glyphicon glyphicon-remove form-control-feedback'); 
       document.getElementById('msg_oldpass').innerHTML = "*Old password does not match.";     
       // alert('Please enter your password'); 
       break; 
      case "er_pass1_empty" : 
       $('#grp_pass1').addClass('has-error'); 
       $('#feedback_pass1').addClass('glyphicon glyphicon-remove form-control-feedback'); 
       document.getElementById('msg_pass1').innerHTML = "*Please enter password."; 
       // alert('Please enter your password'); 
       break; 
      case "er_pass2_empty" : 
       $('#grp_pass2').addClass('has-error'); 
       $('#feedback_pass2').addClass('glyphicon glyphicon-remove form-control-feedback'); 
       document.getElementById('msg_pass2').innerHTML = "*Please enter password.";     
       // alert('Please enter your password'); 
       break; 
      case "er_pass1_tooshort" : 
       $('#grp_pass1').addClass('has-error'); 
       $('#feedback_pass1').addClass('glyphicon glyphicon-remove form-control-feedback'); 
       document.getElementById('msg_pass1').innerHTML = "*Password must be more than 5 characters."; 
       // alert('Password too short.'); 
       break; 
      case "er_pass2_tooshort" : 
       $('#grp_pass2').addClass('has-error'); 
       $('#feedback_pass2').addClass('glyphicon glyphicon-remove form-control-feedback'); 
       document.getElementById('msg_pass2').innerHTML = "*Password must be more than 5 characters."; 
       // alert('Password too short.'); 
       break; 
      case "er_pass1_toolong" : 
       $('#grp_pass1').addClass('has-error'); 
       $('#feedback_pass1').addClass('glyphicon glyphicon-remove form-control-feedback'); 
       document.getElementById('msg_pass1').innerHTML = "*Password must be less than 20 characters."; 
       // alert('Password too long.'); 
       break; 
      case "er_pass2_toolong" : 
       $('#grp_pass2').addClass('has-error'); 
       $('#feedback_pass2').addClass('glyphicon glyphicon-remove form-control-feedback'); 
       document.getElementById('msg_pass2').innerHTML = "*Password must be less than 20 characters."; 
       // alert('Password too long.'); 
       break; 
      case "er_pass_notsame" : 
       $('#grp_pass1,#grp_pass2').addClass('has-error'); 
       $('#feedback_pass1,#feedback_pass2').addClass('glyphicon glyphicon-remove form-control-feedback'); 
       document.getElementById('msg_pass1').innerHTML = "*Password does not match."; 
       document.getElementById('msg_pass2').innerHTML = "*Password does not match."; 
       // alert('Password does not match'); 
       break;     
      case "y" : 
        ResetMyPassword(p1);  
       break; 
      default: 
       alert('Error occured : '+data); 
     } 


     /* Always put console.log for debugging */ 
     console.log(data); 
    } 
}); 

であり、これはverify-change-pass.phpさんから私のverify-change-pass.php

session_start(); 
if(!isset($_SESSION['username'])){ 
    echo "Error 404 : Page not found."; 
    exit(); 
} 
include("connectdb.php"); 

$par_uname = $_SESSION['username']; 
$par_oldpass = isset($_POST['_oldpass']) ? $_POST['_oldpass'] : ''; 
$par_pass1 = isset($_POST['_pass1']) ? $_POST['_pass1'] : ''; 
$par_pass2 = isset($_POST['_pass2']) ? $_POST['_pass2'] : ''; 

trim($par_oldpass); 
trim($par_pass1); 
trim($par_pass2); 
htmlspecialchars($par_oldpass); 
htmlspecialchars($par_pass1); 
htmlspecialchars($par_pass2); 

$count=0; 
$stmt = $mysqli->prepare("SELECT acc_hashedpass FROM admin_acc WHERE acc_uname=?"); 
$stmt->bind_param('s',$par_uname); 
$stmt->execute(); 
$stmt->store_result(); 
$count = $stmt->num_rows; 
$stmt->bind_result($hashed); 
$stmt->fetch(); 
$stmt->close(); 

if($count != 1){ 
    echo "er_no_acc"; //no username found. check the session if fetched properly 
    exit(); 
} 

if ($par_oldpass == ""){ 
    echo "er_oldpass_empty"; //oldpass is empty 
    exit(); 
} 

if(!password_verify($par_oldpass,$hashed)){ 
    echo "er_oldpass_invalid" . password_verify($par_oldpass,$hashed); //invalid old password 
    exit(); 
} 

if ($par_pass1 == ""){ 
    echo "er_pass1_empty"; //password 1 is empty 
    exit(); 
} 

if($par_pass2 == ""){ 
    echo "er_pass2_empty"; //password 2 is empty 
    exit(); 
} 

if(mb_strlen($par_pass1) < 6){ 
    echo "er_pass1_tooshort"; //password is too short. Must be more than 8 characters 
    exit(); 
} 
if(mb_strlen($par_pass2) < 6){ 
    echo "er_pass2_tooshort"; //password is too short. Must be more than 8 characters 
    exit(); 
} 

if(mb_strlen($par_pass1) > 20){ 
    echo "er_pass1_toolong"; //password is too long. Must be less than 20 characters 
    exit(); 
} 
if(mb_strlen($par_pass2) > 20){ 
    echo "er_pass2_toolong"; //password is too long. Must be less than 20 characters 
    exit(); 
} 

if ($par_pass1 != $par_pass2){ 
    echo "er_pass_notsame"; //password doesnt match 
    exit(); 
} 

echo "y"; 

エコーでは、まず第六if件まで働いて、その後、戻り値は常にあります空の文字列。助けてください..

ところで、このスニペットはlocalhost上で動作しますが、私はそれをオンラインでアップロードした後、コードは動作しません。あなたのコードの先頭にそれを追加すること

答えて

0

どうやら私がコメントを行うには50の評判が必要なので、私は(笑)答えを経由して、コメントしましょう

error_reporting(E_ALL); 
ini_set('display_errors', 1); 

みては?

include("connectdb.php"); 

は、内部にエラー/可能な出口を持っている場合

また、確認してください。

一番上に何かをエコーし​​てみましたか?

+0

のAJAXファイルでPHPファイルにエラーがない場合>他みてください。私はまた、 'include(connectdb.php)'とAjaxの戻りが成功する前にエコーを試みました。また、間違った古いパスワードを入力すると、ajaxリクエストは正しい値( '' er_oldpass_invalid '')を返します。 –

+0

なぜ私は 'localhost'で正しく動作するのか理解できませんが、オンラインではアップロードできません。 :/ –

0

ajax によって呼び出されたphpファイルのコードからexit関数を削除して、必要なメッセージだけを出力して、ajaxが成功した場合の応答を警告してみてください。 - > jQuery.trim(data)を試すことができます。むしろdata.trim(); うまくいくのでうまくいくかもしれません。 は - ではなく、個々の場合、PHP

+0

ajaxは最初の 'if'から' if'までの値だけを返します。それ以外は、空の文字列を返します。 –

+0

それ以外の場合はelseを使用しようとします。 if($ count!= 1){ echo "er_no_acc"; //ユーザー名が見つかりません。正しくフェッチされた場合はセッションを確認してください。 } elseif($ par_oldpass == ""){ echo "er_oldpass_empty"; // oldpassが空です } elseif(!password_verify($ par_oldpass、$ hashed)){ echo "er_oldpass_invalid" password_verify($ par_oldpass、$ hashed); //無効な古いパスワード } ..... else { echo "Y"; } exit()をすべて削除します。条件から –

関連する問題