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 ...
随机推荐
- Github隐藏使用技巧(超详解)
目录 github使用说明 查看别人的主页和项目 上传自己的项目 使用git下载github上的文件 使用git实现代码管理 使用git恢复被修改的文件 更多关于git使用小技巧 github使用说明 ...
- 使用github action发布hexo博客到云服务器
目录 搭建Hexo博客 安装主题hexo-theme-bamboo 修改博客名称等信息 添加github action发布 1. 在github中创建自己的博客仓库 2. 设置Secrets 3. 在 ...
- php static 和self区别
static(关键字) 类似于 self(关键字) , 但它指向的是被调用的类(Document) 而不是包含类(DomainObject) , static 和 self 的区别: <?php ...
- Logo小变动,心境大不同,SVG矢量动画格式网站Logo图片制作与实践教程(Python3)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_207 曾几何时,SVG(Scalable Vector Graphics)矢量动画图被坊间称之为一种被浏览器诅咒的技术,只因为糟糕 ...
- 一步一图带你深入剖析 JDK NIO ByteBuffer 在不同字节序下的设计与实现
让我们来到微观世界重新认识 Netty 在前面 Netty 源码解析系列 <聊聊 Netty 那些事儿>中,笔者带领大家从宏观世界详细剖析了 Netty 的整个运转流程.从一个网络数据包在 ...
- BZOJ1176 [Balkan2007]Mokia(CDQ)
CDQ裸题,\(x\), \(y\), \(tim\)三维偏序 #include <cstdio> #include <iostream> #include <cstri ...
- 从 React 原理来看 ahooks 是怎么解决 React 的闭包问题的?
本文是深入浅出 ahooks 源码系列文章的第三篇,该系列已整理成文档-地址.觉得还不错,给个 star 支持一下哈,Thanks. 本文来探索一下 ahooks 是怎么解决 React 的闭包问题的 ...
- Java SE 9 多版本兼容 JAR 包示例
Java SE 9 多版本兼容 JAR 包示例 作者:Grey 原文地址:Java SE 9 多版本兼容 JAR 包示例 说明 Java 9 版本中增强了Jar 包多版本字节码文件格式支持,也就是说在 ...
- java-代码操作服务器之SSH连续发送命令
java操作Linux服务器可以使用专用的jar包,这里介绍使用jsch操作Linux服务器 maven 依赖 <dependency> <groupId>com.jcraft ...
- pnpm凭什么这么快
前端包管理器层出不穷,pnpm算是一个后起之秀.它和npm有什么不同,为什么有了npm还要造一个pnpm? npm的问题 npm是最早的包管理器,安装nodejs自带npm,v3版本之前,npm安全依 ...

