2016-04-19 3 views
0

私はパスワードリセットフォームを作成しています。私のSQLステートメントは何も返されていないようです。私はそれを単純化するためにコードのセクションを削除しましたが、私はmysqli_num_rows()を貼り付けられるように見えません。私はそれに続く行に私のmysqli_query()ステートメントが間違っていると思う。私はmysql_num_rowsmysql_query代替を使用しようとしました。あなたは二つの変数でMySQLのエスケープを使用しているとして、変数$ eからMySQLのステートメントにエラーがあるようです。 mysqli_num_rows()とmysqli_fetch_array()エラーが発生しました

<?php 
if(isset($_POST["u"])) 
{ 
// CONNECT TO THE DATABASE 
    include_once("includes/connect.php"); 

// GATHER THE POSTED DATA INTO LOCAL VARIABLES AND SANITIZE 
    $u = preg_replace('#[^a-z0-9_]#i', '', $_POST['u']);   
    $e = mysql_real_escape_string($connect, $_POST['e']); 

$username = $_POST['username']; 
$email = $_POST['email']; 

$query = mysqli_query($connect, "SELECT username, email FROM users WHERE username='$username'"); 
$numrows = mysqli_num_rows($query); 
if($numrows > 0) 
     { 
    while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){ 

     $db_u = $row["username"]; 
        $db_e = $row["email"]; 
    }  
      if($e == $db_e && $u == $db_u) 
       { 
     $code = rand(10000,9999999); 

     $sql = "UPDATE users SET passreset='$code' WHERE username='$username'"; 
     $query = mysqli_query($connect, $sql);    

     $to = $db_email; 
     $subject = "Password Reset"; 
     $body = "This is an automated email 

     "; 


     mail($to,$subject,$body); 

     echo "success"; 

      } 
else { 
echo"no_exist"; 
exit(); 

} 
} 
} 
?> 



<script> 
function forgotpass(){ 
    var u = _("username").value; 
var e = _("email").value; 
if(e == "" || u == ""){ 
    _("status").innerHTML = "This form requires you enter both an username and email."; 
} else { 
    _("forgotpassbtn").style.display = "none"; 
    _("status").innerHTML = 'please wait ...'; 
    var ajax = ajaxObj("POST", "forgot.php"); 
    ajax.onreadystatechange = function() { 
     if(ajaxReturn(ajax) == true) { 
      var response = ajax.responseText; 
      if(response == "success"){ 
       _("forgotpassform").innerHTML = '<h3>Check your email inbox </h3>'; 
      } else if (response == "no_exist"){ 
       _("status").innerHTML = "Email address not found"; 
      } else if(response == "email_send_failed"){ 
       _("status").innerHTML = "Mail function failed to execute"; 
      } else { 
       _("status").innerHTML = "An unknown error occurred"; 
      } 
     } 
    } 
    ajax.send("e="+e+"&u="+u); 
} 
} 
</script> 
</head> 
<body> 


    <h3>Reset password</h3> 
<form id="forgotpassform" onsubmit="return false;"> 
<div>Enter Username</div> 
<input id="username" type="text" onfocus="_('status').innerHTML='';" maxlength="88"> 
<br /><br /> 

<div>Enter Your Email Address</div> 
<input id="email" type="text" onfocus="_('status').innerHTML='';" maxlength="88"> 
<br /><br /> 

<button id="forgotpassbtn" onclick="forgotpass()">Submit</button> 
<p id="status"></p> 
</form> 
    </div> 

    </body> 
    </html> 
+0

'$電子= mysql_real_escape_stringのを逃れるmysqliのためにそれを変更し、問題がある可能性があります$ _POST [ 'E'] '$ e = mysqli_real_escape_string($ connect、$ _POST ['e']);' – larsAnders

答えて

0

値は、接続$(

+0

私はデータのサニタイズ方法に問題があると思っています。 $ e = $ _POST ['e'];運がない。私はmysqliの本当のエスケープ文字列に訂正します。 – tty

関連する問題