目标: 实现用户的登录 、注册 、修改密码、重置密码、添加书签,显示书签,删除书签 等功能
进一步目标: 实现对 用户输入信息的控制,具体表现在 对注册信息、登录信息的 的过滤,具有简单的防sql注入的功能
首先明确结构:把自定义的函数集中放在两个脚本 bm_functions.php 和 output_functions.php 中
完成后的各个界面:
登录界面:
注册界面:
用户首页:
还有 更改密码界面 、 添加书签界面、重置密码界面、以及退出登录界面,不再上图
需要的源代码:
需要源代码的同学可以 去网盘里下载:
链接:链接: https://pan.baidu/s/1QLJNy7OuVzpSLZXRLNbZAw 提取码: xvk3
首先肯定是要建立数据库了,建立数据库的shell脚本压缩包里面也有,打开cmd用mysql执行
注意:里面的sql文件为 创建 数据库的shell脚本 需要打开cmd 用 mysql 去执行脚本程序,生成 相应的数据库(具体操作自行百度)
部分源码:(其中诸多的函数都包含在两个自定义的函数库里面了)
login.php
<?php
require_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
<?php
require_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 实现用户登录,注册界面
发布评论