使用PHP制作一个高级登陆系统

今天将我介绍一个基于COOKIES的简单登陆系统,我们将登陆用户的信息存储直接储存至浏览器的cookies中。它将帮助我们记住用


户的信息。首先先建一个工程目录


下面是login_form.html:


<link type="text/css" rel="stylesheet" href="styles.css" />

<form class="login_form" method="post" action="index.php">
    <div>Username: <input type="text" name="username" /></div>
    <div>Password: <input type="password" name="password" /></div>
    <div><input class="submit" type="submit" value="Login" name="Login" /></div>
</form>
<div id="note">You can use username "User1" of "User2" and password "qwerty" to login in system</div>


下面是CSS样式,style.css


.login_form {
	background-color: #456789;
	width:300px;
	margin-top:200px;
	margin-left:auto;
	margin-right:auto;

    border: 5px solid #234567;
    border-radius: 10px;
    padding:10px;

    text-align:center;
    color: #ffffff;
    font-weight: bolder;
}
.submit{
	background-color: #9abcde;
	margin: 10px;
}
#note{
    margin-left:auto;
	margin-right:auto;
}
现在前端的代码已经写好了,是不是很简单呢?下面来看看后端的PHP代码吧:
后端的PHP中主要使用如下几个函数:
getLoginBox:用于返回登陆框。
simple_login:执行登陆(将必要的信息储存至cookies中)。
simple_logout:执行退出(清除使用过的Cookies)。
check_login:如果系统中已经存在用户名和密码则返回true。


index.php:

<?php

// set error reporting level
if (version_compare(phpversion(), "5.3.0", ">=") == 1)
  error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
else
  error_reporting(E_ALL & ~E_NOTICE);


// initialization of login system and generation code
$oSimpleLoginSystem = new SimpleLoginSystem();

echo $oSimpleLoginSystem->getLoginBox();
require_once('footer.php');

// class SimpleLoginSystem
class SimpleLoginSystem {

    // variables
    var $aExistedMembers; // Existed members array

    // constructor
    function SimpleLoginSystem() {
        $this->aExistedMembers = array(
            'User1' => 'd8578edf8458ce06fbc5bb76a58c5ca4',  //Sample: MD5('qwerty')
            'User2' => 'd8578edf8458ce06fbc5bb76a58c5ca4'
        );
    }

    function getLoginBox() {
        ob_start();
        require_once('login_form.html');
        $sLoginForm = ob_get_clean();

        $sLogoutForm = '<a href="'.$_SERVER['PHP_SELF'].'?logout=1">logout</a>';

        if ((int)$_REQUEST['logout'] == 1) {
            if (isset($_COOKIE['member_name']) && isset($_COOKIE['member_pass']))
                $this->simple_logout();
        }

        if ($_REQUEST['username'] && $_REQUEST['password']) {
            if ($this->check_login($_REQUEST['username'], MD5($_REQUEST['password']))) {
                $this->simple_login($_REQUEST['username'], $_REQUEST['password']);
                return 'Hello ' . $_REQUEST['username'] . '! ' . $sLogoutForm;
            } else {
                return 'Username or Password is incorrect' . $sLoginForm;
            }
        } else {
            if ($_COOKIE['member_name'] && $_COOKIE['member_pass']) {
                if ($this->check_login($_COOKIE['member_name'], $_COOKIE['member_pass'])) {
                    return 'Hello ' . $_COOKIE['member_name'] . '! ' . $sLogoutForm;
                }
            }
            return $sLoginForm;
        }
    }

    function simple_login($sName, $sPass) {
        $this->simple_logout();

        $sMd5Password = MD5($sPass);

        $iCookieTime = time() + 24*60*60*30;
        setcookie("member_name", $sName, $iCookieTime, '/');
        $_COOKIE['member_name'] = $sName;
        setcookie("member_pass", $sMd5Password, $iCookieTime, '/');
        $_COOKIE['member_pass'] = $sMd5Password;
    }

    function simple_logout() { 
        setcookie('member_name', '', time() - 96 * 3600, '/');
        setcookie('member_pass', '', time() - 96 * 3600, '/');

        unset($_COOKIE['member_name']);
        unset($_COOKIE['member_pass']);
    }

    function check_login($sName, $sPass) {
        return ($this->aExistedMembers[$sName] == $sPass);
    }
}

?>

在线查看例子


    下载例子


    如有任何问题请在下面留言给我哦。感谢您的关注!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值