从URL更新

时间:2016-05-28 12:08:07

标签: php sql

我一直在努力在从电子邮件发送和收集请求后更新密码,请求部分似乎有效但当我尝试更新密码似乎没有发生时,我的密码长度设置为255,最初我检查了它是否是正确的ID我似乎是,当我在easyphp手动运行查询添加我想要更新它似乎工作,我看了我的网络响应没有错误显示和检查我的错误也没有任何记录。任何建议都会很棒。

  <?php 
require_once'connection.php'; 

    $userInput = new UserInput(); 
    $userInput->trimInput(); 


    $id = ''; 
    if( isset( $_GET['reset'])) {
    $id = $_GET['reset']; 
    } 

 header('Content-Type: application/json'); 
    $errors = []; 

    if (empty($_SESSION['resetPassword'])) { 
        $_SESSION['resetPassword'] = 1; 
    } 
    else { 
        $_SESSION['resetPassword']++; 
    } 
    if($_SESSION['resetPassword'] > 3){ 
           $errors[]= ["name"=>"username","error"=>"Too many attempts try again in 15 minutes"]; 

    if(!isset($_SESSION["timeoutPassword"])){
            $_SESSION['timeoutPassword'] = time();
   };
   $st = $_SESSION['timeoutPassword'] + 900; 

    if(time() > $st){
    unset($_SESSION['resetPassword']);
    unset($_SESSION['timeoutPassword']);
  }        
    }
    else { 
                if(filter_var($_GET['password'],  FILTER_VALIDATE_REGEXP,["options"=> [ "regexp" => "/.{6,25}/"]]) === FALSE){ 
                    $errors[]= ["name"=>"password","error"=>"invalid password (6 to 25 characters)"]; 
                } 

                if(!preg_match("/(?=[a-z]*[0-9])(?=[0-9]*[a-z])([a-z0-9-]+)/i",$_GET['password'])) { 
                     $errors[]= ["name"=>"password","error"=>"Password must contain numbers and letters"]; 
                } 

                if($_GET['password'] !== $_GET['repeatPassword']){ 
                    $errors[]= ["name"=>"repeatPassword","error"=>"passwords don't match"]; 
                } 

            if (count($errors) === 0) { 
           try{
                    $sql = "UPDATE username SET activecode = 'Active', password = :password WHERE activecode = :reset"; 
                    $stmt = $db->prepare($sql);

                    $stmt->bindValue(':password',  password_hash($_GET['password'], PASSWORD_DEFAULT)); 
                    $stmt->bindValue(':reset',  $id);
                    $stmt->execute();
                    $stmt->rowCount();
                     if ( $stmt->rowCount() === 1){
                             echo json_encode(["success"=>"Your password has been reset"]);
                                exit(0); 
                    }
            }
            catch(Exception $e ) { 
                 $errors[]= ["name"=>"username","error"=>"Unable to update password"];
            } 
            }
} 
    echo json_encode(["errors"=>$errors]);

0 个答案:

没有答案