|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
第1步环境配置好了,你算了进了1小步了,那么第2步呢 就是调出第1个程序 一般都是用hello world,视频教程里面我都做了,hello world 在利用PHP编程的时分,我有一个习气,不太喜好利用现成的库文件,例如PHPLib或其它相似的库,在这个体系中,我也盘算本人写一个库文件,它需求处置认证、确认email,更新帐号(暗码,email)等工作。
为了在包管该体系平安的同时,不会减轻我现无数据库的承当。因而这个新的体系要依附cookies。这的确是一个两难的选择,由于假如只是设置一个用户名的cookie,是很不平安的,这行欠亨,但从数据库的承当思索,我也不克不及到场一个复杂的无序码而交由我的数据库来停止验证。
处理的办法是同时设置两个cookie,一个是用户名的cookie,一个是无序码的cookie。这个无序码实践上是由用户名和一个超等暗码(只要法式设计者晓得)组合经由过程md5()函数运算发生的。因为md5()是一个单向的无序码,因而是不成以破解的。在用户更改email时,我也能够用该email和超等暗码发生一个无序码,以让用户确认修正。这实践上是一个公匙/私匙类的体系。不分明?没关系,上面再渐渐申明。
风趣的是,这个体系的扩大才能是可以到达无量的,由于该体系的次要任务是盘算md5()函数的值,并且由web办事器完成,在负载增添时,可以到场其它的办事器来分管负载,固然认证体系不会拖跨一个数据库,然而如许做就让终究的瓶颈只能呈现在数据库上。
以下是该库中的两个函数--记号发生和记号认证函数。
<?php
$hidden_hash_var='your_secret_password_here';
$LOGGED_IN=false;
unset($LOGGED_IN);
function user_isloggedin() {
global $user_name,$id_hash,$hidden_hash_var,$LOGGED_IN;
file://已停止无序码的检测了吗
file://假如是的话,前往该变量
if ( isset($LOGGED_IN) ) {
return $LOGGED_IN;
}
file://are both cookies present?
if ($user_name && $id_hash) {
/*
由cookies中得来的用户名和体系超等暗码发生一个认证用的无序码假如该无序码与cookie中的无序码一样,则cookies中的变量是可托的,用户已登录
*/
$hash=md5($user_name.$hidden_hash_var);
if ($hash == $id_hash) {
file://无序码合适,设置一个全局变量,如许咱们在再次挪用该函数的时分,
file://就无需再次停止md5()运算
$LOGGED_IN=true;
return true;
} else {
file://两个无序码不合适,没有登录
$LOGGED_IN=false;
return false;
}
} else {
$LOGGED_IN=false;
return false;
}
}
function user_set_tokens($user_name_in) {
/*
一旦用户名和暗码经由过程验证,就挪用这个函数
*/
global $hidden_hash_var,$user_name,$id_hash;
if (!$user_name_in) {
$feedback .= ' ERROR - User Name Missing When Setting Tokens ';
return false;
}
$user_name=strtolower($user_name_in);
file://利用用户名和超等暗码创立一个无序码,作判别是不是已登录用
$id_hash= md5($user_name.$hidden_hash_var);
file://设置cookies的无效期为一个月,可设置为任何的值
setcookie('user_name',$user_name,(time()+2592000),'/','',0);
setcookie('id_hash',$id_hash,(time()+2592000),'/','',0);
}
?> 再来看另外一段风趣的代码,用户如何才干平安地改动他们的email地址呢?他们可以在任什么时候候改动email地址,然而要停止确认。
在学习PHP这六个月里,每看到一个优秀的php脚本,就会兴奋的手舞足蹈,嘴里还不停的说:太酷了,太酷了。呵呵,很幼稚吧,但这可能就是兴趣。 |
|