Maison >développement back-end >Problème PHP >À quoi devez-vous faire attention lorsque les utilisateurs php se connectent ?
À quoi les utilisateurs PHP doivent-ils faire attention lorsqu'ils se connectent ?
Le mot de passe doit être crypté à l'aide de MD5 (mot de passe + chaîne).
Ne nommez pas le formulaire de connexion de la même manière que le champ de la base de données pour éviter d'exposer les champs de la table.
Le nom de la table, le nom du champ et le mot de passe de la table utilisateur devraient être difficiles à deviner.
Utilisez le code de vérification pour vérifier la connexion afin d'éviter le craquage par force brute.
Vérifiez si les données soumises proviennent de ce site Web. (Apprentissage recommandé : Programmation PHP de l'entrée à la maîtrise)
La partie base de données du code de traitement en arrière-plan de connexion utilise un prétraitement et un filtrage pour empêcher l'injection SQL.
Par exemple : il doit gérer l'authentification, confirmer l'e-mail, mettre à jour le compte (mot de passe, e-mail) et d'autres choses.
<?php function user_change_email ($password1,$new_email,$user_name) { global $feedback,$hidden_hash_var; if (validate_email($new_email)) { $hash=md5($new_email.$hidden_hash_var); file://改变数据库中确认用的无序码值,但不改变email file://发出一个带有新认证码的确认email $user_name=strtolower($user_name); $password1=strtolower($password1); $sql="UPDATE user SET confirm_hash='$hash' WHERE user_name='$user_name' AND password='". md5($password1) ."'"; $result=db_query($sql); if (!$result || db_affected_rows($result) < 1) { $feedback .= ' ERROR - Incorrect User Name Or Password '; return false; } else { $feedback .= ' Confirmation Sent '; user_send_confirm_email($new_email,$hash); return true; } } else { $feedback .= ' New Email Address Appears Invalid '; return false; } } function user_confirm($hash,$email) { /* 用户点击认证email的相关连接时,连到一个确认的页面,该页面会调用这个函数, */ global $feedback,$hidden_hash_var; file://verify that they didn't tamper with the email address $new_hash=md5($email.$hidden_hash_var); if ($new_hash && ($new_hash==$hash)) { file://在数据库中找出这个记录 $sql="SELECT * FROM user WHERE confirm_hash='$hash'"; $result=db_query($sql); if (!$result || db_numrows($result) < 1) { $feedback .= ' ERROR - Hash Not Found '; return false; } else { file://确认email,并且设置帐号为已经激活 $feedback .= ' User Account Updated - You Are Now Logged In '; user_set_tokens(db_result($result,0,'user_name')); $sql="UPDATE user SET email='$email',is_confirmed='1' WHERE confirm_hash='$hash'"; $result=db_query($sql); return true; } } else { $feedback .= ' HASH INVALID - UPDATE FAILED '; return false; } } function user_send_confirm_email($email,$hash) { /* 这个函数在首次注册或者改变email地址时使用 */ $message = "Thank You For Registering at Company.com". " Simply follow this link to confirm your registration: ". " http://www.company.com/account/confirm.php?hash=$hash&email=". urlencode($email). " Once you confirm, you can use the services on PHPBuilder."; mail ($email,'Registration Confirmation',$message,'From: noreply@company.com'); } ?>
Peut-être que nous n'utilisons pas cette méthode pour l'authentification des utilisateurs, mais la session et d'autres méthodes, mais cet article nous éclaire quand même sur la façon de chiffrer et de confirmer.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!