PHP 登录注册附带邮箱手机号验证

原创 请勿转载


前言

php简单的登录页面与注册页面(有邮箱手机号验证)
源码在github上:https://github.com/XYFAE/php-


一、配置数据库文件

导入数据库信息

<?php
//数据库信息
define('DB_HOST','localhost');//Mysql数据库服务器
define('DB_USER','root');//Mysql数据库用户名
define('DB_PASSWORD','666');//Mysql数据库密码
define('DB_DATABASE','userlogin');//Mysql数据库名
define('DB_PORT','3306');//Mysql数据库端口
?>

配置数据库使用函数

<?php

function Connect($host=DB_HOST,$user=DB_USER,$password=DB_PASSWORD,$database=DB_DATABASE,$port=DB_PORT){
	$link = @mysqli_connect($host, $user, $password, $database, $port);
	if(mysqli_connect_errno()){
		exit(mysqli_connect_error());
	}
	mysqli_set_charset($link,'utf8');
	return $link;
}
function Execute($link,$query){
	$result=mysqli_query($link,$query);
	if(mysqli_errno($link)){
		exit(mysqli_error($link));
	}
	return $result;
}
?>

二、登录注册代码段

1.登录

登录的代码段(login.php):

<?php
require_once 'dbconfig/mysql_PDO.php'; //导入上面写好的配置文件
require_once 'dbconfig/mysql.php';
$conn=Connect();
header('Content-type:text/html; charset=utf-8');
session_start();

if(isset($_POST['login'])){

    $username = trim($_POST['username']); 
    $password = trim($_POST['password']);

    if(($username == '') || ($password == '')){

        echo "用户名或密码不能为空,3秒后跳转到登录页面,请重新登录";
        header('refresh:3;url=login.html');
        exit;
    }
    $password = md5($password);
    $sql ="select * from users where users = '{$username}' and pass = '{$password}'";
    $exec = Execute($conn,$sql);
    //$result = mysqli_fetch_array($exec);
    if (mysqli_num_rows($exec) !== 1) {
        echo "<script>alert('账号或密码错误');</script>";
        header('refresh:0;url=login.html');
        exit;
    }

    $_SESSION['username'] = $username;
    $_SESSION['islogin'] = 1;
    echo "登录成功,3秒后跳转到个人中心,请稍等";
    header('refresh:3;url=index.php');
    exit;
    //$_SESSION['id'] = $result['id'];

    if ($_POST['remember'] == "yes") {
        setcookie('username', $username, time() + 7 * 24 * 60 * 60);
        setcookie('code', md5($username . md5($password)), time() + 7 * 24 * 60 * 60);
    }  else {
        // 没有勾选则删除Cookie
        setcookie('username', '', time() - 999);
        setcookie('code', '', time() - 999);
    } 
    

    header('location:index.php');

}

2.注册

注册代码段(register.php):

<?php
require_once 'dbconfig/mysql_PDO.php'; //导入上面写好的配置文件
require_once 'dbconfig/mysql.php';
$conn = Connect();
header('Content-type:text/html; charset=utf-8');
session_start();

