Форма восстановления пароля

Имеется форма авторизации и регистрации. Необходимо сделать механизм восстановление пароля. Сама форма готова. Необходимо сделать запросы из БД через AJAX(js,jQuery). Запросы по типу найти запись в БД по email и т.д.

$user=mysqli::findOne('users','email=?',array($data['email'])); R::store($user);

Это запросы RedBeanPHP. Желательно что-то аналогичное, но через AJAX(js,jQuery)


Ответы (1 шт):

Автор решения: phpBear
<form>
<label for="Email">Enter your email for password reset: <input type="text" id="email" value=""></label>
</form>
$.ajax({
   url: '/password/forgot',
   type: 'POST',
   data: 'email='+$('#email').val()
   error: function(req, text, error) {
       alert(error);
   },
   success: function ( data ) {
       if ( data ) {
           if ( typeof data.success !== typeof undefined ) {
               alert('Password has been reset. Check your mailbox for further instructions ');
           } else if ( typeof data.error !== typeof undefined ) {
               alert('Error: '+data.message);
           }
       } else { alert('Unknown server response!'); }
   },
});
/* PasswordController.php */
public function Forgot() {
  $data = new \stdClass();
  $data->error = true;
  $data->message = 'No `email` specicifed!';
  if ( is_array( $_POST ) && isset($_POST['email']) && trim($_POST['email']) != '' ) {
       /* FILTER_FLAG_EMAIL_UNICODE - нужен чтобы поддерживать кириллические домены */
      $data->message = '`Email` have incorrect format!';
      if ( filter_var( $_POST['email'], FILTER_VALIDATE_EMAIL, FILTER_FLAG_EMAIL_UNICODE) ) {
           R::setup( 'mysqli:host=localhost;dbname= ...','root', '', false);
           $data->message = 'Unable to connect to database!';
           if ( R::testConnection() ) {
               $user = R::findOne('users', 'email = ?', array( trim($_POST['email'] ) ));
               $data->message = 'User with email=`'.trim($_POST['email'] ).'` not found!';
               if ( $user ) {
                   $user->password = md5( time() );    
                   R::store($user);
                   /*
                    * Sending mail with instructions at this place...
                   */
                   unset($data->error);
                   $data->success = true;
                   $data->message = 'OK';
               }
           }
      }
  }
  echo json_ecode($data);
}
→ Ссылка