Bonsoir, j'ai un formulaire pour demande d'oublie de mot de passe le code semble vouloir fonctionné mais il n'envoi rien je ne comprend pas pourquoi Coté code ajax fonctionne très bien je pense. des que je clique sur valider le texte se change mais y'a rien qui s'affiche, si l'adresse mail existe ou pas. ? Merci de l'aide.
Formulaire en html:
Ajax:
Et le traitement en PHP "passwordreset.php":
Formulaire en html:
<div id="valider" class="col-md-6 col-md-offset-2 col-sm-12 col-xs-12">
<div class="alert alert-info" role="alert" id="alert"><i class="fa fa-circle" aria-hidden="true" style="margin-right:2px;font-size:8px;color:#30b305;"></i>
Pour réinitialiser votre mot de passe, inscrivez votre adresse mail ci-dessous.
</div>
<div class="alert alert-danger" style="display: none;">
Aucun compte ne correspond à cet adresse !
</div>
<div class="alert alert-success" id="success" style="display: none;">
Les instructions pour réinitialiser votre mot de passe vous ont été envoyer par e-mail !
</div>
<form method="post" action="" id="valider">
<div class="row">
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="form-group validate-input">
<label for="email"><i class="fa fa-at" id="user"></i>Votre adresse mail</label>
<input type="email" class="form-control input-label" id="email" name="email" placeholder="Email" required>
</div>
</div>
<div class="col-md-12 col-sm-12 col-xs-12">
<button type="submit" class="btn-default btn abt-btn" name="envoi">Valider<i class="fas fa-sign-in-alt sign" style="margin-left: 5px;"></i>
<i class="fa fa-circle-o-notch fa-spin loading hide" style="margin-left: 5px;"></i>
</button>
</div>
</div>
</form>
</div>
Ajax:
// Formulaire mot de passe oublié
$('#valider form').on('submit', function(e) {
form = $(this)
valider = $(this).closest('#valider');
button = form.find('button');
alert_danger = valider.find('.alert-danger');
alert_success = valider.find('.alert-success');
$.ajax({
url: './users/passwordreset.php',
type: 'POST',
data: $(this).serialize(),
dataType: 'json',
beforeSend: function() {
$(".sign").addClass("hide");
button.html("Valider...");
button.prop('disabled', true);
alert_danger.fadeOut(100);
}
}).done(function(success) {
if(success) {
form.hide();
alert_success.fadeIn(function() {
setTimeout(function(){
window.location.replace("http://localhost/xampp/DEv/connexion.php");
}, 4000)
});
} else {
alert_danger.fadeIn();
button.html("Valider");
button.prop('disabled', false);
}
});
e.preventDefault();
});
Et le traitement en PHP "passwordreset.php":
<?php
$success = false;
if(!empty($_POST) && !empty($_POST['email']))
{
include '../inc/init.php';
$email = trim($_POST['email']);
// On regarde si le mail existe
$sql_selectMembre = 'SELECT * FROM users WHERE email = ? AND actif = 1 AND created_at IS NOT NULL';
$req_selectMembre = $pdo->prepare($sql_selectMembre);
$req_selectMembre->execute(
[
'email' => $email,
]
);
//si le mail exist
if($req_selectMembre->rowCount() == 1)
{
session_start();
$code_reset = sha1(microtime());
$sql_updateMembre = ('UPDATE users SET code_reset = ?, reset_at = NOW() WHERE id = ?');
$req_updateMembre = $pdo->prepare($sql_updateMembre);
$req_updateMembre->execute(
[
'email' => $email,
'id' => $req_selectMembre['id']
]
);
$lien_validation = CONFIG['website'].'/users/confirm_password.php?email='.$email.'&code_reset='.$code_reset;
send_mail(
$email,
"Réinitialisation de votre mot de passe",
content_mail_passwordreset_html($lien_validation),
content_mail_passwordreset_text($lien_validation)
);
$success = true;
}
}
die(json_encode($success));
?>