php 登录用户名与密码验证程序代码

、登录时对用户输入的用户名、密码进行验证

 代码如下 复制代码

<?php

/**
 * Validator for Login.
 */
final class LoginValidator {

    private function __construct() {
       
    }

    /**
     * Validate the given username and password.
     * @param $username and $password to be validated
     * @return array array of {@link Error} s
     */
    public static function validate($username, $password) {
        $errors = array();
        $username = trim($username);
        if (!$username) {
            $errors[] = new Error('username', '用户名不能为空。');
        } elseif (strlen($username)<3) {
            $errors[] = new Error('username', '用户名长度不能小于3个字符。');
        } elseif (strlen($username)>30) {
            $errors[] = new Error('username', '用户名长度不能超过30个字符。');
        } elseif (!preg_match('/^[A-Za-z]+$/',substr($username, 0, 1))) {
            $errors[] = new Error('username', '用户名必须以字母开头。');
        } elseif (!preg_match('/^[A-Za-z0-9_]+$/', $username)) {
            $errors[] = new Error('username', '用户名只能是字母、数字以及下划线( _ )的组合。');
        } elseif (!trim($password)) {
            $errors[] = new Error('password', '密码不能为空。');
        } else {
            // check whether use exists or not
            $dao = new UserDao();
            $user = $dao->findByName($username);

            if ($user) {
                if (!($user->getPassword() == sha1($user->getSalt() . $password))) {
                    $errors[] = new Error('password', '用户名或密码错误。');
                }
            } else {
                $errors[] = new Error('username', '用户名不存在。');
            }
        }
        return $errors;
    }
}

?>

2、调用验证器进行验证

 代码如下 复制代码

$username = null;
$password = null;

$msg = "";

if (isset($_POST['username']) && isset($_POST['password'])) {
    $username = addslashes(trim(stripslashes($_POST ['username'])));
    $password = addslashes(trim(stripslashes($_POST ['password'])));
    // validate
    $errors = LoginValidator::validate($username, $password);
   
    if (empty($errors)) {
        // save the latest ip or login time into database, then processing page forwarding
        $dao = new UserDao();
        $user = $dao->findByName($username);
        $last_login_ip = Utils::getIpAddress();
        $user->setLastLoginIp($last_login_ip);
        $now = new DateTime();
        $user->setLastLoginTime($now);
        $dao->save($user);
        UserLogin::setUserInfo($user);
        Flash::addFlash('登录成功!');
        Utils::redirect('welcome');
    }
   
    foreach ($errors as $e) {
        $msg .= $e->getMessage()."<br>";
    }

时间: 2024-10-24 01:07:59

php 登录用户名与密码验证程序代码的相关文章

js用户名与密码验证程序

本文章提供的这种客户端javascript用户输入的用户名与密码进行初步验证提高用户体验哦,这款是我从别的网上找到的. function check(form) {     if(form.ftpuser.value=="")     {        alert("请输入FTP用户名!");        return false;     }     if(form.ftppass.value=="")     {        alert(

ajax验证用户名和密码的实例代码_AJAX相关

本文实例为大家介绍了ajax验证用户名和密码的具体代码,供大家参考,具体内容如下 1.ajax主体部分     var xmlrequest; function createXMLHttpRequest(){ if(window.XMLHttpRequest){ xmlrequest=new XMLHttpRequest(); } else if(window.ActiveXObject){ try{ xmlrequest=new ActiveXObject("Msxm12.XMLHTTP&qu

ajax验证用户名和密码的实例代码

本文实例为大家介绍了ajax验证用户名和密码的具体代码,供大家参考,具体内容如下 1.ajax主体部分 var xmlrequest; function createXMLHttpRequest(){ if(window.XMLHttpRequest){ xmlrequest=new XMLHttpRequest(); } else if(window.ActiveXObject){ try{ xmlrequest=new ActiveXObject("Msxm12.XMLHTTP")

java 中用户名密码验证的代码怎么写?急!!在线等

问题描述 java 中用户名密码验证的代码怎么写?急!!在线等 import java.awt.GridLayout; import java.awt.event.*; import javax.swing.*; import com.sdu.wh.bll.UserQueryBll; import com.sdu.wh.dao.*; import com.sdu.wh.sql.*; public class LoginFrame extends JDialog implements Action

交互-关于JSP的用户名或密码验证问题

问题描述 关于JSP的用户名或密码验证问题 老师让我们用Java来表单验证,不用JS,但是Java片段在页面一显示时就验证了... 而且不管我怎么改,它都显示用户名或密码不正确~~~求解决!!! 代码如下: <form method="get"> <p style="padding-left:80px;">用户登录:</p> <% String u = request.getParameter("user"

phpMyAdmin配置登录用户名与密码教程

phpMyAdmin配置文件在libraries下的config.default.php中,主要配置如下: 一般的话,如果你的mysql和phpmyadmin放在同一服务器上,主机名就直接用localhost  代码如下 复制代码 $cfg['Servers'][$i]['host'] = 'localhost'; 然后就是要配置mysql的用户名和密码了:  代码如下 复制代码 $cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i][

asp.net (C#)登陆用户名和密码验证,用dr.Read()方法会出现大小写不区分!!(例如:我注册了大写账号,用小写账号也可以登陆).求各位大神帮我解答

问题描述 asp.net(C#)登陆用户名和密码验证,用dr.Read()方法会出现大小写不区分!!(例如:我注册了大写账号,用小写账号也可以登陆).求各位大神帮我解答!! 解决方案 解决方案二:你的代码贴出来解决方案三:SQLServer数据库??如果是,那应该不是asp.net(C#)的原因,是数据库的原因,SQLServer不区分大小写.解决方案四:谁知道你是什么方法做的验证呀解决方案五:mssql可以配置是否区分大小写,这不是c#的问题解决方案六:这里只用dr.Read()方法验证判断了

tplink路由器WAN口提示“用户名或密码验证失败”怎么办

设置路由器上网时,路由器WAN口PPPoE拨号不成功,WAN口状态出现"用户名或密码验证失败"的提示,如下图: 请按照以下方法排查: 可能原因:宽带上网账号或口令填写错误 解决办法:登录路由器管理界面,点击 网络参数 >> WAN口设置,请重新填写上网账号和上网口令,注意大小写.字母和数字如"0"和"o".忘记填写后缀如"@adsl"."@163.gd"等问题.可尝试在单机上输入该帐号来确认是否

tplink路由器怎么修改登录用户名和密码

  tplink路由器修改登录用户名和密码的方法 01先用网线把路由器和电脑连接好,再打开电脑上的浏览器 ,在网址栏中输入192.168.1.1 02进入设置界面前会让你输入用户名及密码. 03进入后在左边的菜单栏中找到"系统工具"点开后找到"修改登录口令". 04在修改界面中,输入原来的用户名及其密码,在再下面输入你要更改的用户名及其密码,完成后点击"保存". 05保存后,系统会再次弹出登录界面,再次输入即可.