目标: 实现用户的登录 、注册 、修改密码、重置密码、添加书签,显示书签,删除书签 等功能

进一步目标: 实现对 用户输入信息的控制,具体表现在 对注册信息、登录信息的 的过滤,具有简单的防sql注入的功能

首先明确结构:把自定义的函数集中放在两个脚本 bm_functions.php 和 output_functions.php 中

完成后的各个界面:

登录界面:

注册界面:

用户首页:

还有 更改密码界面 、 添加书签界面、重置密码界面、以及退出登录界面,不再上图

需要的源代码:

需要源代码的同学可以 去网盘里下载:

链接:链接: https://pan.baidu.com/s/1QLJNy7OuVzpSLZXRLNbZAw 提取码: xvk3

首先肯定是要建立数据库了,建立数据库的shell脚本压缩包里面也有,打开cmd用mysql执行

注意:里面的sql文件为  创建 数据库的shell脚本  需要打开cmd 用 mysql 去执行脚本程序,生成 相应的数据库(具体操作自行百度)

部分源码:(其中诸多的函数都包含在两个自定义的函数库里面了)

login.php


<?phprequire_once('bm_functions.php');do_html_header('');
?><body>
<ul><li><h3>这是我完成的第一个实战项目!</h3></li><li><h3>看起来很简单,实际上手却不简单(包括14个php文件和1个sql文件,近1000行的代码)</h3></li><li><h3>功能包括:用户登录、注册、修改密码、重置密码、添加书签、显示书签、删除书签和一些简单的 用户名、密码、邮件地址、书签URL地址的过滤!</h3></li><li><h3>因为HTML学的浅,CSS还没开始学,所以页面没有美化!</h3></li>
</ul>
<br>
<br><form method="post" action="member.php" ><table bgcolor="#cccccc" align="center" height="200" width="600" ><tr><td colspan="2" align="right"><h2>登录</h2></td><tr><td><b>账  户:</b></td><td><input type="text" name="username" size="30" maxlength="16"/></td><td>(由汉字、数字、字母、下划线构成,6~16个字符)</td></tr><tr><td><b>密  码:</b></td><td><input type="password" name="passwd" size="30" maxlength="16"/></td><td>(由数字、字母、下划线构成,6 ~ 16个字符)</td></tr><tr><td colspan="2" align="center"><input type="submit" value="submit"/></td></tr><tr><td colspan="2"><a href="forgot_form.php">忘记密码 ?</a></td><td colspan="2"><a href="register_form.php">还没有账户 ?</a></td></tr></table>
</form>
</body>

登录界面后台处理程序+用户首页   member.php

