php操作数据库之通过步骤做一个用户注册

我们做一个最简单的注册页面。注册页面中有三个参数:

    1.用户名

    2.密码

    3.重复密码

用户写好三个参数后,点击提交的时候向connect.php页面中传入POST记录。

我们可以把POST记录处理后写入到MySQL数据库中,即完成了用户注。

代码如下:

<form action="connect.php" method="post">
    用户名:<input type="text" name="username"><br />
    密码:<input type="password" name="password"><br />
    重复密码:<input type="password" name="repassword"><br />
    <input type="submit" value="提交">
</form>

为了更快的表现我们的代码界面没有进行美化。以最快的速度带大家完成用户注册。

一、 判断重复密码

由于有重复密码,如果用户两次输入的密码不一致也就是有没有进行下一步的任何意义。

在网页中很多地方还是使用到了重复密码。因为,害怕的是用户产生手误。将密码填写出错。

用户在输入密码的时候可能在左右两边多打两个空格。因此,我们会使用trim将密码和重复密码的两边去掉空格。

if(trim($_POST['password']) != trim($_POST['repassword'])){
    exit('两次密码不一致,请返回上一页');
}

二、 准备好写入的数据

我们需要把用户的输入数据和隐藏的数据都写入到数据库。

可见数据有:

变量说明
$_POST['username']用户名
$_POST['password']密码

我们需要把用户名去掉两边的空格,这样避免输入不必要的这些信息。

在mysql这一章节我们讲过,用户的密码不要让包括公司内部人员可见。保证密码是不可逆向的。在初级阶段大家学习一下MD5即可。以后我们再教大家其他的加密方式。

不可见数据有:

变量说明
$time用户的注册时间
$_SERVER['REMOTE_ADDR']用户的注册IP

    
    1.time返回的unix时间戳

    2.REMOTE_ADDR返回的是IP地址,我们可以用ip2long将其转为整型存储。

$username = trim($_POST['username']);
$password = md5(trim($_POST['password']));
$time = time();
$ip = ip2long($_SERVER['REMOTE_ADDR']);

三、连接数据库、判断错误、选择库和字符集

1.我们使用mysqli_connect连接到数据库服务器。

2.如果有错误,使用mysqli_errno得到错误号

3.如何时存在错误mysqli_error打印出所有的错误,并且退出程序执行

4.选择数据库并且设置字符集为utf8.

//连接数据库
$conn = mysqli_connect('localhost','root','liwenkaihaha');
//如果有错误,存在错误号
if(mysqli_errno($conn)){
    echo mysqli_error($conn);
    exit;
}
mysqli_select_db($conn,'user');
mysqli_set_charset($conn,'utf8');

四、组合SQL语句

我们需要把得到的信息写入到数据库里面去,用户名、密码、创建时间、IP我们都得到了。

将对应的变量插入到SQL语句中即可。组合出来的SQL语句如下:

$sql = "insert into user(username,password,createtime,createip) values('" . $username . "','" . $password . "','" . $time . "','" . $ip . "')";

而我们的创建表的语句如下:

