2017-10-20 24 views
0

J'essaie actuellement de créer un jeton 'réinitialiser le mot de passe'. Un jeton généré lorsque quelqu'un sur mon site veut réinitialiser son mot de passe. Actuellement, une fois le jeton créé, je le sauvegarde dans ma base de données. Je veux que le jeton existe dans la base de données pendant seulement 24 heures, puis il se supprime automatiquement, mais je n'ai aucune idée de comment procéder. Toute aide serait appréciée. Je génère le jeton assez simplement, en créant une chaîne de caractères aléatoires. Ensuite, j'économise le jeton et l'e-mail du mot de passe oublié dans le DB comme suitSuppression automatique de la base de données Mysql

'INSERT INTO reset_token (token, email) VALUES ("'.token.'", "'.email.'")' 
+7

Vous pouvez simplement ajouter la colonne 'expiration_date'. Après ce jeton sera automatiquement invalidé (personne ne peut l'utiliser) mais toujours dans la table. – lad2025

+0

Copie possible de [aide PHP avec réinitialisation de mot de passe et expiration de jeton] (https://stackoverflow.com/questions/3164978/php-help-with-password-reset-and-token-expiry) – Dezza

+0

Créer un événement – Stivan

Répondre

1

Quand vous dites « Auto Supprimer », vous devez « Auto Supprimer » il. Donc, quelque part dans votre code, il doit y avoir une requête pour effectuer cette opération de suppression. Plus important encore, si vous devez supprimer des jetons expirés, vous devez savoir s'ils ont expiré. Pour ce magasin, le timestamp avec le jeton.

Maintenant, où vous mettez cela, dépend de combien de fois voulez-vous vérifier s'il doit être supprimé. Dans ce cas, vous pouvez le mettre juste avant les lignes de code où vous vérifiez si le jeton est valide. c'est-à-dire, si vous avez une fonction validate_token qui verrait si le jeton existe dans la base de données et est valide, vous pouvez le mettre dans cette fonction.

function validate_token($token) { 
    $expiry = time() - 60*60*24; 
    // perform query to delete all tokens that have a timestamp less than $expiry 

    // Now run the query to check if the token exists in the database. 
    // You have only valid tokens left! 
}