原创 请勿转载
前言
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上