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 ...
随机推荐
- 小C的记事本_via牛客网
题目 链接:https://ac.nowcoder.com/acm/contest/28537/G 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 131072K,其他语 ...
- 使用OnPush和immutable.js来提升angular的性能
angular里面变化检测是非常频繁的发生的,如果你像下面这样写代码 <div> {{hello()}} </div> 则每次变化检测都会执行hello函数,如果hello函数 ...
- python 装饰器理解
简介 装饰器可以在不修改原有代码的基础上添加新的功能,可以将重复重用的代码抽取出来,进一步解耦,方便维护,一般适用于插入日志.性能测试.事务处理.缓存等 装饰器的前提 闭包 一般来说,当一个函数嵌套另 ...
- 让 DolphinScheduler 1.3.4 开启 Netty 日志打印,解决流程实例一直在运行中的问题
关于新一代大数据任务调度 - Apache DolphinScheduler Apache DolphinScheduler(incubator) 于 17 年在易观数科立项, 19 年 8 月进 ...
- 羽夏看Linux内核——引导启动(上)
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作.如想转载,请把我的转载信息附在文章后面,并 ...
- idea+SpringBoot使用过程中的问题集合
1.跨域访问外部接口? 使用Nginx代理(详细参见:https://www.cnblogs.com/ZhaoHS/p/16594619.html): 合并部署,统一从后端访问第三方接口(合并部署详见 ...
- [SDOI2012]走迷宫 (强连通分量缩点,动态规划,高斯消元)
题面 Morenan被困在了一个迷宫里.迷宫可以视为N个点M条边的有向图,其中Morenan处于起点S,迷宫的终点设为T.可惜的是,Morenan非常的脑小,他只会从一个点出发随机沿着一条从该点出发的 ...
- MyBatis第一个程序
创建一个maven项目,并且在pom.xml导入myBatis和jdbc的jar包 <dependencies> <dependency> <groupId>org ...
- KingbaseES V8R6集群部署案例之---Windows环境配置主备流复制(异机复制)
案例说明: 目前KingbaseES V8R6的Windows版本不支持数据库sys_rman的物理备份,可以考虑通过建立主备流复制实现数据库的异机物理备份.本案例详细介绍了,在Windows环境下建 ...
- KingbaseES V8R6 集群环境wal日志清理
案例说明: 1.对于集群中的wal日志,除了需要在备库执行recovery外,在集群主备切换(switchover或failover)时,sys_rewind都要读取wal日志,将数据库恢复到一致性状 ...

