php小项目-登录和注册的实现

简介: php小项目-登录和注册的实现

本项目搭建了一个简单的页面,用php+mysql来实现登录、注册以及注销的功能。

效果展示

从右上方可以看到,当前是未登录的主页

点击登录,来到登录页面


如果还没注册,就点击进行注册

登录成功进入主页,看到右上方显示当前登录的用户名。点击用户名后的退出,即可退出登录。


实现过程


1.项目目录



2.主要实现代码


config.php保存数据库连接信息


<?php
//数据库连接信息
$host='localhost';    //数据库服务器主机名
$user='root';     //数据库用户名
$password='root';   //数据库用户密码
$dbname='itcast';   //数据库名
//开启session
session_start();

register.php注册功能

<?php
require'./config.php';    //引入公共文件开启session功能
// require'./html/register.html'; //调用内容模板
if($_POST){
  $link=mysqli_connect($host,$user,$password,$dbname);
  if(!$link){
    display('数据库连接失败。'.mysqli_connect_error()); 
  }
  mysqli_set_charset($link,'utf8');
  $fields= array('name', 'password', 'sex', 'email', 'course', 'channel', 'message') ;
  //$fields= ['name', 'password', 'sex', 'email', 'course', 'channel', 'message'] ;
  //$data[];
  $data=array();
  foreach($fields as $v){
    $data[$v]=isset($_POST[$v])?$_POST[$v]:'';  
  }
  if(is_array($data['channel'])){
    $data['channel']==implode(',', $data['channel']);
  }
  foreach($data as $k=>$v){
    $data[$k]=mysqli_real_escape_string($link,$v);  
  }
  $result=mysqli_query($link,"SELECT 1 FROM `user` WHERE `name` ='{$data['name']}'");
  if(!$result){
    display('数据库操作失败:'.mysqli_error($link));  
  }
  if(mysqli_num_rows($result)){
    display('该用户名已被注册!');
  }
  $sql_values=implode("','",$data);
  $sql_fields=implode("`,`",$fields);
  //执行SQL语句
  $result=mysqli_query($link,"INSERT INTO user (`$sql_fields`) VALUES ('$sql_values')");
  if($result){
    header('Location:login.php');
    exit; 
  }else{
    display('数据库操作失败:'.mysqli_error($link));  
  }
}
display();
function display($message=false){
  require'./html/register.html';
  exit;
}

login.php登录功能

<?php
require'./config.php';    //引入公共文件开启session功能
if($_POST){
  $link=mysqli_connect($host,$user,$password,$dbname);
  if(!$link){
    display('数据库连接失败。'.mysqli_connect_error()); 
  }
  mysqli_set_charset($link,'utf8');
  //接收用户名和密码
  $name=isset($_POST['name'])? $_POST['name']:'';
  $password=isset($_POST['password'])? $_POST['password']:'';
  $name=mysqli_real_escape_string($link,$name);
  $password=mysqli_real_escape_string($link,$password);
  $result=mysqli_query($link,"SELECT 1 FROM `user` WHERE `name` ='$name' AND `password`='$password'");
  if(!$result){
    display('数据库操作失败:'.mysqli_error($link));  
  }
  if(mysqli_num_rows($result)){
    $_SESSION['user']=$name;
    header('Location:index.php');
    exit;
  }else{
    display('登录失败,用户名或密码有误。');
  }
}
display();
function display($message=false){
  require'./html/login.html';
  exit;
}

index.php主页

<?php
require'./config.php';    //引入公共文件开启session功能
require'./html/index.html'; //调用内容模板


logout.php注销功能

<?php
require'./config.php';  
unset($_SESSION['user']);   //用户退出功能
header('Location:index.php'); //跳转页面

index.html

