Форма восстановления пароля
Имеется форма авторизации и регистрации. Необходимо сделать механизм восстановление пароля. Сама форма готова. Необходимо сделать запросы из БД через 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);
}