在我们这个项目里面,一共用到了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】:注册登录页面的更多相关文章

  1. 原生js验证简洁美观注册登录页面

    序 一个以js验证表单的简洁的注册登录页面,不多说直接上图 效果 主要文件 完整代码 sign_up.html 注册表单 <!DOCTYPE html> <html lang=&qu ...

  2. PHP实现一个简陋的注册登录页面

    PHP实现一个简陋的注册登录页面 今天来水一篇没有**用的 /滑稽脸,代码简陋臃肿考虑不全,各位大佬轻喷,还望不吝赐教. 首先考虑了一下需要至少四个页面:register.html.register. ...

  3. vue-cli3.0创建项目之完成登录页面

    借鉴博客:https://www.cnblogs.com/KenFine/p/10850386.html 接着上一个创建的新项目vue-mydemo01来: 1.创建一个login.vue组件页面:如 ...

  4. oa_mvc_easyui_项目搭建及登录页面验证码(1)

    1.空项目的搭建,三层的搭建(各层之中的引用) webapp:bll,model,common bll:dal,model dal:model 2.SQL表 ItcastDb:T_UserInfo,T ...

  5. 注册登录页面修订-Python使用redis-手机验证接口-发送短信验证

    登录页面修订 views.Login.vue <template> <div class="login box"> <img src="@/ ...

  6. python相关注册登录方式

    1.使用django自带功能实现登录/退出登录 使用django自带登录功能,前提生成用户(用户注册)使用的是django自带的user,或称models中用户表继承于django自带的user 1. ...

  7. SpringBootSecurity学习(03)网页版登录添加自定义登录页面

    自定义登录页面 前面无论是使用默认配置,还是自定义配置类,都是使用的springboot-security自带的登录页面,自带的登录页面在这个版本虽然设计的非常不错,但是在实际开发中,我们通常还是使用 ...

  8. 33Flutter仿京东商城项目 登录 注册相关页面布局

    加群452892873 下载对应33课文件,运行方法,建好项目,直接替换lib目录 以下列出的是本课涉及的文件. User.dart import 'package:flutter/material. ...

  9. JavaWeb笔记——注册登录系统项目思路

    功能:   > 注册   > 登录 --------------------------------- JSP:   * login.jsp  --> 登录表单   * regist ...

随机推荐

  1. 绝对路径和相对路径和File类的构造方法

    路径: 绝对路径:是一个完整的路径 以盼复(C:,D:)开始的路径 c:\a.txt C:\User\itcast\IdeaProjects\shungyuan\123.txt D:\demo\b.t ...

  2. ARC129E Yet Another Minimization 题解 【网络流笔记】

    超神的建模,极其有借鉴意义/cy 注:该建模对应于最小割建模 对于 \(n\) 个数,每个数有 \(m\) 种取值的技巧 \(\forall i=1,2,\dots,n\),令 \(S=V_{i,0} ...

  3. 用虚拟机封装win10系统的一些记录

    想用虚拟机封装一个WIN10企业LTSC,期间参考了IT天空小鱼儿的几大步骤一直到手动优化完,后面就自己用系统安装直接备份了一个.gho镜像.期间出过好多毛病,不过总算是成功实现了.注意点: 1.前面 ...

  4. Jittered采样类定义和测试

    抖动采样算法测试,小图形看不出什么明显区别,还是上代码和测试图吧. 类声明: #pragma once #ifndef __JITTERED_HEADER__ #define __JITTERED_H ...

  5. Apache DolphinScheduler 1.3.9 发布,新增 StandaloneServer

    点击上方 蓝字关注我们 2021 年 10 月 22 日,Apache DolphinScheduler 正式发布 1.3.9 版本.时隔一个半月,在社区贡献者的共同努力下,Apache Dolphi ...

  6. 喜讯:“行走的文档” 当选 Apache DolphinScheduler Committer啦

    点击上方蓝字关注 Apache DolphinScheduler Apache DolphinScheduler(incubating),简称"DS", 中文名 "海豚调 ...

  7. a 标签 rel 属性值 opener 的作用

    <a> 元素,原英文单词为 anchor 的缩写,所以又称之为锚点元素.锚点元素的 href 属性用来创建通向其他网页.文件.同一页面内的位置.电子邮件地址或任何其他 URL 的超链接. ...

  8. Excelize 2.3.2 发布,Go 语言 Excel 文档基础库,2021 年首个更新

    Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准.可以使用它来读取.写入由 Microsoft Exc ...

  9. React报错之Invalid hook call

    正文从这开始~ 总览 导致"Invalid hook call. Hooks can only be called inside the body of a function compone ...

  10. 【MySQL】从入门到掌握4-主键与Unique

    上期:[MySQL]从入门到掌握3-WorkBench 第一章:主键 在实际开发中,我们不会使用用户名字当作主键.   因为当我们用数据库记录学生信息的时候,学生有可能重名! 我们一般会使用是个int ...