<?php require'./html/header.html';?>
        <div class="banner">
          <div class="banner_pic" id="banner_pic">
              <div class="current"><img src="images/01.jpg" alt=""></div>
                <div class="pic"><img src="images/02.jpg" alt=""></div>
                <div class="pic"><img src="images/03.jpg" alt=""></div>
                <div class="pic"><img src="images/04.jpg" alt=""></div>
            </div>
            <ol id="button">
              <li class="current">1</li>
                <li class="but">2</li>
                <li class="but">3</li>
                <li class="but">4</li>
            </ol>
        </div>
        <div class="stages">
          <div class="stages_title">通知公告</div>
          <div class="stages_con">
              <marquee>
                  <ul>
                      <li><a href="#">【绘画百科】上色那些事!</a></li>
                        <li><a href="#">手绘、插画素材免费下载!</a></li>
                    </ul>
                </marquee>
            </div>
        </div>
        <div class="content">
          <div class="line1">
              <div class="left">
                  <div class="module">
                      <div class="title">
                            <div class="title_left"></div>
                            <div class="title_right"><span></span>课程分类</div>
                            <div class="title_bottom"></div>
                        </div>
                        <div class="module_con">
                          <ul>
                              <li><a href="#">素描课程</a></li>
                                <li><a href="#">油画课程</a></li>
                                <li><a href="#">头像课程</a></li>
                                <li><a href="#">水彩课程</a></li>
                                <li><a href="#">速写课程</a></li>
                                <li><a href="#">CG课程</a></li>
                                <li><a href="#">彩铅课程</a></li>
                                <li><a href="#">......</a></li>
                            </ul>
                        </div>
                    </div>
                    <div class="job">
                      <div class="job_title"><span></span>热门文章</div>
                        <div class="job_con">
                            <ul>
                              <li><span>1</span><a href="#">看看这几位手绘大牛的作品</a></li>
                                <li><span>1</span><a href="#">插画师该如何自我成长</a></li> 
                                <li><span>1</span><a href="#">动漫绘画百科之眼睛画法...</a></li>
                                <li><span>1</span><a href="#">头发N种画法...</a></li>
                                <li><span>1</span><a href="#">构图样式20例分享...</a></li>
                            </ul>
                        </div>
                    </div>
                </div>
                <div class="center">
                  <div class="message">
                      <div class="message_title">
                          <ol id="message">
                              <li class="current"><a herf="#"><span>专业动态</span></a></li>
                                <li><a href="#"><span>行业动态</span></a></li>
                            </ol>
                            <div class="more"><a href="#"><img src="images/more.gif" align="middle" /></a></div>
                        </div>
                        <div id="message_con">
                          <dl class="current">
                              <dt class="message_left"></dt>
                                <dd class="message_right">
                                  <ul class="left_ul">
                                      <li><span></span><a href="#">时髦青年召集令!浓浓嬉皮风、动感disco...</a></li>
                                        <li><span></span><a href="#">快来参加枪火游侠英雄角色设定大赛呀!</a></li>
                                        <li><span></span><a href="#">博郡汽车品牌LOGO设计征集开赛啦!</a></li>
                                        <li><span></span><a href="#">收官至!SurfaceBook 2随性专属包图案设计...</a></li>
                                        <li><span></span><a href="#">美的空调创意海报征集大赛来啦~</a></li>
                                    </ul>
                                    <ul class="right_ul">
                                      <li><a href="#">2018/06</a></li>
                                        <li><a href="#">2018/06</a></li>
                                        <li><a href="#">2018/06</a></li>
                                        <li><a href="#">2018/06</a></li>
                                        <li><a href="#">2018/07</a></li>
                                    </ul>
                                </dd>
                            </dl>
                            <dl>
                              <dt class="meesage_left1"></dt>
                                <dd class="message_right">
                                  <ul class="left_ul">
                                      <li><span></span><a herf="#">辩论!中国最优秀的动画作品是那一部?</a></li>
                                        <li><span></span><a herf="#">测试:你会转到到那所二次元学校读书?</a></li>
                                        <li><span></span><a herf="#">日宅:最能体现手绘技能的是什么?</a></li>
                                        <li><span></span><a herf="#">【手绘节操】你的手绘作是临摹那部作品?</a></li>
                                        <li><span></span><a herf="#">手绘来袭,全新出击</a></li>
                                    </ul>
                                    <ul class="right_ul">
                                      <li><a href="#">2018/07</a></li>
                                        <li><a href="#">2018/07</a></li>
                                        <li><a href="#">2018/06</a></li>
                                        <li><a href="#">2018/07</a></li>
                                        <li><a href="#">2018/06</a></li>
                                    </ul>
                                </dd>
                            </dl>
                        </div>
                    </div>
                    <div class="teacher">
                      <div class="teacher_title"><span>插画师</span><a href="#"><img src="images/more.gif" /></a></div>
                        <div class="teacher_con">
                          <ul>
                              <li>
                                  <div><a href="#"><img src="images/teacher01.gif"/></a></div>
                                    <div class="name"><a href="#">诺曼洛克威尔</a></div>
                                </li> 
                                <li>
                                  <div><a href="#"><img src="images/teacher02.gif"/></a></div>
                                    <div class="name"><a href="#">塔莎杜朵</a></div>
                                </li> 
                                <li>
                                  <div><a href="#"><img src="images/teacher03.gif"/></a></div>
                                    <div class="name"><a href="#">竹冈美穗</a></div>
                                </li> 
                                <li>
                                  <div><a href="#"><img src="images/teacher04.gif"/></a></div>
                                    <div class="name"><a href="#">MarcosChin</a></div>
                                </li> 
                            </ul>
                        </div>
                    </div>
                </div>
                <div class="right">
                  <div class="course">
                      <h3>精品课程</h3>
                        <ul>
                          <li><a href="#">美术基础精品课程</a></li>
                            <li><a href="#">uv拆分课程</a></li>
                            <li><a href="#">网游模型制作课程</a></li>
                            <li><a href="#">材质深入刻画</a></li>            
                            <li><a href="#">Q版角色建模</a></li>
                        </ul>
                    </div>
                    <div class="study">
                      <a href="#"><img src="images/study.gif" /></a>
                    </div>
                </div>
            </div>
            <div class="line2">
              <div class="book">
                  <div class="book_title"><span>推荐书籍</span><a href="#"><img src="images/more.gif" /></a></div>
                    <div class="book_con">
                      <ul>
                          <li>
                              <div><a href="#"><img src="images/book01.gif" /></a></div>
                                <div class="name"><a href="#">简笔画教程</a></div>  
                            </li>
                            <li>
                              <div><a href="#"><img src="images/book02.gif" /></a></div>
                                <div class="name"><a href="#">铅笔的温情手</a></div>  
                            </li>
                            <li>
                              <div><a href="#"><img src="images/book03.gif" /></a></div>
                                <div class="name"><a href="#">时装画手绘</a></div>  
                            </li>
                            <li>
                              <div><a href="#"><img src="images/book04.gif" /></a></div>
                                <div class="name"><a href="#">铅笔的魔法教程</a></div>  
                            </li>
                            <li>
                              <div><a href="#"><img src="images/book05.gif" /></a></div>
                                <div class="name"><a href="#">水彩手绘教程</a></div>  
                            </li>
                            <li class="no_mar">
                              <div><a href="#"><img src="images/book06.gif" /></a></div>
                                <div class="name"><a href="#">古尔德手绘</a></div>  
                            </li>
                        </ul>
                    </div>
                </div>
            </div>
        </div>
