AI智能
改变未来

php实现登录和注册功能

版权声明:本文为博主原创文章,转载请注明出处。转自 http://blog.csdn.net/momentyol

PHP实现注册登录功能完整教程及代码 (含验证码) 只是为实现功能,所以页面并没有美化,本教程包含注册登录功能的完整流程及代码:文件列表如图:
注册html代码:[html]viewplaincopyprint?

  1. <!DOCTYPEHTML>
  2. <html>
  3. <head>
  4. <metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
  5. <linkrel="stylesheet"type="text/css"href="css/register.css"/>
  6. <title>注册界面</title>
  7. </head>
  8. <body>
  9. <spanstyle="white-space:pre"></span><formname="form1"method="post"action="add.php">
  10. <spanstyle="white-space:pre"></span><div>
  11. <spanstyle="white-space:pre"></span><ul>
  12. <spanstyle="white-space:pre"></span><li><inputname="nickname"type="text"placeholder="昵称:数字、字母、下划线"/></li>
  13. <spanstyle="white-space:pre"></span><li><inputname="studentid"type="text"placeholder="学号:9位纯数字"/></li>
  14. <spanstyle="white-space:pre"></span><li><inputname="password"type="password"placeholder="密码:至少6位"/></li>
  15. <spanstyle="white-space:pre"></span><li><inputname="confirm"type="password"placeholder="确认密码"/></li>
  16. <spanstyle="white-space:pre"></span><li><inputname="emailaddress"type="text"placeholder="常用邮箱"/></li>
  17. <spanstyle="white-space:pre"></span><li><inputname="verification"type="text"placeholder="输入验证码"/></li>
  18. <spanstyle="white-space:pre"></span></ul>
  19. <spanstyle="white-space:pre"></span><divid="text11"><imgname="validate"onclick="validate.src+=\’?\’+Math.random();"
  20. <spanstyle="white-space:pre"></span>src="verification.php"alt="点击刷新">
  21. <spanstyle="white-space:pre"></span></div><spanstyle="white-space:pre"></span>
  22. <spanstyle="white-space:pre"></span><inputtype="reset"value="重置"/>
  23. <spanstyle="white-space:pre"></span><inputtype="submit"value="确定"/>
  24. <spanstyle="white-space:pre"></span></div>
  25. <spanstyle="white-space:pre"></span>
  26. <spanstyle="white-space:pre"></span></form><spanstyle="white-space:pre"></span>
  27. </div>
  28. </body>
  29. </html>

效果图如下:
可以看出生成了验证码,且验证码可以点击刷新,刷新页面时也可以刷新验证码文件verification.php:[php]viewplaincopyprint?

  1. <?php
  2. session_start();
  3. $img=imagecreatetruecolor(100,35);
  4. $black=imagecolorallocate($img,0x00,0x00,0x00);
  5. $green=imagecolorallocate($img,0x00,0xFF,0x00);
  6. $white=imagecolorallocate($img,0xFF,0xFF,0xFF);
  7. imagefill($img,0,0,$white);
  8. //生成随机的验证码
  9. $code=\’\’;
  10. for($i=0;$i<4;$i++){
  11. $code.=rand(0,9);
  12. }
  13. $_SESSION[\’rand\’]=$code;//存储验证码
  14. imagestring($img,30,28,10,$code,$black);
  15. //加入噪点干扰
  16. for($i=0;$i<200;$i++){
  17. imagesetpixel($img,rand(0,100),rand(0,100),$black);
  18. imagesetpixel($img,rand(0,100),rand(0,100),$green);
  19. }
  20. //输出验证码
  21. header("content-type:image/png");
  22. imagepng($img);
  23. imagedestroy($img);
  24. ?>

生成4位随机数字并加入噪点干扰,防止机器识别。并用session存储生成的数字,用于后边验证。

php代码通过接收前台数据进行验证先写php的配置文件代码:[php]viewplaincopyprint?

  1. <?php
  2. header("Content-type:text/html;charset=utf8_bin");
  3. define(\’HOST\’,\’127.0.0.1\’);
  4. define(\’USERNAME\’,\’root\’);
  5. define(\’PASSWORD\’,\’root\’);
  6. //连库
  7. $con=mysql_connect(HOST,USERNAME,PASSWORD);
  8. //选库
  9. mysql_select_db(\’rrf\’);
  10. //字符集
  11. mysql_query(\’setnamesutf8_bin\’);
  12. ?>

根据本机的数据库密码进行配置 命名为connect.php

