暗码要运用MD5(暗码+字符串)举行加密。
登录表单的称号不要跟数据库字段一样,以避免暴漏表字段。
用户表的表名、字段名、暗码只管用不轻易被猜到的。
要运用考证码考证上岸,以防备暴力破解。
考证提交的数据是否是来自本网站。(引荐进修:PHP编程从入门到通晓)
登录背景处置惩罚代码数据库部份运用预处置惩罚,做好过滤,防备sql注入。
比方:它须要处置惩罚认证、确认email,更新帐号(暗码,email)等事变。
<?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'); } ?>
也许我们在用户认证方面不是采纳这类要领,而是采纳session等体式格局,不过这篇文章在怎样举行加密和确认方面,照样对我们有所启示的。
以上就是php用户登录要注意什么的细致内容,更多请关注ki4网别的相干文章!