1、创建用户表
create table `user`(
`id` int unsigned primary key auto_increment,
`username` varchar(10) not null unique,
`password` char(32) not null,
`email` varchar(40) not null
)charset=utf8;
2、编写用户注册页面(register.html)
判断密码的两次输入是否一致,可以使用JavaScript实现。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>用户注册</title>
</head>
<body>
<form action="./register.php" method="post">
<table>
<tr><th>用户名</th><td><input type="text" name="username" placeholder="请输入用户名"/></td></tr>
<tr><th>邮箱</th><td><input type="text" name="email" placeholder="请输入邮箱"/></td></tr>
<tr><th>密码</th><td><input type="password" name="password" placeholder="请输入密码"/></td></tr>
<tr><th>确认密码</th><td><input type="password" placeholder="请再次输入密码"/></td></tr>
<tr><td colspan="2">
<input type="submit" value="提交注册"/>
<input type="reset" value="重新填写"/>
</td></tr>
</table>
</form>
</body>
</html>
3、编写用户注册功能(register.php)。接收表单数据,将表单数据保存到数据库中
<?php
header('Content-Type:text/html; charset=utf-8');
require '../chapter3/public_function.php';
/*
//获取表单数据,注册人的IP地址、浏览器和请求来源
echo '<h2>表单数据:</h2>';
echo '<p>用户名:'.$_POST['username'].'</p>';
echo '<p>密码:'.$_POST['password'].'</p>';
echo '<p>邮箱:'.$_POST['email'].'</p>';
echo '<p>IP地址:'.$_SERVER['REMOTE_ADDR'].'</p>';
echo '<p>浏览器环境:'.$_SERVER['HTTP_USER_AGENT'].'</p>';
echo '<p>请求来源:'.$_SERVER['HTTP_REFERER'].'</p>';
*/
//连接数据库,设置字符集,选择数据库
dbInt();
//接收表单数据
$username=$_POST['username'];
$password=$_POST['password'];
$email=$_POST['email'];
//过滤用户输入数据
$username=safeHandle($username);
$email=safeHandle($email);
//判断用户名是否已经存在
$sql="select `id` from `user` where `username`='$username'";
$res=query($sql);
$res=mysql_fetch_row($res);
if(!empty($res)){
//用户名已存在,不允许注册,停止运行程序
die('用户名已存在,请更换用户名。');
}else{
//用户名不存在,可以注册。
$password=md5($password);//使用MD5增强密码安全性
//拼接插入数据的SQL语句
$sql="insert into `user` (`username`,`password`,`email`) values ('$username','$password','$email')";
$res=query($sql);
echo $username.',您已成功注册。';
}
4、知识点
(1)HTTP协议
(2)HTTP请求方式
GET方式(URL):
<a href="#"?参数名=参数值&参数名=参数值></a>
“?”后的内容就是参数信息,参数由参数名和参数值组成,多个参数之间用“&”分隔。
对普通用户而言,使用GET方式提交的数据是可见的。
POST方式(Web表单):
<form method="post">
......
</form>
当省略method属性时,表单默认以GET方式提交。
对普通用户而言,使用POST方式提交的数据是不可见的。
GET方式传递数据大小受限,POST方式传递数据大小理论上不受限。
POST请求方式比GET请求方式安全,POST方式传递的参数隐藏在实体内容中,GET方式传递的参数会在URL中明文显示。
(3)获取表单数据
通过GET方式传递的数据会保存在$_GET数组中,通过POST方式传递的数据会保存在$_POST数组中。
判断是否有表单通过POST方式提交:
if(empty($_POST)){//是空数组,说明没有表单提交}else{//非空数组,说明有表单提交}
查看通过表单提交的数据:
var_dump($_POST);
查看某字段的值:
echo $_POST['字段'];
(4)超全局变量
$_GET | 获取由HTTP GET方式提交至PHP脚本的变量 |
$_POST | 获取由HTTP POST方式提交至PHP脚本的变量 |
$_FILES | 获取由HTTP POST文件上传方式提交至PHP脚本的变量 |
$_SERVER | 获取当前服务器的信息,以及HTTP的请求信息 |
$_COOKIE | 获取由HTTP提交至PHP脚本的Cookie信息 |
$_SESSION | 获取或设置用户的会话信息 |
$_REQUEST | 获取由GET、POST和COOKIE方式提交至PHP脚本的变量 |
(5)获取注册人的IP地址、浏览器和请求来源
IP地址:$_SERVER['REMOTE_ADDR'];
浏览器环境:$_SERVER['HTTP_USER_AGENT'];
请求来源:$_SERVER['HTTP_REFERER'];