200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 利用会话控制实现页面登录与注销功能(高颜值许愿墙实例源码)

利用会话控制实现页面登录与注销功能(高颜值许愿墙实例源码)

时间:2022-03-20 08:35:05

相关推荐

利用会话控制实现页面登录与注销功能(高颜值许愿墙实例源码)

首先是一个普通的登陆页面实现

登录页面login.php

<!DOCTYPE html><html> <head> <title>登陆页</title> <link rel="stylesheet" href="/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous"> </head> <body> <div> <div> <div> <h4> 用户登录 </h4> <div> <form method="post" action="action.php"> <input type="hidden" name="action" value="login"> <div> <label for="username">用户名</label> <input type="text" name="username" placeholder="请输入用户名"> </div> <div> <label for="password">密码</label> <input type="password" name="password" placeholder="请输入密码"> </div> <div> <input type="checkbox" name="remember"> <label for="remember"> 在这台电脑上记住我的登录状态 </label> </div> <button type="submit"> 登录 </button> </form> </div> </div> </div> </div> </body></html>

登录功能实现action.php

<?php session_start(); switch ($_REQUEST["action"]) { case "login": $username = $_POST["username"]; $password = $_POST["password"]; $remember = $_POST["remember"]; $user = getUser(); if ($username != $user["username"]) { // 登录失败 sendLoginFailedResponse(); } if ($password != $user["password"]) { // 登录失败 sendLoginFailedResponse(); } if ($remember) { rememberLogin($username); } $_SESSION["username"] = $username; header("location:index.php"); break; case "logout": session_unset(); setcookie("username", "", time() - 1); header("location:login.php"); break; } function getUser() { return array( "username" => "cyy", "password" => "123456" ); } function sendLoginFailedResponse() { $response = "<script> alert("用户名或密码错误!"); window.location="login.php"; </script>"; echo $response; die; } function rememberLogin($username) { setcookie("username", $username, time() 7 * 24 *3600); }

首页index.php

<?php session_start(); if (rememberedLogin()) { $_SESSION["username"] = $_COOKIE["username"]; } if (!hasLoggedIn()) { header("location:login.php"); die; } function hasLoggedIn() { return isset($_SESSION["username"]) && validateUsername($_SESSION["username"]); } function validateUsername($username) { return $username == "cyy"; } function rememberedLogin() { return isset($_COOKIE["username"]) && validateUsername($_COOKIE["username"]); } ?> <!DOCTYPE html> <html> <head> <title>主页</title> <link rel="stylesheet" href="/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous"> </head> <body> <div> <nav> <a> 使用 Cookie 和 Session 实现会话控制 </a> <a href="action.php?action=logout"> <button type="button"> 注销 </button> </a> </nav> <div> <div> <div> <h5> 会话控制实战内容一 </h5> <h6> SESSION 部分 </h6> <p> 实现用户认证功能,用户登录、退出与身份识别 </p> </div> </div> <div> <div> <h5> 会话控制实战内容二 </h5> <h6> COOKIE 部分 </h6> <p> 实现登录记住用户功能,七天免登录认证 </p> </div> </div> </div> <div> <div> <div> <h5> 会话控制实战内容一 </h5> <h6> SESSION 部分 </h6> <p> 实现用户认证功能,用户登录、退出与身份识别 </p> </div> </div> <div> <div> <h5> 会话控制实战内容二 </h5> <h6> COOKIE 部分 </h6> <p> 实现登录记住用户功能,七天免登录认证 </p> </div> </div> </div> </div> </body> </html>

接下来是会话控制实例:许愿墙源码

许愿墙首页index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>许愿墙</title> <link rel="stylesheet" href="Css/index.css" /> <script type="text/javascript" src="Js/jquery-1.7.2.min.js"></script> <script type="text/javascript" src="Js/index.js"></script> </head> <body> <div> <a href="wish.php"><span></span></a> </div> <div> <?php //连接数据库 $connection=mysqli_connect("127.0.0.1","root","123456"); if(mysqli_connect_error()){ die(mysqli_connect_error()); } mysqli_select_db($connection,"wall"); mysqli_set_charset($connection,"utf8"); $sql="SELECT * FROM wall"; $result=mysqli_query($connection,$sql); //显示留言 while($row=mysqli_fetch_assoc($result)){ $wish_time=$row["wish_time"]; $time=date("Y-m-d H:i:s",$wish_time); $id=$row["id"]; //判断留言板颜色 switch($row["color"]){ case "a1": echo "<dl>"; break; case "a2": echo "<dl>"; break; case "a3": echo "<dl>"; break; case "a4": echo "<dl>"; break; case "a5": echo "<dl>"; break; default: echo "<dl>"; break; } echo "<dt>"; echo "<span>{$row["name"]}</span>"; echo "<span>No.{$row["id"]}</span>"; echo "</dt>"; echo "<dd>{$row["content"]}</dd>"; echo "<dd>"; echo "<span>{$time}</span>"; echo "<a href=\"delete.php?num={$id}\"></a>"; echo "</dd>"; echo "</dl>"; } mysqli_close($connection); ?> </div> <!--[if IE 6]> <script type="text/javascript" src="./Js/iepng.js"></script> <script type="text/javascript"> DD_belatedPNG.fix("#send,#close,.close","background"); </script> <![endif]--> </body> </html>

添加愿望页面wish.php

<!DOCTYPE > <html xmlns="/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>许愿墙</title> <link rel="stylesheet" href="Css/index.css" /> <script type="text/javascript" src="Js/jquery-1.7.2.min.js"></script> <script type="text/javascript" src="Js/index.js"></script> <style type="text/css"> #content { width: 638px; height:650px; margin:0 auto; margin-top:100px; /*background-color:#F0FAFF; border:2px solid #C9F;*/ } #content .c-top{ width: 638px; height: 80px; background: url(./Images/content_top.jpg) no-repeat; } #content .c-bottom{ width: 638px; height: 50px; background: url(./Images/content_bottom.jpg) no-repeat; } .c-content{ width: 638px; height: 470px; background: url(./Images/content_bg.jpg) repeat; } .papercolor{ width:588px; height: 60px; margin-left: 35px; padding-top:15px; } .p-left{ float: left; width: 120px; line-height: 27px; }p-left .p-right{ float: left; } .color330{ float: left; margin-left: 20px; border-right: #404040 1px solid; border-top: #404040 1px solid; border-left:#404040 1px solid; width: 25px; cursor: pointer; border-bottom: #404040 1px solid; height: 25px; } .papercontent{ width: 588px; height: 210px; margin-left: 35px; } .left{ width: 294px; height:100px; float: left; } .right{ width: 294px; height:100px; float: left; } .left-top{ margin-bottom: 10px; } .left-bottom{ } .right-top{ margin-bottom: 10px; } .right-bottom{ width:200px; height:150px; border: 1px solid orange; margin-left:20px; background-color:#E8DEFF; } .name{ clear: both; width: 588px; height: 50px; margin-left: 35px; margin-top:10px; } .name-left{ width:60px; height: 26px; line-height: 26px; float: left; } .name-right{ float: left; } .name-right input{ width: 200px; height: 26px; } .code{ clear: both; width: 588px; height: 50px; margin-left: 35px; margin-top:10px; } .code-left{ width:50px; height: 26px; line-height: 26px; float: left; } .code-content{ width:100px; float: left; } .code-content input{ width: 100px; height: 26px; } .code-right{ float:left; margin-left: 10px; } .code-right input{ width: 40px; height: 26px; background-color: pink; } .submit{ width:174px; height:38px; background: url(./Images/pic_submit.gif) no-repeat; margin-left:217px; } .shuname{ width:80px; height:25px; margin-left: 120px; } span{ font-size: 13px; font-family: "微软雅黑"; } </style> </head> <body> <div></div> <div> <div></div> <form action="add.php" method="post"> <div> <div> <div> <span>请选择纸条颜色:</span> </div> <div> <div></div> <div></div> <div></div> <div></div> <div></div> <input type="hidden" value="" name="idvalue"> </div> </div> <div> <div> <div> <span>输入你的祝福纸条内容:</span> </div> <div> <textarea cols="25" rows="8" name="textfont"></textarea> </div> </div> <div> <div> <span>纸条效果预览:</span> </div> <div> <div><span>第x条</span><br/></div> <div><span></span></div> <div><span>署名:</span></div> </div> </div> </div> <div> <div> <span>您的署名:</span> </div> <div> <input type="text" name="name" value=""> </div> </div> <div> <div> <span>验证码:</span> </div> <div> <input type="text" name="recode" value=""><span></span> </div> <div> <input type="text" name="code" value="<?php echo mt_rand(1000,9999); ?>" readonly> </div> </div> <!--<div><button type="submit"></button></div>--> <input type="submit" value="→ 开始贴许愿小纸条 ←" name="submit"> <a href="index.php"><input type="button" name="Submit2" value="返回"></a> </div> </form> <hr/> <div></div> </div> <!--[if IE 6]> <script type="text/javascript" src="./Js/iepng.js"></script> <script type="text/javascript"> DD_belatedPNG.fix("#send,#close,.close","background"); </script> <![endif]--> <script type="text/javascript"> //改变颜色 $(".color330").click(function(){ var value=$(this).css("background-color"); var idvalue=$(this).attr("id"); console.log(idvalue); $("#idvalue").attr("value",idvalue); $(".right-bottom").css("background-color",value); }) //改变值触发的事件 var textfont = document.getElementById("textfont"); var font = document.getElementById("font"); textfont.onchange=function(){ font.innerHTML=textfont.value; } //改变值触发的事件 var nameright = document.getElementById("nameright"); nameright.onchange=function(){ document.getElementById("name").innerText="署名: " nameright.value; } //在填写完毕验证码之后验证是否一致 var codeone = document.getElementById("codeone"); var codetwo = document.getElementById("codetwo"); //表单时区焦点事件 codeone.onblur=function(){ //验证两次验证码是否一致 if(codeone.value != codetwo.value){ this.nextSibling.innerHTML="验证码不一致!" this.nextSibling.style.color="red"; } } $( "#submit" ).click( function () { window.location.href="add.php"; } ); </script> </body> </html>

新增愿望实现add.php

<?php // 获取表单提交数据 $name=$_POST["name"]; $textfont=$_POST["textfont"]; $wish_time=time(); $color=$_POST["idvalue"]; // 数据库操作 $connection=mysqli_connect("127.0.0.1","root","123456"); if(mysqli_connect_error()){ die(mysqli_connect_error()); } mysqli_select_db($connection,"wall"); mysqli_set_charset($connection,"utf8"); $sql="INSERT INTO wall(content,name,wish_time,color) VALUES("$textfont","$name",$wish_time,"$color")"; $result=mysqli_query($connection,$sql); if($result){ echo "<script>alert("发布成功!");document.location = "index.php";</script>"; }else{ echo "<script>alert("发布失败!");document.location = "index.php";</script>"; } mysqli_close($connection); ?>

删除愿望delete.php

<?php //接受要删除的留言id $num=$_GET["num"]; // 数据库操作 $connection=mysqli_connect("127.0.0.1","root","123456"); if(mysqli_connect_error()){ die(mysqli_connect_error()); } mysqli_select_db($connection,"wall"); mysqli_set_charset($connection,"utf8"); $sql="DELETE FROM wall WHERE id=$num"; $result=mysqli_query($connection,$sql); if($result){ echo "<script>alert("删除成功!");document.location = "index.php";</script>"; }else{ echo "<script>alert("删除失败!");document.location = "index.php";</script>"; } mysqli_close($connection); ?>

附上数据库结构wall.sql

-- phpMyAdmin SQL Dump-- version 4.8.5-- /---- 主机: localhost-- 生成日期: -08-18 22:08:38-- 服务器版本: 8.0.12-- PHP 版本: 7.3.4SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";SET AUTOCOMMIT = 0;START TRANSACTION;SET time_zone = " 00:00";/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;/*!40101 SET NAMES utf8mb4 */;---- 数据库: `wall`---- ------------------------------------------------------------ 表的结构 `wall`--CREATE TABLE `wall` ( `id` tinyint(4) NOT NULL COMMENT "留言编号", `content` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT "留言内容", `name` varchar(20) NOT NULL DEFAULT "匿名的宝宝" COMMENT "署名", `wish_time` int(11) NOT NULL COMMENT "留言时间", `color` char(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT "留言背景色") ENGINE=InnoDB DEFAULT CHARSET=utf8;---- 转存表中的数据 `wall`--INSERT INTO `wall` (`id`, `content`, `name`, `wish_time`, `color`) VALUES(17, "111", "111", 1566136880, "a1"),(19, "333", "333", 1566136894, "a3"),(21, "555", "555", 1566136911, "a5"),(24, "9999", "9999", 1566137235, "a4");---- 转储表的索引------ 表的索引 `wall`--ALTER TABLE `wall` ADD PRIMARY KEY (`id`);---- 在导出的表使用AUTO_INCREMENT------ 使用表AUTO_INCREMENT `wall`--ALTER TABLE `wall` MODIFY `id` tinyint(4) NOT NULL AUTO_INCREMENT COMMENT "留言编号", AUTO_INCREMENT=26;COMMIT;/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

知识点补充:

【使用 COOKIE 实现会话控制】

用于存储用户关键信息

保存在客户端(浏览器)

通过 HTTP 请求/响应头传输

【COOKIE 失效】

COOKIE过期

用户手动删除 COOKIE

服务器清除 COOKIE 的有效性

【使用 SESSION 实现会话控制】

用于存储用户相关信息

保存在服务端

通过保存在客户端的 SESSION ID 来定位 SESSION 内容

【SESSION 失效/清除】

COOKIE过期(关闭浏览器)

用户手动删除 COOKIE

服务端删除 SESSION 文件或清空 SESSION 内容

来源:/content-1-612801.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。