<?php require'./html/footer.html';?>


login.html

<?php require'./html/loginhead.html';?>
        <div>
          <h3 class="content_tab_title">登录</h3>
            <form action="#" method="post" name="example" class="content_denglu" id="form">
              <table class="content_denglulist">
                  <tr>
                      <td class="left">姓名<span class="red">*</span></td>
                        <td><input type="text" name="name" class="txt01" id="username" /></td>
                    </tr>
                    <tr>
                      <td class="left">密码<span class="red">*</span></td>
                        <td><input type="password" name="password" class="txt02" id="password" /></td>
                    </tr>
                    <tr>
                      <td>&nbsp;</td>
                        <td><input type="submit" value="提交" class="tabbtn" /></td>
                    </tr>
                </table>
            </form>
        </div>
    </body>
</html>

register.html

<?php require'./html/loginhead.html';?>
        <div>
          <h3 class="content_tab_title">注册</h3>
            <form action="#" method="post" name="example" class="content_tab" id="form">
              <table class="content_tablist">
                  <tr>
                      <td class="left">姓名<span class="red">*</span></td>
                        <td><input type="text" class="txt01" id="username" name="name" /></td>
                    </tr>
                    <tr>
                      <td class="left">密码<span class="red">*</span></td>
                        <td><input type="text" class="txt02" name="password" id="password" /></td>
                    </tr>
                    <tr>
                      <td class="left">确认密码<span class="red">*</span></td>
                        <td><input type="text" class="txt02" id="password2" /></td>
                    </tr>
                    <tr>
                      <td class="left">性别<span class="red">*</span></td>
                        <td>
                          <label for="boy"><input type="radio" name="sex" id="boy" />男</label>
                            <label for="girl"><input type="radio" name="sex" id="girl" />女</label>
                        </td>
                    </tr>
                    <tr>
                      <td class="left">邮箱<span class="red">*</span></td>
                        <td><input type="text" class="txt03" name="email" /></td>
                    </tr>
                    <tr>
                      <td class="left">意向课程<span class="red">*</span></td>
                        <td>
                          <select class="course" name="course">
                              <option>手绘基础班</option>
                                <option selected="selected">手绘进阶班</option>
                                <option>手绘就业班</option>
                            </select>
                        </td>
                    </tr>
                    <tr>
                      <td class="left">了解渠道<span class="red">*</span></td>
                        <td>
                          <label for="baidu"><input type="checkbox" id="baidu" name="channel[]" value="baidu" />baidu</label>
                            <label for="itcast"><input type="checkbox" id="itcast" name="channel[]" value="小绘老学" />小绘老学员</label>
                            <label for="friend"><input type="checkbox" id="friend" name="channel[]" value="朋友推荐" />朋友推荐</label>
                            <label for="csdn"><input type="checkbox" id="csdn" name="channel[]" value="CSDN网站" />CSDN网站</label>
                            <label for="video"><input type="checkbox" id="video" name="channel[]" value="视频教程" />视频教程</label>
                            <label for="other"><input type="checkbox" id="other" name="channel[]" value="其他" />其他</label>
                        </td>
                    </tr>
                    <tr>
                      <td class="left">留言</td>
                        <td><textarea cols="50" rows="5" class="message" name="message">请简述您有没有绘画基础,以及为什么选择学校手绘?</textarea></td>
                    </tr>
                    <tr>
                      <td>&nbsp;</td>
                        <td><input type="submit" value="提交" class="tabbtn" /></td>
                    </tr>
                </table>
            </form>
        </div>
        <script type="text/javascript" src="./javascript/register.js"></script>
    </body>