[php]viewplaincopyprint?

  1. <?php
  2. //把传递过来的信息入库;
  3. session_start();
  4. //用于核对验证码
  5. require_once(\’connect.php\’);
  6. //print_r($_POST);
  7. $nickname=$_POST["nickname"];
  8. $studentid=$_POST[\’studentid\’];
  9. $password=$_POST[\’password\’];
  10. $confirm=$_POST[\’confirm\’];
  11. $emailaddress=$_POST[\’emailaddress\’];
  12. $verification=$_POST["verification"];
  13. $sql="select*fromstudent_informationwherestudentid=\’$studentid\’";
  14. $today=date(\’Y-m-dH:i:s\’);//获取时间作为注册时间
  15. $query=mysql_query($sql);
  16. $rows=mysql_num_rows($query);
  17. //验证填写信息是否合乎规范
  18. if(empty($nickname)||empty($studentid)||empty($password)||empty($confirm)||empty($emailaddress)||empty($emailaddress)){
  19. echo"<script>alert(\’信息不能为空!重新填写\’);window.location.href=\’register.html\'</script>";
  20. }elseif((strlen($nickname)<4)||(!preg_match(\’/^\\w+$/i\’,$nickname))){
  21. echo"<script>alert(\’用户名至少4位且不含非法字符!重新填写\’);window.location.href=\’register.html\'</script>";
  22. //判断用户名长度
  23. }elseif((strlen($studentid)!=9)||(!(ctype_digit($studentid)))){
  24. echo"<script>alert(\’学号为9位纯数字!重新填写\’);window.location.href=\’register.html\'</script>";
  25. //判断学号是否填写正确
  26. }elseif($rows>0){
  27. echo"<script>alert(\’此学号已经注册!重新填写\’);window.location.href=\’register.html\'</script>";
  28. //学号不能重复
  29. }elseif(strlen($password)<6){
  30. echo"<script>alert(\’密码至少6位!重新填写\’);window.location.href=\’register.html\'</script>";
  31. //判断密码长度
  32. }elseif($password!=$confirm){
  33. echo"<script>alert(\’两次密码不相同!重新填写\’);window.location.href=\’register.html\'</script>";
  34. //检测两次输入密码是否相同
  35. }elseif(!preg_match(\’/^[\\w\\.]+@\\w+\\.\\w+$/i\’,$emailaddress)){
  36. echo"<script>alert(\’邮箱不合法!重新填写\’);window.location.href=\’register.html\'</script>";
  37. //判断邮箱格式是否合法
  38. }//elseif($verification!=$_SESSION[\’$code\’]){
  39. elseif(($_SESSION[\’rand\’])!=($verification)){
  40. echo"<script>alert(\’验证码错误!重新填写\’);window.location.href=\’register.html\'</script>";
  41. //判断验证码是否填写正确
  42. }else{
  43. $insertsql="insertintostudent_information(nickname,studentid,password,confirm,emailaddress,registrationtime,logintime)values(\’$nickname\’,\’$studentid\’,\’$password\’,\’$confirm\’,\’$emailaddress\’,\’$today\’,\’$today\’)";
  44. //插入数据库
  45. if(!(mysql_query($insertsql))){
  46. echomysql_error();
  47. }else{
  48. echo"<script>alert(\’注册成功!去登陆\’);window.location.href=\’login.html\'</script>";
  49. }
  50. }
  51. ?>

session主要用来核对验证码,在验证码文件里用session存储验证码数字,在这里核对是否填写正确。require 包含配置链接文件post接收数据,并存储在变量中。
用正则表达式验证填写的信息是否合乎规范以及是否已经存在用户,若所有信息核对无误,写入数据库注释已经很清楚,不做赘述
登录界面代码login.html:[html]viewplaincopyprint?

  1. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html>
  3. <head>
  4. <title>登陆</title>
  5. <metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
  6. </head>
  7. <formaction="login.php"method="post">
  8. <div>
  9. <ul>
  10. <li><inputname="nickname"type="text"placeholder="昵称"/></li>
  11. <li><inputname="studentid"type="text"placeholder="学号"/></li>
  12. <li><inputname="password"type="password"placeholder="密码"/></li>
  13. <li><inputname="verification"type="text"placeholder="验证码"/></li>
  14. <inputname="reset"type="reset"value="重置"/>
  15. <inputname="submit"type="button"value="登录"/>
  16. </ul>
  17. <divid="text11"><imgname="validate"onclick="validate.src+=\’?\’+Math.random();"
  18. src="verification.php"alt="点击刷新">
  19. </div>
  20. </div>
  21. </form>
  22. </body>
  23. </html>

效果图如下:

验证码效果和上边相同,不做赘述接下来是登录验证php代码(login.php):[php]viewplaincopyprint?

  1. <?php
  2. session_start();
  3. require_once(\’connect.php\’);//连接数据库
  4. $nickname=$_POST[\’nickname\’];
  5. $password=$_POST[\’password\’];
  6. $verification=$_POST[\’verification\’];
  7. $studentid=$_POST[\’studentid\’];
  8. $today=date(\’Y-m-dH:i:s\’);//获取时间作为本次登录时间
  9. $ip=$_SERVER["REMOTE_ADDR"];//获取登陆IP地址
  10. $sql="select*fromstudent_informationwherenickname=\'{$nickname}\’andpassword=\'{$password}\’";
  11. $rst=mysql_query($sql);
  12. $row=mysql_fetch_assoc($rst);
  13. //验证登录信息是否正确
  14. if(($_SESSION[\’rand\’])!=($verification)){
  15. echo"<script>alert(\’验证码错误!重新填写\’);window.location.href=\’login.html\'</script>";
  16. //判断验证码是否填写正确
  17. }elseif($row){
  18. setcookie(\’niacname\’,$nickname,time()+10,\’/\’);
  19. setcookie(\’studentid\’,$studentid,time()+10,\’/\’);
  20. $up="UPDATEstudent_informationSETlogintime=\’$today\’WHEREstudentid=\’$studentid\’";
  21. $ip="UPDATEstudent_informationSETip=\’$ip\’WHEREstudentid=\’$studentid\’";
  22. if(mysql_query($up)){
  23. }
  24. if(mysql_query($ip)){
  25. }
  26. //更新登录时间及ip
  27. echo"<script>alert(\’登陆成功!欢迎\’);window.location.href=\’content.php\'</script>";
  28. }else{
  29. echo"<script>alert(\’登陆信息有误!重新填写\’);window.location.href=\’login.html\'</script>";
  30. }
  31. ?>

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » php实现登录和注册功能