PHP实践项目【1】:注册登录页面
在我们这个项目里面,一共用到了5个php文件,他们分别是:
login.php 登录页面
logincheck.php 登录检测php文件
register.php 新用户注册页面
regcheck.php 新用户注册检验及插入数据库处理php文件
index.php 登录成功后的显示页面
首先我们来看login.php页面
<!DOCTYPE html>
<html>
<head>
<title>用户登录页面</title>
<meta charset="utf-8" />
<style>
h1{
/*设置标题的上边距为50px*/
margin-top:50px;
/*设置标题居中显示*/
text-align:center;
}
div{
/*设置这个div的宽度*/
width:300px;
/*设置这个div的高度*/
height:150px;
/*设置这个div的背景颜色*/
background:#f0f0f0;
/*设置上边距为150%,左右边距为自适应(居中显示)*/
margin:50px auto;
/*加大一下内边距,看起来不那么挤,也可以理解为内容在容器里的缩进*/
padding:20px;
/*设置文本居中显示*/
text-align:center;
}
table,td{
/*设置表格居中显示*/
margin:auto;
/*设置表格内边距,看起来不那么挤*/
padding:5px;
}
</style>
</head>
<body>
<!-- -->
<!-- 登录界面 login.php-->
<h1>用户登录</h1>
<div>
<!-- 创建一个表单,这个表单将会把内容提交给logincheck.php页面,提交方法为post -->
<form action="logincheck.php" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="username" maxLength="6"></td>
</tr>
<tr>
<td>密 码:</td>
<td><input type="password" name="userpwd" maxLength="6"></td>
</tr>
<tr>
<td><input type="submit" name="submit" value="登陆" > </td>
<td><a href="register.php">注册</a></td>
</tr>
</table>
</form>
</div>
</body>
</html>
logincheck.php 文件:
<?php
//登录处理界面 logincheck.php
//判断是否按下登录按钮
if(isset($_POST["submit"]) && $_POST["submit"] == "登陆")
{
//将用户名和密码存入变量中,供后续使用
$user = $_POST["username"];
$pwd = $_POST["userpwd"];
if($user == "" || $pwd == "")
{
//用户名或者密码其中之一为空,则弹出对话框,确定后返回当前页的上一页
echo "<script>alert('请输入用户名或密码!'); history.go(-1);</script>";
}
else
{ //确认用户名密码不为空,则连接数据库
$conn = mysqli_connect("localhost","root","root","mydb");
if(mysqli_errno($conn)){
echo "连接失败:" . mysqli_errno($conn);
exit;
}
//查询账号密码是否正确
$sql = "select username,userpwd from user where username = '$user' and userpwd = '$pwd'";
//返回查询结果
$result = mysqli_query($conn,$sql);
//查询结果的条数
$num = mysqli_num_rows($result);
//如果查询结果的条数不为0
if($num)
{
echo "<script>alert('成功登录'); window.location.href='index.php';</script>";
}
else
{
echo "<script>alert('用户名或密码不正确!');history.go(-1);</script>";
}
}
}
else
{
echo "<script>alert('提交未成功!');</script>";
} ?>
register.php 页面:
<!DOCTYPE html>
<html>
<head>
<title>用户登录页面</title>
<meta charset="utf-8" />
<style>
h1{
/*设置标题的上边距为50px*/
margin-top:50px;
/*设置标题居中显示*/
text-align:center;
}
div{
/*设置这个div的宽度*/
width:300px;
/*设置这个div的高度*/
height:150px;
/*设置这个div的背景颜色*/
background:#f0f0f0;
/*设置上边距为150%,左右边距为自适应(居中显示)*/
margin:50px auto;
/*加大一下内边距,看起来不那么挤,也可以理解为内容在容器里的缩进*/
padding:20px;
/*设置文本居中显示*/
text-align:center;
}
table,td{
/*设置表格居中显示*/
margin:auto;
/*设置表格内边距,看起来不那么挤*/
padding:5px;
}
</style>
</head>
<body>
<!-- -->
<!-- 注册页面 register.php-->
<h1>用户注册</h1>
<div>
<!-- 创建一个表单,这个表单将会把内容提交给regcheck.php页面,提交方法为post -->
<form action="regcheck.php" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="username" maxLength="12"></td>
</tr>
<tr>
<td>密 码:</td>
<td><input type="password" name="userpwd" maxLength="12"></td>
</tr>
<tr>
<td>确认密码:</td>
<td><input type="password" name="confirm" maxLength="12"></td>
</tr>
</table>
<input type="submit" name="register" value="注册" >
</form>
</div>
</body>
</html>
regcheck.php页面
<?php
//注册处理界面 regcheck.php //使用 isset 函数 检测变量是否已设置 并且非 NULL
if(isset($_POST["register"]) && $_POST["register"] == "注册")
{
//将 register.php 页面中表单内容赋值给变量
$user = $_POST["username"];
$pwd = $_POST["userpwd"];
$pwd_confirm = $_POST["confirm"]; // check 输入项不能为空
if($user == "" || $pwd == "" || $pwd_confirm == "")
{
echo "<script>alert('请确认信息完整性!'); history.go(-1);</script>";
}
else
{ //如果两次输入的密码一致,则开始连接数据库
if($pwd == $pwd_confirm)
{
//开始连接数据库
$conn = mysqli_connect("localhost","root","root","mydb");
//如果连接数据库发生错误退出
if(mysqli_errno($conn)){
echo mysqli_error($conn);
exit;
} //查询user数据表的username字段,看是否有与$user相同的记录
$sql ="select username from user where username = '$user'"; //执行SQL语句,并把结果保存在$result中
//针对成功的 SELECT、SHOW、DESCRIBE 或 EXPLAIN 查询,将返回一个 mysqli_result 对象。
//针对其他成功的查询,将返回 TRUE。
//如果失败,则返回 FALSE。
$result = mysqli_query($conn,$sql); echo "查询返回的结果类型为" . gettype($result) . '<br>'; if($result){
echo "查询成功<br>";
//mysqli_num_rows函数返回结果集中行的数量
$num = mysqli_num_rows($result);
echo "查询行数为" . $num . "<br>";
}else{
echo "查询错误!" . mysqli_error($conn);
} if($num>0)//如果已经存在该用户
{
echo "<script>alert('用户名已存在'); history.go(-1);</script>";
}
else //不存在当前注册用户名称就将这些信息插入到数据表中
{
$sql_insert = "INSERT INTO user(username,userpwd) VALUES('$user','$pwd')";
//执行插入语句
$res_insert = mysqli_query($conn,$sql_insert);
if($res_insert)
{ //插入成功
echo "<script>alert('注册成功!'); history.go(-1);</script>";
}
else //插入失败显示系统忙
{
//echo "<script>alert('系统繁忙,请稍候!'); history.go(-1);</script>";
echo "插入 MySQL 失败: " . mysqli_connect_error();
}
}
}
else //如果两次输入的密码不一致
{
echo "<script>alert('密码不一致!'); history.go(-1);</script>";
}
}
}
else
{
echo "<script>alert('提交未成功!');</script>";
}
?>
PHP实践项目【1】:注册登录页面的更多相关文章
- 原生js验证简洁美观注册登录页面
序 一个以js验证表单的简洁的注册登录页面,不多说直接上图 效果 主要文件 完整代码 sign_up.html 注册表单 <!DOCTYPE html> <html lang=&qu ...
- PHP实现一个简陋的注册登录页面
PHP实现一个简陋的注册登录页面 今天来水一篇没有**用的 /滑稽脸,代码简陋臃肿考虑不全,各位大佬轻喷,还望不吝赐教. 首先考虑了一下需要至少四个页面:register.html.register. ...
- vue-cli3.0创建项目之完成登录页面
借鉴博客:https://www.cnblogs.com/KenFine/p/10850386.html 接着上一个创建的新项目vue-mydemo01来: 1.创建一个login.vue组件页面:如 ...
- oa_mvc_easyui_项目搭建及登录页面验证码(1)
1.空项目的搭建,三层的搭建(各层之中的引用) webapp:bll,model,common bll:dal,model dal:model 2.SQL表 ItcastDb:T_UserInfo,T ...
- 注册登录页面修订-Python使用redis-手机验证接口-发送短信验证
登录页面修订 views.Login.vue <template> <div class="login box"> <img src="@/ ...
- python相关注册登录方式
1.使用django自带功能实现登录/退出登录 使用django自带登录功能,前提生成用户(用户注册)使用的是django自带的user,或称models中用户表继承于django自带的user 1. ...
- SpringBootSecurity学习(03)网页版登录添加自定义登录页面
自定义登录页面 前面无论是使用默认配置,还是自定义配置类,都是使用的springboot-security自带的登录页面,自带的登录页面在这个版本虽然设计的非常不错,但是在实际开发中,我们通常还是使用 ...
- 33Flutter仿京东商城项目 登录 注册相关页面布局
加群452892873 下载对应33课文件,运行方法,建好项目,直接替换lib目录 以下列出的是本课涉及的文件. User.dart import 'package:flutter/material. ...
- JavaWeb笔记——注册登录系统项目思路
功能: > 注册 > 登录 --------------------------------- JSP: * login.jsp --> 登录表单 * regist ...
随机推荐
- Elasticsearch的cmd窗口乱码问题(windows)
elasticsearch 7.6.0 windows版日志乱码问题解决 修改jvm.options,如何重启es即可 新增 -Dfile.encoding=GBK
- 使用JAVA CompletableFuture实现流水线化的并行处理,深度实践总结
大家好,又见面啦. 在项目开发中,后端服务对外提供API接口一般都会关注响应时长.但是某些情况下,由于业务规划逻辑的原因,我们的接口可能会是一个聚合信息处理类的处理逻辑,比如我们从多个不同的地方获取数 ...
- PHP正则替换函数收集
preg_replace() $msg = preg_replace("/<style>.+<\/style>/is", "", $ms ...
- Vue3:不常用的Composition API && Fragment、Teleport、Suspense && 与Vue2对比的一些变化
1 # 一.Vue3不常用的Composition API 2 # 1.shallowReactive与shallowRef 3 .shallowReactive: 只处理对象最外层属性的响应式(浅响 ...
- 使用java随机生成有个性的用户名,LOL地名+水浒传,合计2808个有意思的用户名
* 随机生成用户名 * 取水浒传108好汉名字 * 取LOL地名26个,组合而成 * 一共可以生成2808个不同特色的用户名 如果你在上网的时候,用户名难取的话,这里有很多可选择的用户名,现提供100 ...
- Apache 首次亚洲在线峰会: Workflow & 数据治理专场
背景 大数据发展到今天已有 10 年时间,早已渗透到各个行业,数据需 求越来越多,这使得大数据 业务间的依赖关系也越来越复杂,另外也相信做数据的伙伴肯定对如何治理数据也是痛苦之至,再加上现今云原生时代 ...
- 搞定面试官 - 可以介绍一下在 MySQL 中你平时是怎么使用 COUNT() 的嘛?
大家好,我是程序员啊粥. 相信在大家的工作中,有很多的功能都需要用到 count(*) 来统计表中的数据行数.同时,对于一些大数据的表,用 count 都是瑟瑟发抖,往往会结合缓存等进行处理. 那么, ...
- 微软Azure配置中心 App Configuration (三):配置的动态更新
写在前面 我在前文: <微软Azure配置中心 App Configuration (一):轻松集成到Asp.Net Core>已经介绍了Asp.net Core怎么轻易的接入azure ...
- AtCoder Beginner Contest 264(D-E)
D - "redocta".swap(i,i+1) 题意: 给一个字符串,每次交换相邻两个字符,问最少多少次变成"atcoder" 题解: 从左到右依次模拟 # ...
- ClickHouse(05)ClickHouse数据类型详解
ClickHouse属于分析型数据库,ClickHouse提供了许多数据类型,它们可以划分为基础类型.复合类型和特殊类型.其中基础类型使ClickHouse具备了描述数据的基本能力,而另外两种类型则使 ...