</html>


3.配置mysql数据库


登录phpMyAdmin




新建itcast数据库和user表



4.部署项目


完成以后几步后,把项目部署到phpstudy上,即可打开网站浏览效果。phpstudy的使用可见我另一篇[fastadmin的安装过程]。


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
10月前
|
Web App开发 安全 PHP
刚上线的PHP项目被攻击了怎么办
近期因忙于多个项目,代码质量有所疏忽,导致项目上线后遭攻击。攻击者通过文件上传漏洞和测试登录方式入侵,修改了 index.php 并植入恶意文件。经排查,问题源于未限制上传文件类型及未关闭测试登录配置。修复措施包括锁定文件、限制上传后缀、关闭测试登录、删除高危用户并限制其访问。此次事件提醒我们,细节疏漏可能引发严重风险,需时刻保持警惕。
|
12月前
|
JavaScript Linux PHP
composer如何安装以及举例在PHP项目中使用Composer安装TCPDF库-优雅草卓伊凡
composer如何安装以及举例在PHP项目中使用Composer安装TCPDF库-优雅草卓伊凡
330 3
composer如何安装以及举例在PHP项目中使用Composer安装TCPDF库-优雅草卓伊凡
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
778 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
10月前
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。
|
JavaScript 前端开发 安全
php学习笔记-普通表单参数提交获取及页面的重定向和一个登录小demo-day05
本文介绍了PHP中普通表单参数的提交获取、页面重定向的方法,并通过一个登录示例演示了表单参数的封装和页面跳转处理。
|
PHP
Composer在PHP项目中的手动类自动加载策略
为了确保文件名和类名的一致性及其可预测性,类名通常应该与文件名相匹配,所有的类都应属于一个命名空间,并且目录结构应该反映命名空间的结构。如此一来,当新的类被创建时,它们会自动遵守已有的约定,从而无需修改自动加载逻辑,确保了代码的模块化和可管理性。
145 8
|
12月前
|
存储 缓存 安全
php项目源码加密之Zend Guard Loader加密的代码解密可能性很小-优雅草卓伊凡
php项目源码加密之Zend Guard Loader加密的代码解密可能性很小-优雅草卓伊凡
540 2
|
安全 API PHP
Composer在现代PHP项目中的进阶实践
简介:本文深入探讨PHP依赖管理工具Composer的核心功能与企业实践。首先介绍其如何通过`composer.json`实现声明式依赖管理,变革PHP生态;接着解析自动加载优化、版本策略(如`~`和`^`)及私有仓库集成等关键特性;然后分享CI/CD集成、多环境配置与性能优化技巧(如阿里云镜像加速)的企业级方案;最后提供常见问题排查方法,如内存不足和依赖冲突解决,助力开发者高效管理项目依赖。
276 3
|
XML 前端开发 JavaScript
php中Ajax的简单使用,登录表单调用Ajax判断是否正确登录利用layer.msg进行提示
本文介绍了在PHP中如何使用Ajax进行登录表单的数据提交,并利用jQuery的$.post()方法与后端通信,以及使用layer.msg进行前端提示。
php中Ajax的简单使用,登录表单调用Ajax判断是否正确登录利用layer.msg进行提示
|
域名解析 关系型数据库 MySQL
基于PHPEnv的本地环境搭建—PHP第一个项目:HelloWorld(从安装到运行)
该文章指导如何使用PHPEnv搭建本地PHP开发环境,并通过一个简单的"Hello World"程序演示从安装到运行的全过程。
基于PHPEnv的本地环境搭建—PHP第一个项目:HelloWorld(从安装到运行)

热门文章

最新文章