CREATE TABLE IF NOT EXISTS user (
id int(11) NOT NULL,
username varchar(30) NOT NULL,
password char(32) NOT NULL,
createtime int(11) NOT NULL,
createip int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

表的格式(字段对应说明):

idusernamepasswordcreatetimecreateip
用户编号用户名密码创建时间创建IP

五、发送语句,判断状态

mysqli_query我们在上面说过,需要传入两个参数:

连接的资源,在这里对应的变量是$conn。

发送的SQL语句。在上面已经准备好了$sql。

SQL语句可以通过mysqli_query发送给MySQL服务器。发送成功$result则为true。否则为false。

成功的话,我们就可以提示用户注册成功啦。

有些情况下,可能还需要使用到mysqli_insert_id()。在这里把自增的主键ID打印出来。

大家记住这个知识点,避免以后需要的时候忘记了。

mysqli_insert_id应用场景:新加的一个行的数据。我们需要得到自动增长的ID值,将这个ID值插入到另外一个表里面去时。就需要用到这个函数。

$result = mysqli_query($conn,$sql);
if($result){
    echo '注册成功';
}else{
    echo '注册失败';
}
echo '当前用户插入的ID为'.mysqli_insert_id($conn);

五、关闭数据库连接

将资源变量传到到mysqli_close这个函数里面即可。

mysqli_close($conn);

用户注册的基本实现代码就写完了。我们上面讲的都是代码片段。

我们整实现的connect.php代码如下:

<?php

if (trim($_POST['password']) != trim($_POST['repassword'])) {

   exit('两次密码不一致,请返回上一页');

}

$username = trim($_POST['username']);

$password = md5(trim($_POST['password']));

$time = time();

$ip = $_SERVER['REMOTE_ADDR'];

$conn = mysqli_connect('localhost', 'root', 'liwenkaihaha');

//如果有错误,存在错误号
if (mysqli_errno($conn)) {

   echo mysqli_error($conn);

   exit;
}

mysqli_select_db($conn, 'book');

mysqli_set_charset($conn, 'utf8');

$sql = "insert into user(username,password,createtime,createip) values('" . $username . "','" . $password . "','" . $time . "','" . $ip . "')";

$result = mysqli_query($conn, $sql);

if ($result) {
   echo '成功';
} else {
   echo '失败';

}

echo '当前用户插入的ID为' . mysqli_insert_id($conn);

mysqli_close($conn);

?>


继续学习
||
<?php if (trim($_POST['password']) != trim($_POST['repassword'])) { exit('两次密码不一致,请返回上一页'); } $username = trim($_POST['username']); $password = md5(trim($_POST['password'])); $time = time(); $ip = $_SERVER['REMOTE_ADDR']; $conn = mysqli_connect('localhost', 'root', 'liwenkaihaha'); //如果有错误,存在错误号 if (mysqli_errno($conn)) { echo mysqli_error($conn); exit; } mysqli_select_db($conn, 'book'); mysqli_set_charset($conn, 'utf8'); $sql = "insert into user(username,password,createtime,createip) values('" . $username . "','" . $password . "','" . $time . "','" . $ip . "')"; $result = mysqli_query($conn, $sql); if ($result) { echo '成功'; } else { echo '失败'; } echo '当前用户插入的ID为' . mysqli_insert_id($conn); mysqli_close($conn); ?>
提交重置代码
章节
笔记
提问
课件
反馈
捐赠

php入门教程之一周学会PHP

  • 推荐课程
  • 评论
  • 问答
  • 笔记
  • 课件下载
dream'于皓

dream'于皓

创建的表有错,ID没有插入值,ID应该自动增加。还有ip的数据类型,因为我打印$sql出来ip为 ::1 ,不是整数,我这里也有错。如果有错最好打印出来看看

3年前    添加回复 1

回复
leon

leon

mysqli_select_db($conn, 'book'); mysqli_set_charset($conn, 'utf8'); 这两个参数顺序都写反了

4年前    添加回复 1

回复
陈先生

陈先生

若是mysql user表的createtime 类型设置为 datatime $time 则要为$time = date('y-m-d h:i:s',time()); 不然写不进去 还有若是写不进去 又没报错 就要加 echo mysqli_error($conn); 手动打印出来看看 然后度娘啊 哈哈

1年前    添加回复 0

回复
Rukawa hug faith

Rukawa hug faith

为什么我点击提交后直接下载connect.php文件了

3年前    添加回复 0

Hide on bush

header 写错会一直下载文件的

Hide on bush · 2018-11-29 14:11
回复
phpcn_u93400

phpcn_u93400

不用驱动吗?

3年前    添加回复 0

回复
phpcn_u84239

phpcn_u84239

CREATE TABLE IF NOT EXISTS user ( id int(11) NOT NULL AUTO_INCREMENT, username varchar(30) NOT NULL, password char(32) NOT NULL, createtime int(11) NOT NULL, createip int(11) DEFAULT NULL, PRIM

3年前    添加回复 0

回复
phpcn_u84239

phpcn_u84239

CREATE TABLE IF NOT EXISTS user ( id int(11) NOT NULL AUTO_INCREMENT,//id++ username varchar(30) NOT NULL, password char(32) NOT NULL, createtime int(11) NOT NULL, createip int(11) DEFAULT NULL

3年前    添加回复 0

回复
luoshui

luoshui

不能写入数据库。求解

4年前    添加回复 0

回复
phpcn_u28635

phpcn_u28635

mysqli_select_db($conn, 'book'); mysqli_set_charset($conn, 'utf8'); 这参数没有错!!!

4年前    添加回复 0

回复
phpcn_bobo

phpcn_bobo

没写错。经过我的实验,是没错的。我原来是搜索了一下,别的地方是错的

4年前    添加回复 0

回复
phpcn_bobo

phpcn_bobo

@leon 说的对,确实参数顺序写错了。希望老师们更正下

4年前    添加回复 0

回复

报错,希望1是字符串

[最新 明日边缘 的回答]可以把你的sql语句放到mysql客户端命令行下执行一下,应该可以查到错误的!希望我这个小白能帮到您!

时间:2年前

为什么插入的值还要拼接?

[最新 NO1 的回答]我知道,可是用了拼接我就不明白了

时间:3年前

这个问题有点奇怪?好像是获取不到时间和ip

[最新 寻觅 beyond 的回答]然后在插入的时候,将时间用引号括起来,因为时间以字符串的形式存储,你的问题中的$time和ip都应该用括号括起来才对

时间:3年前

请问,为什么我的每一个注册用户的ip地址都显示是0.0.0.0

[最新 Peter_Zhu 的回答]如果你是Mac电脑,那么本地主机IP就是0.0.0.0

时间:3年前

代码没问题,为什么是失败呢 " 失败当前用户插入的ID为0"

[最新 小崔 的回答]看看数据库里面是不是已经有了那条记录了,不能重复的

时间:3年前

我的总是插入不了数据,不知哪里出错了

[最新 Ftd2014 的回答]老师,我找到错误点了,低级错误,在 $sql = "insert into user(username, password, createtime, createip) values('" . $username ."', '" . $password . "', '" . $time . "', '" . $time . "', '" . $ip . "')"; 这句多写了个 '" . $time . "' ,谢谢老师!

时间:4年前

mysqli_query()这个函数是指什么呢?

[最新 数据分析师 的回答]mysqli_query()这个函数是指什么呢?-PHP中文网问答-mysqli_query()这个函数是指什么呢?-PHP中文网问答围观一下哦,学习一下。

时间:4年前

CREATE TABLE IF NOT EXISTS user ( id int(11) NOT NULL AUTO_INCREMENT primary key, username varchar(30) NOT NULL, password char(32) NOT NULL, createtime int(61) NOT NULL, createip varchar(61) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1年前 0

吒哪

吒哪

1.SQL语句可以通过mysqli_query发送给MySQL服务器。发送成功$result则为true。否则为false。 2.mysqli_insert_id应用场景:新加的一个行的数据。我们需要得到自动增长的ID值,将这个ID值插入到另外一个表里面去时。就需要用到这个函数。

1年前 0

连锦鹏

连锦鹏

CREATE TABLE user ( id int(11) NOT NULL AUTO_INCREMENT, nafnleiks varchar(50), leiklysing varchar(3000), prentadi varchar(1500), notkunarheimildir varchar(1000), upplysingar varchar(1000), ymislegt varchar(500), PRIMARY KEY (id));

2年前 0

城南花已开

城南花已开

php操作数据库之通过步骤做一个用户注册 <?php //通过trim函数将字符串前后两端多余字符除去,判断两次密码输入是否一致 if(trim($_POST['password'])!=trim($_POST['repassword'])){ echo '两次密码输入不一致,请重新注册'; } //获取用户数据 $username=trim($_POST['username']); $password=trim($_POST['password']); //获取注册时间,为unix时间戳 $time=time(); // 获取用户注册ip $ip=$_SERVER['REMOTE_ADDR']; // 用mysqli_connect连接数据库 // mysqli_connect('数据库主机 localhost' , '数据库服务器登录名' , '数据库服务器登录密码' ,'数据库的名称' , '数据库服务器端口不填默认3306'); $con=mysqli_connect('localhost','root','root','php'); // 如果有错误,使用mysqli_errno得到错误号 // 如何时存在错误mysqli_error打印出所有的错误,并且退出程序执行 if(mysqli_errno($con)){ echo 'Could not connect'.mysqli_error($con); exit; } //设置字符集 mysqli_set_charset($con,'utf8'); //选择数据库 mysqli_select_db($con,'php'); // 准备sql语句,组合sql语句 $sql="insert into user(username,password,createtime,createip)values('$username','$password','$time','$ip')"; // 发送sql语句,将sql语句发送至MySQL服务器 $result=mysqli_query($con,$sql); // 判断发送sql语句是否成功,成功返回true if($result){ echo '注册成功'.'<br/>'; }else{ echo '注册失败'.'<br/>'; } echo '当前注册ID为:'.mysqli_insert_id($con); // 关闭数据库 mysqli_close($con); ?>

2年前 0

phpcn_u111636

phpcn_u111636

用户注册页的步骤: 1、先建立数据库。 2、在数据库基础上建立数据表。 3、建立表单页。 4、建立数据库连接页。

3年前 0

课件暂不提供下载,工作人员正在整理中,后期请多关注该课程~