<?php//导入函数库
require_once('bm_functions.php');
session_start();$username = $_POST['username'];
$passwd = $_POST['passwd'];if ($username && $passwd) {try  {if(!preg_match("/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]{6,16}+$/u",$username)){throw new Exception('用户名包含非法字符或长度错误,请重新输入!');}if(!preg_match("/^[A-Za-z0-9_]{6,16}+$/u",$passwd)){throw new Exception('密码包含非法字符或长度错误,请重新输入!');}//验证用户信息login($username, $passwd);//将用户信息存入会话$_SESSION['valid_user'] = $username;}catch(Exception $e)  {do_html_header('Problem:');echo $e->getMessage();do_html_url('login.php', '重新登陆');do_html_footer();exit;}
}//登陆成功后
do_html_header('Home');
//验证会话注册信息
check_valid_user();
//输出所有书签
if ($url_array = get_user_urls($_SESSION['valid_user'])) {display_user_urls($url_array);
}
//输出页面底部的快捷菜单
display_user_menu();
?>

注册表单:register_form.php

<?phprequire_once('bm_functions.php');do_html_header('用户注册');?>
<form method="post" action="register_new.php"><table bgcolor="#cccccc" align="center" width="600"><tr><td colspan="2" align="right"><h2>用户注册</h2></td></tr><tr><td><b> 用户名: </b></td><td><input type="text" name="username" size="30" maxlength="30"/></td><td>(由数字、字母、下划线构成,16个字符以内)</td></tr><tr><td><b> 密码: </b></td><td ><input type="password" name="passwd" size="30" maxlength="30"/></td><td>(由数字、字母、下划线构成,6 ~ 16个字符 )</td></tr><tr><td><b> 确认密码: </b</td><td><input type="password" name="passwd2" size="30" maxlength="30"/></td><td>(由数字、字母、下划线构成,6 ~ 16个字符)</td></tr><tr><td><b> Email 地址: </b</td><td><input type="text" name="email" size="30" maxlength="100"/></td><td>(email 有过滤呦!)</td></tr><tr><td colspan=2 align="right"><input type="submit" value="Submit"></td></tr></table>
</form>
<?php
do_html_footer();
?>

注册后台处理程序: register_new.php

<?php//导入自定义的函数库require_once('bm_functions.php');$email=$_POST['email'];$username=$_POST['username'];$passwd=$_POST['passwd'];$passwd2=$_POST['passwd2'];// 开启会话session_start();try   {// 调用函数检查表单是否填写if (!filled_out($_POST)) {throw new Exception('您的表单没有填写完,请继续填写!');}//过滤用户名if(!preg_match("/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]{6,16}+$/u",$username)){throw new Exception('用户名包含非法字符或长度错误,请重新输入!');}// 过滤密码if ($passwd !== $passwd2) {throw new Exception('两次输入的密码不一致,请重新输入!');}if(!preg_match("/^[A-Za-z0-9_]{6,16}+$/u",$passwd)){throw new Exception('密码包含非法字符或长度错误,请重新输入!');}if(!preg_match("/^[A-Za-z0-9_]{6,16}+$/u",$passwd2)){throw new Exception('密码包含非法字符或长度错误,请重新输入!');}// 过滤邮件地址if (!valid_email($email)) {throw new Exception('这不是一个有效的邮件地址,请重新填写!');}// 调用自定义函数向数据库插入注册信息register($username, $email, $passwd);// 保存用户会话信息$_SESSION['valid_user'] = $username;do_html_header('Registration successful');echo '注册成功!开始你的征程吧!';do_html_url('member.php', '重新登陆');}catch (Exception $e) {do_html_header('Problem:');echo $e->getMessage();do_html_footer();exit;}
?>

新手小白做的第一个项目,代码诸多缺漏,不喜勿评。

PHP+Mysql 实现用户登录,注册界面相关推荐

  1. 右侧按钮登录注册html,翻转式用户登录注册界面设计

    这是一款非常实用的翻转式用户登录注册界面设计效果.该用户登录注册界面使用纯CSS3来制作,在用户点击登录和注册两个按钮时,登录和注册界面可以以水平翻转的方式来回切换,效果非常的酷. 制作方法 HTML ...

  2. python-简单用户登录注册界面实现

    用户登录注册界面实现 # 登录注册页面 # 登录注册系统 # 要求:能够实现注册新用户.能够实现老用户登录.能够退出系统. # 1.先打印系统首页 # 2.注册--注册成功,用户名已存在 # 3.登录 ...

  3. Android用户登录注册界面

    用户登录注册界面开发及用户信息管理案例详解 刚开始接触Android编程,这算是我写的第一个简单工程,主要功能有:用户登录.注册.注销.修改密码.记住密码共5个基本操作,其内容涉及到以下几点: 1:B ...

  4. 小编程(三):用户登录注册界面开发及用户信息管理案例代码详解

    用户登录注册界面开发及用户信息管理案例详解 刚开始接触Android编程,这算是我写的第一个简单工程,主要功能有:用户登录.注册.注销.修改密码.记住密码共5个基本操作,其内容涉及到以下几点: 1:B ...

  5. PHP+MySQL实现用户登录注册API接口

    最近在学习PHP后台相关知识,利用PHP连接MySQL数据库实现了一个简单的用户登录注册及修改密码的API接口,接口为标准的json输出,本地验证通过.功能比较简单,不过也自己摸索了挺长时间,期间各种 ...

  6. AndroidStudio实现用户登录注册界面代码(一)

    首先使用Android Studio的布局文件xml实现界面设计 第一步:新建工程项目MyAPP 选择Empty Activity 点击"下一步" 1.在res/layout/ac ...

  7. python实现用户登录注册界面_实现前后端登录注册界面

    本篇博客讲解如何实现前后端的简单登录注册界面,后端代码由node.js实现,主要阐述登录注册时网页工作原理.感兴趣的同学可以参考一下. 注册界面 功能: 判断用户是否输入邮箱,密码,验证密码(前端判断 ...

  8. AndroidStudio实现用户登录注册界面代码(二)

    上次完成了登录界面的实现,今天分享一下注册界面的布局以及代码和MD5的加密. 一.首先创建一个Activity,命名为SecondActivity,当然名字随意命名,我比较懒所以我的基本都是first ...

  9. mysql中完成登陆注册_Flask+MySql实现用户登录注册

    项目使用插件: flask_bootstrap flask_wtf flask_login flask_sqlalchemy 用户模型类: #!/usr/bin/env python # -*- co ...

  10. python注册登录+mysql_Flask+MySql实现用户登录注册

    项目使用插件: flask_bootstrap flask_wtf flask_login flask_sqlalchemy 用户模型类: #!/usr/bin/env python # -*- co ...

最新文章

  1. “万人迷”小冰背后的AI故事
  2. 虚拟化--YESLAB DC Vphere5 上课PDF
  3. Android移动APP开发笔记——最新版Cordova 5.3.1(PhoneGap)搭建开发环境
  4. 多个Storyboard切换
  5. 分布式系统——向zabbix中添加监控项, 以nginx和mysql为例
  6. 有监督学习和无监督学习举例_对比自监督学习
  7. [js] localStorage什么时候过期?
  8. 关于SDN的未来,Linux基金会专访阿里云网络大神
  9. jrebel(破解版)+eclipse +jetty/tomcat 配置,实现热部署
  10. java stream Collectors
  11. web安全day34:一步一步学习Linux防火墙
  12. 计算机系统结构概念,计算机系统结构的基本概念
  13. 告别码公式的痛苦,公式OCR终于来了!
  14. Android Studio User Manual
  15. 德赛西威2311a汽车导航仪不能更新屏保时间的解决方案
  16. HTML+CSS实现按钮手风琴效果 | 青训营笔记
  17. libvirt零知识学习4 —— libvirt源码编译安装(2)
  18. 让数字预失真的故障排除和微调不再难 必备攻略请查收
  19. 区块链去中心化和传统去中心化的区别
  20. 2019年下半年教师资格中学《教育知识与能力》真题与参考答案

热门文章

  1. 二十六、深入HashCode与equals的区别(上篇)
  2. 十九、Seaborn数据可视化
  3. 十一、深入JavaScript的定时器(七)
  4. 直播预告 | AAAI 2022论文解读:基于对比学习的预训练语言模型剪枝压缩
  5. 从ICCV 2021看夜间场景自监督深度估计最新进展
  6. 图神经网络三剑客:GCN、GAT与GraphSAGE
  7. 我是一名普通程序员,通过自己的努力,我的收入涨了3倍!
  8. 每周论文清单:知识图谱,文本匹配,图像翻译,视频对象分割
  9. 【Oracle报错】ORA-01795: 列表中的最大表达式数为 1000 问题解决(使用JDK8的 stream 实现)
  10. Spring定时任务注解@Scheduled+@EnableAsync用法详解(简单说明+应用场景+demo源代码+执行过程分析)