实验14:账户的登录和注销

简单实验 飞快学 804浏览

演示页面: 帐户登录保护个人核心信息

我们要访问的存储关键个人信息的页面文件名为 083.php,登录页面名为 081.php,注销页面名为 082.php

存储关键个人信息的页面文件的功能:首先检测用户是否登录,如果未登录,则跳转到登录页面 081.php,登录成功后再跳转会083.php页面。登录后,显示用户名和关键信息,并显示“注销”链接。

用户点击“注销”后,销毁Session内的数据。

081.php 的关键代码

<?php
   ob_start();
   session_start();
   $msg = '';
   if (isset($_POST['login']) && !empty($_POST['username']) 
      && !empty($_POST['password'])) {		
      if ($_POST['username'] == 'phpsoeasy' && 
         $_POST['password'] == '123456') {
         $_SESSION['valid'] = true;
         $_SESSION['timeout'] = time();
         $_SESSION['username'] = 'phpsoeasy';
         $msg = '你已经成功登陆!';
         if (isset($_SESSION['url'])) 
             header("location: ".$_SESSION['url']);
      } else {
         $msg = '错误的用户名或者密码,请重新输入';
      }
   }   
?>

用户登录后,可以使用下面的方法来检测:

<?php if (isset($_SESSION['username'])) : ?>      

<?php endif ?> 

081.php 的 HTML 代码

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf8">
    <title>登录演示</title>
    <link href = "//cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css"
       rel = "stylesheet">
 <style>
 .form-signin {
    max-width: 330px;
    padding: 15px;
    margin: 0 auto;
    color: #017572;
 }
 </style>
</head>
<body>
      <div class = "container">
<?php if (!isset($_SESSION['username'])) : ?>           
         <form class = "form-signin" role = "form" 
            action = "<?php echo htmlspecialchars($_SERVER['PHP_SELF']); 
            ?>" method = "post">
            <?= $msg ?>
            <h4 class = "form-signin-heading">请输入用户名和密码</h4>
            <input type = "text" class = "form-control" 
               name = "username" placeholder = "username = phpsoeasy" 
               required autofocus></br>
            <input type = "password" class = "form-control"
               name = "password" placeholder = "password = 123456" required>
            <br/>
            <button class = "btn btn-primary btn-block" type = "submit" 
               name = "login">登录</button>
         </form>
<?php endif ?> 
<?php if (isset($_SESSION['username'])) : ?>    
    <p><?= $msg ?></p>
    <p><?= $_SESSION['username'] ?>,你是个聪明的孩子。</p>
    <p>你是直接访问本页面,所有没有进行页面的跳转。</p>
    <a href = "082.php" tite = "Logout">注销</a>
<?php endif ?>          
      </div> 
   </body>
</html>

082.php(注销功能) 的全部代码

<?php
   header("Content-type:text/html;charset=utf-8");
   session_start();
   unset($_SESSION["username"]);
   unset($_SESSION["password"]);
   unset($_SESSION["url"]);
   echo '已经成功退出登录';
   header('Refresh: 2; URL = 081.php');
?>

083.php 的关键代码

<?php
ob_start();
session_start();
if (!isset($_SESSION['username'])) {
    $_SESSION['url'] = "083.php";
    header("location: 081.php");
}
?>

下图是登录页面:

ex013

在这个页面中,使用了 BootstrapCDN 技术,请通过网络了解这两种技术。

什么是 PHP Sessions

表单验证

本实验参考了 TutorialPoint 上的 Login Example 例子,并进行了完善。