PHP实现一个简陋的注册登录页面
今天来水一篇没有**用的 /滑稽脸,代码简陋臃肿考虑不全,各位大佬轻喷,还望不吝赐教。
首先考虑了一下需要至少四个页面:register.html、register.php、login.html、login.php。register.html是这么写的:
<!DOCTYPE html><html><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><head><title>注册界面</title></head><body><form action="register.php" method="post">用户名:<input type="text" name="name"></input><br />密码:<input type="password" name="password"></input><br /><input type="submit" value="注册"></input></form></body></html>
register.php是这么写的:
<?phpheader("Content-type:text/html;charset=utf-8");$conn=new mysqli('localhost','wy','000000','test');if ($conn->connect_error){die("服务器连接失败!");}$name=$_POST["name"];$password=$_POST["password"];$sql="insert into new_info values('$name',$password)";$res=$conn->query($sql);if(!$res){echo "注册失败!";}else{if($conn->affected_rows>0){sleep(2);header("Location:login.html");exit;}else{echo "注册失败";}}$conn->close();?>
login.html是这么写的:
<!DOCTYPE html><html><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><head><title>登录界面</title></head><body><p>注册成功,请登录!</p><form action="login.php" method="post">用户名:<input type="text" name="name"></input><br />密码:<input type="password" name="password"></input><br /><input type="submit" value="登录"></input></form></body></html>
login.php是这么写的:
<?phpheader("Content-type:text/html;charset=utf-8");$conn=new mysqli('localhost','wy','000000','test');if ($conn->connect_error){die("服务器连接失败!");}$name=$_POST["name"];$password=$_POST["password"];$sql_name="select name from new_info where name='$name'";$res_sql=$conn->query($sql_name);if($conn->affected_rows==0){die("账号或密码有误");}else{$sql_pass="select password from new_info where name='$name'";$res_pass=$conn->query($sql_pass);$row_pass=$res_pass->fetch_row();if($row_pass[0]==$password){echo "登录成功!";}else{echo "账号或密码有误";}}$conn->close();?>
然后来看一下效果:

看一下数据库:
可以看到已经将数据写入数据库。
接着来登录试一下:

换个错误密码试一下:

2018-09-04 问题修正:
1.用户密码加密
2.数据库编码问题
1.用户密码加密
register.php页面:
<?phpheader("Content-type:text/html;charset=utf-8");$conn=new mysqli('192.168.134.128','root','123456','test');if ($conn->connect_error){die("服务器连接失败!");}$name=$_POST["name"];$password=$_POST["password"];$password=md5($password); //将用户输入的密码进行md5加密$sql="insert into test values('$name','$password')";$res=$conn->query($sql);if(!$res){echo "注册失败!";}else{if($conn->affected_rows>0){sleep(2);header("Location:login.html");}else{echo "注册失败";}}$conn->close();?>
login.php页面:
<?phpheader("Content-type:text/html;charset=utf-8");$conn=new mysqli('192.168.134.128','root','123456','test');if ($conn->connect_error){die("服务器连接失败!");}$name=$_POST["name"];$password=$_POST["password"];$password=md5($password); //对用户输入的密码进行md5加密$sql_name="select name from test where name='$name'";$res_sql=$conn->query($sql_name);if($conn->affected_rows==0){die("账号或密码有误!");}else{$sql_pass="select password from test where name='$name'";$res_pass=$conn->query($sql_pass);$row_pass=$res_pass->fetch_row();if($row_pass[0]==$password){ //将用户输入的加密密码与数据库密码进行对比echo "登录成功!";}else{echo "账号或密码有误";}}$conn->close();?>
2.数据库编码问题
在数据库执行set names utf8命令,将数据库编码改为utf8。
这样就可以使用中文名注册登录。
2018-09-06 问题修正:
用户注册或者登录时输入为空的问题
register.php页面:
<?phpheader("Content-type:text/html;charset=utf-8");$conn=new mysqli('192.168.134.128','root','123456','test');if ($conn->connect_error){die("服务器连接失败!");}$name=$_POST["name"];$password=$_POST["password"];if(empty($name) || empty($password)){ //判断注册时账号或密码是否为空die('账号或密码不能为空!');}else{$password=md5($password);$sql="insert into test values('$name','$password')";$res=$conn->query($sql);if(!$res){echo "注册失败!";}else{if($conn->affected_rows>0){sleep(2);header("Location:login.html");}else{echo "注册失败";}}$conn->close();}?>
login.php页面:
<?phpheader("Content-type:text/html;charset=utf-8");$conn=new mysqli('192.168.134.128','root','123456','test');if ($conn->connect_error){die("服务器连接失败!");}$name=$_POST["name"];$password=$_POST["password"];if(empty($name) || empty($password)){ //判断登陆时账号或密码是否为空die('账号或密码不能为空!');}else{$password=md5($password);//var_dump($password);$sql_name="select name from test where name='$name'";$res_sql=$conn->query($sql_name);if($conn->affected_rows==0){die("账号或密码有误!");}else{$sql_pass="select password from test where name='$name'";$res_pass=$conn->query($sql_pass);$row_pass=$res_pass->fetch_row();if($row_pass[0]==$password){echo "登录成功!";}else{echo "账号或密码有误";}}$conn->close();}?>
代码臃肿,还望见谅。