if (isset($_POST['reg'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];
    $rpassword = $_POST['rpassword'];
    $email = $_POST['email'];
    $phone = $_POST['phonenumber'];

    // 判断输入内容是否为空
    if (($username == '') || ($password == '') || ($rpassword == '') || ($phone == '')) {
        echo "<script>alert('用户名、密码、邮箱、手机号、不能为空,请重新注册')</script>";
        header('refresh:1;url=regi
        ster.html');
        exit;
    }
    //判断邮件是否合法&是否被注册
    if (preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $_POST['email'])) {
        $sql = "select * from users where email ='{$email}'";
        $exec = Execute($conn, $sql);
        if (mysqli_num_rows($exec) > 0) {
            echo "<script>alert('邮箱已被注册');</script>";
            header('refresh:1;url=register.html');
            exit;
        }
    } else {
        echo "<script>alert('邮箱格式不正确,请重新注册')</script>";
        header('refresh:1;url=register.html');
        exit;
    }

    //判断手机号是否合法&是否被注册
    if (preg_match("/^1[34578]\d{9}$/", $phone)) {
        $sql = "select * from users where phone='{$phone}'";
        $exec = Execute($conn, $sql);
        if (mysqli_num_rows($exec) > 0) {
            echo "<script>alert('手机号已被注册');</script>";
            header('refresh:1;url=register.html');
            exit;
        }
    } else {
        echo "<script>alert('手机号格式不正确,请重新注册')</script>";
        header('refresh:1;url=register.html');
        exit;
    }

    //验证两次密码是否一致
    if ($password != $rpassword) {
        echo "<script>alert('两次输入的密码不一致'</script>";
        header('refresh:1;url=register.html');
        exit;
    }
    //手机号验证
    function checkPhoneNumber($phone_number){
        //@2017-11-25 14:25:45 https://zhidao.baidu.com/question/1822455991691849548.html
        //中国联通号码:130、131、132、145(无线上网卡)、155、156、185(iPhone5上市后开放)、186、176(4G号段)、175(2015年9月10日正式启用,暂只对北京、上海和广东投放办理),166,146
        //中国移动号码:134、135、136、137、138、139、147(无线上网卡)、148、150、151、152、157、158、159、178、182、183、184、187、188、198
        //中国电信号码:133、153、180、181、189、177、173、149、199
        $g = "/^1[34578]\d{9}$/";
        $g2 = "/^19[89]\d{8}$/";
        $g3 = "/^166\d{8}$/";
        if(preg_match($g, $phone_number)){
            return true;
        }else  if(preg_match($g2, $phone_number)){
            return true;
        }else if(preg_match($g3, $phone_number)){
            return true;
        }
 
        return false;
    }
    if(checkPhoneNumber($phone)!==true){
        echo "<script>alert('手机号码格式不正确,请重新注册')</script>";
        header('refresh:1;url=register.html');
    }

    // 判断用户名是否存在
    $sql = "select * from users where users='{$username}'";
    $exec = Execute($conn, $sql);
    $pass = mysqli_fetch_row($exec);
    if ($pass) {
        echo "<srcipt>alert('用户已存在')</script>";
        header('refresh:1;url=register.html');
        exit;
    }

    // 创建用户
    $password = md5($password);
    $sql = "insert into users(users,pass,email,phone) values('{$username}','{$password}','{$email}','{$phone}')";
    $exec = Execute($conn, $sql);
    if ($exec) {
        echo "<script>alert('注册成功')</script>";
        header('refresh:1;url=index.php');
        $_SESSION['username'] = $username;
        $_SESSION['islogin'] = 1;
        exit;
    }else{
        echo "?";
    }


}

3.主页

主页代码段(index.php)

<?php
header('Content-type:text/html; charset=utf-8');
// 开启Session
session_start();

// 首先判断Cookie是否有记住了用户信息
if (isset($_COOKIE['username'])) {
    # 若记住了用户信息,则直接传给Session
    $_SESSION['username'] = $_COOKIE['username'];   
    $_SESSION['islogin'] = 1;
}
if (isset($_SESSION['islogin'])) {
    // 若已经登录
    echo "你好! " . $_SESSION['username'] . ' ,欢迎来到个人中心!<br>';
    echo "<a href='logout.php'>注销</a>";
} else {
    // 若没有登录
    echo "您还没有登录,请<a href='login.html'>登录</a>";
}

4.注销

<?php
header('Content-type:text/html; charset=utf-8');
// 注销后的操作
session_start();
// 清除Session
$username = $_SESSION['username']; //用于后面的提示信息
$_SESSION = array();
session_destroy();

// 清除Cookie
setcookie('username', '', time() - 999);
setcookie('code', '', time() - 999);

// 提示信息
echo "欢迎下次光临, " . $username . '<br>';
echo "<a href='login.html'>重新登录</a>";


总结

如果代码有问题 欢迎评论 ,所有代码都在github上

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值