《计算机技能 PHP基础知识.docx》由会员分享,可在线阅读,更多相关《计算机技能 PHP基础知识.docx(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、PHP基础知识:PHP环境的配置:该系统为简单的注册登录系统,包含的功能有1 .用户注册2 .给用户邮箱发送激活码3 .用户登录4 .保存用户登录信息,自动登录5 .用户修改密码6 .用户密码找回7 .用户注销登录主要代码文件有:config.php该文件为连接数据库文件,连接到mysql并选择数据库install.php该文件为自动安装数据库表文件,系统所需的用户信息存储表SignUp.php该文件为用户注册的界面,html代码,数据处理文件add.phpadd. php该文件为用户注册的数据处理文件,检查用户注册各数据是否合法,注册成功,将数据写进数据库表,并发送激活码到用户邮箱,自动跳转
2、到激活界面activate.php,提示用户激活账号activate.php该文件为用户激活界面,html代码,激活数据处理文件active_go.php 该界面同时可以重新发送激活码,重新发送激活码数据处理文件Resend_actN um.phpResend_actNum.php该文件为重新发送激活码文件,用户输入用户名和注册邮箱,点击重新发送即可获得激活码邮件active_go.php该文件为激活数据处理文件,用户激活成功,将数据库表中激活码置为0,自动跳转到登录界面login.php用户登录界面,首先判断session会话变量中是否存储了登录信息,如果有,则自动登录,登录数据处理文件lo
3、gin_go.phplogin_go.php用户登录数据处理文件,需要判断用户是否激活,用户名是否存在,密码是否匹配等,同时创建会话,保存登录信息,如果用户登录时选择保存登录信息,则发送cookie到客户端forgot, ph p找回密码界面,html代码。用户登录时忘记密码,则可以通过输入用户名和注册邮箱获取密码,数据处理文件为forgot_go.phpfbrgot_go.php用户找回密码数据处理文件,如果用户名和邮箱检测正确,则发送密码到邮箱,然后跳转到登录页面重新登录manage.php用户管理页面,导航框架,点击左边的链接,右边会显示相应的网页 manage_menu.php用户管理
4、页面左边的导航页面,显示各个功能菜单,点击相应的链接,右边显示响应的网页chan ge_pass word.php在manage文件夹下,修改密码的界面,在用户管理左边导航点击修改密码,右边页面会跳转到该页面修改密码,数据处理文件为 chan ge_pass word_go. ph pchange_password_go.php在manage文件夹下,用户修改密码数据处理文件,如果数据检测正确,则修改数据库表中的密码,同时也要修改session会话中的密码,修改成功返回到默认管理页面,不成功则返回重新输入menu_default.php在manage文件夹下,用户管理的默认管理页面,点击管理页
5、面左边导航我的地盘链接也会跳转到该页面,该页面代码未完善,以后扩展login_off.php在manage文件夹下,用户注销登录文件。在管理页面左边导航点击退出登录,会执行该文件,然后直接跳转到登录界面。注销登录,只要设置客户端 cookie 过,删除会话。PHP注册登录系统config.php?php$server=localhost;$username=root;$password=;$database=;if($database=)$query=usemembers;if(mysql_query($query)=null)$query=creat edatabasemembers;if(
6、mysql_query($query)=1)创建数据库成功,开始连接数据库$database=members;$conn=mysql_connect($server,$username,$password) ordie(couldnotconnectmysql);mysql_select_db($database,$conn) ordie(couldnotopendatabase);else echoErrorwhilecreatingdatabase(Error.mysql_errno().:.mysql_error().);创建数据库出错) else (如果数据库中存在members数据库
7、$database= members;$conn=mysql_connect($server,$username,$password) ordie(couldnotconnectmysql);mysql_select_db($database,$conn) ordie(couldnotopendatabase);) else如果选择的是别的数据库,也就是说$山256不为空$conn=mysql_connect($server,$username,$password) ordie(couldnotconnectmysql);mysql_select_db($database,$conn)ordi
8、e(couldnotopendatabase);?PHP注册登录系统-install.php?php导入数据库连接文件includeconfig.php;自动安装数据库表$query=createtableals_signup(UserNamevarchar(20),Passwordvarchar(20),Emailvarchar(20),actNumvarchar(20),UserLeveltinyint,SignUpdatevarchar(20),LastLoginvarchar(20),LastLoginFailvarchar(20),NumLoginFailtinyint);$resu
9、lt=mysql_query($query);if($result=l)echosignuptablesuccesfullycreated.;elseechoErrorwhilecreatingtable(ErrorNumber.mysql_ermo().:.mysql_error().);)?PHP注册登录系统-SignUp.php用户注册新用户注册用户名密码确认密码Email如果您已经有账号,请点击这里登陆。PHP注册登录系统-add.php(?php用户注册以后的数据处理文件。需要先检查数据合法性,然后写入数据库获取注册用户提交的数据$UserName 1=$_POSTUserName;
10、用户名$Password 1=$_POSTPassword;密码$ConfirmPassword 1=$_POSTConfirmPassword;确认密码$Email l=$_POST”Email;邮箱定义保存激活码变量$actnum=;导入数据库文件includeconfig.php;定义产生激活码函数functionCheck_actnum()$chars_for_actnum=array(A,B,C,D,E,F,G,H,I,J,K,L,d,);for=l;$i=20;$i+)生成一个20个字符的激活码$actnum.=$chars_fbr_actnummt_rand(0,count($c
11、hars_fbr_actnum)-l);)return$actnum;)判断用户名函数functionCheck_username($UserName)参数为用户注册的用户名用户名三个方面检查是否为空字符串检测长度检测$Max_Strlen_UserN ame=16;用户名最大长度$Min_Strlen_UserN ame=4;用户名最短长度$UserNameChars=AA-Za-zO-9_-;字符串检测的正则表达式$UserNameGood=用户名检测正确;定义返回的字符串变量 if($UserName=)$UserNameGood=用户名不能为空; return$UserNameGood
12、;if(!ereg($UserNameChars,$UserName)正则表达式匹配检查$UserNameGood=用户名字符串检测不正确;return$ U serN ameGood;)if(strlen($UserName)$Max_Strlen_U serN ame)$UserNameGood=用户名字长度检测不正确;return$ U serN ameGood;)return$UserNameGood;)判断密码是否合法函数functionCheck_Password($Password)(是否为空字符串检测长度检测$Max_Strlen_Password=16;/密码最大长度$Min
13、_Strlen_Password=6;密码最短长度$PasswordChars=AA-Za-zO-9_-;密码字符串检测正则表达式$PasswordGood=密码检测正确;定义返回的字符串变量if($Password=)$PasswordGood=密码不能为空”;return$PasswordGood;)if(!ereg($PasswordChars,$Password)$PasswordGood=密码字符串检测不正确 return$PasswordGood;)if(strlen($Password)$Max_Strlen_Password)$PasswordGood=密码长度检测不正确; r
14、eturn$PasswordGood;)return$PasswordGood;)判断邮箱是否合法函数functionCheck_Email($Email)$EmailChars=ALa-zO-9-+(._a-zO-9-+)*a-zO-9-+(.a-zO-9-+)*$;/正则表达式判断是否是合法邮箱地址$EmailGood=邮箱检测正确;if($Email=)$EmailGood=邮箱不能为空;return$Emai IGood;)if(!ereg($EmailChars,$Email)正则表达式匹配检查$EmailGood=邮箱格式不正确”;return$Emai IGood;)return
15、$Emai IGood;)判断两次密码输入是否一致functionCheck_ConfirmPassword($Password,$ConfirmPassword)$ConErmPasswordGood=两次密码输入一致”; if($Passwordo$ConfirmPassword)$ConfirmPasswordGood=两次密码输入不一致”;return$ConfirmPasswordGood;elsereturn$ConfirmPasswordGood;)调用函数,检测用户输入的数据$UserNameGood=Check_usemame($UserName 1);$PasswordGo
16、od=Check_Password($Password 1);$EmailGood=Check_Email($Email 1);$ConfirmPasswordGood=Check_ConfirmPassword($Password 1,$Confir mPasswordl);$error=false;定义变量判断注册数据是否出现错误if($UserNameGood!=ffl 户名检测正确)$error=true;改变error的值表示出现了错误echo$UserNameGood;输出错误信息echo;)if($PasswordGood !=密码检测正确)$error=true;echo$Pa
17、ss word Good;echo;if($EmailGood!=邮箱检测正确)$error=true;echo$EmailGood;echo;if($ConflrmPasswordGood !=两次密码输入一致)$error=true;echo$ConfirmPasswordGood;echo;判断数据库中用户名和email是否已经存在$query=select*fromals_signupwhereUserName=$UserNamerorEmail=$result=mysql_query($query);$row=mysql_fetch_array($result);while($row
18、) if($rowUserName=$UserNamel)$error=true;echo用户名已存在;)if($rowEmail=$Emaill)$error=true;echo用户邮箱已经注册;)如果数据检测都合法,则将用户资料写进数据库表 if($error=false)/$error=false 表示没有错误$actnum=Check_actnum();调用激活码函数$Datetime=date(d-m-yG:i);获取注册时间,也就是数据写入到用户表的时间$query=insertintoals_signup(UserName,Password,Email,actNum,UserLe
19、vel,SignUpdate,LastLogin,L astLoginFail,NumLoginFail)values ($UserNamel ;$Password 1,$Email 1,$actnum,l /SDatetime/O/O/O)$result=mysql_query($query);$to=$Emaill;用户注册的邮箱$subject=激活码;$message=您的激活码为$2511111;$header=From:kristin-wang.邮件头信息if(mail($to,$subject,$message,$header)/php 中 mail。函数用来发送邮件,需要更改p
20、hp.ini文件,最好安装SMTP服务器产生链接,链接到激活页面?请登陆邮箱获取激活码。然后点击这里激活。PHP注册登录系统activate.php注册账号激活注册账号激活谢谢注册,激活码已经被发送到您的邮箱!用户名:激活码:如果没有收到邮件,可以再次发送邮件:用户名:邮 箱:PHP 注册登录系统Resend_actNum.php重新发送激活码激活码已经重新发送,请登陆邮箱获取激活码。点击这里重新激活。用户名或者电子邮件错误。点击这里返回。PHP注册登录系统active_go.php激活您已经成功激活账号。请点击这里登陆?php)elseecho用户名或者激活码错误,请返回重新输入;
21、?返回PHP注册登录系统-login.phpM 户登录用户名:密 码:保存登录信息(7天)忘了密码?注册新用户PHP注册登录系统login_go.php?phpincludeconfig.php;session_start();启动会话获取用户的登录信息。用户名,密码,是否保存信息$UserName l=$HTTP_POST_VARSUserName;$Password l=$HTTP_POST_VARSPassword;$Remember=$HTTP_POST_VARSKeepInfo;如果用户点击了保存登录信息,将Remember置为1,否则置为0 if($Remem
22、ber=KeepInfo)$Remember=l;)else$Remember=O;)查询用户名是否存在$query=select*fromals_signupwhereUserName=$UserNamer;$result=mysql_query($query);$row=mysql_fetch_array($result);if($row)查询用户是否已经激活if($rowactNum=0)判断登录失败次数是否小于等于5次if($rowNumLoginFair,=5)判断密码是否正确if($rowPassword=$Password 1)如果密码正确,修改最近登录时间,将登录失败信息清除$
23、datetime=date(d-m-Y G:i);$query=updateals_signupsetLastLogin=$datetimewhereUserName=$UserName 1;$result=mysql_query($query);$query=updateals_signupsetNumLoginFail=0whereUserName=$User Namel;$result=mysql_query($query);创建会话,保存登录信息session_unset();删除会话session_destroy();session_register(Password);创建会话变量
24、,保存密码$HTTP_SESSION_VARS Password =$Password 1;session_register(UserName);保存用户名$HTTP_SES SION_VARS fUserN ame =$UserName 1;发送cookie到客户端,密码被加密if($Remember=1)setcookie(RememberCookieUserName,$UserNamel,(time()+604800); setcookie(RememberCookiePassword,md5($Passwordl),(time()4-604800);)登录成功,页面转到管理页面head
25、er(re fresh: I ;url=http:/localhost/members/manage.php);exit;)else密码错误,登录失败检查上次登录失败时间是否在5min之内,如果不是,则登录失败次数增加1$datetime=date(d-m-YG:i,strtotime(-5minutes);/获取5分钟以前的时间$timenow=date(d-m-YG:i);获取现在的时间if($rowLastLoginFail$datetime)不在5min 之内登录失败次数加1$query=updateals_signupsetNumLoginFail=NumLoginFail+1 wh
26、ereUserName=$UserName 1;$result=mysql_query($query);修改登录失败时间$query=updateals_signupsetLastLoginFail=$timenowwhereUserName=$UserName 1;$result=mysql_query($query);返回到登录页面header(refresh:5;url=http:/localhost/members/login.php);echo密码错误,请重新输入5秒后自动返回;)else在5min之内,只修改登录失败时间$query=updateals_signupsetLastL
27、oginFail=$timenowwhereUserName=$UserName 1;$result=mysql_query($query);返回到登录页面header(refresh:5;url=http:/localhost/members/login.php);echo密码错误,请重新输入5秒后自动返回;else失败次数超过5次检查时间,如果上次登录失败在半个小时前,则解锁,给用户一次重新登录机会。只有一次机会$datetime=date(d-m-YG:i,strtotime(-30minutes);if($rowLastLoginFail$datetime)半个小时以前$query=u
28、pdateals_signupsetNumLoginFail=5whereUserName=$UserNamel;$result=mysql_query($query);)else半个小时内,则锁定帐户,返回到登录页面,半个小时后解锁$timenow=date(d-m-YG:i);$query=updateals_signupsetLastLoginFail=$timenowwhereUserName=$U serN ame 1;$result=mysql_query($query);header(refresh:5;url=http:/localhost/members/login.php)
29、;echo您的账号目前被锁定,半个小时后自动解锁。请解锁后登录。echo5秒后自动返回;exit;激活码不为0.用户需要激活elseheader(refresh:5;url=http:/localhost/members/activate.php);echo您的账号没有激活,请激活后登陆。5秒后自动跳转到激活页面。;)elseheader(refresh:5;url=http:/localhost/members/login.php);echo您的用户名不正确,请返回重新输入。5秒后自动返回。?PHP注册登录系统forgot.php密码找回找回密码返回登录页面用户名:邮
30、箱:PHP注册登录系统forgot_go.php?php获取用户名,邮箱$UserNamel=$HTTP_POST_VARSUserName;$Email 1=$HTTP_POST_VARS Email;includeconfig.php;查询用户名和邮箱是否存在并且匹配$query=select*fromals_signupwhereUserName=$UserNamerandEmail =$Emaiir;$result=mysql_query($query);$row=mysql_fetch_array($result);if($row)查询成功,则发送密码到用户注册邮箱$to=$Email 1;$subject=密码;$message=您的密码为.$ro w Password;if(mail($to,$subject,$message)header(refresh:5;url=http:/localhost/members/login.php);echo密码已经发送到您的邮箱,请查收5秒后自动跳转到登录页面;exit;else he