成果

网站能实现判断账户信息是否合法,同时附带验证码验证登录。在用户输入正确的用户名与密码后会有登录成功的弹窗,若输入的账户不存在,则会跳转至注册页面。

实现过程

项目文件分配:

1.首先创建login.html

实现的是用户登录的界面,可以自定义css美化页面,这里主要目的是功能的实现而非界面美观。

用户登录用户登录

2.创建login.php,将其与login.html关联

alert('账号不存在或密码错误,点击前往注册');location='./register.php'";//exit('账号或密码错误');}else{//存在返回条目证明用户账号密码匹配,进入主页面session_start();$_SESSION['username']=$_POST['username'];echo "alert('欢迎');location='./index.php'";} }require './view/login.html';

3.注册页面register.html

用户注册用户注册

4.创建register.php,与register.html关联。

<?phpheader('content-type:text/html;charset=utf-8');//注册页面require 'login_db_connect.php';//连接数据库//判断表单是否提交,用户名密码是否提交if (isset($_POST['username'])&&isset($_POST['pwd'])){//登录表单已提交//获取用户输入的用户名密码$user=$_POST["username"];$pwd=$_POST["pwd"];//判断提交账号密码是否为空if ($user=='' || $pwd==''){exit('账号或密码不能为空');}else {$sql="insert into user(username,password) values ('$user','$pwd');";//添加账户sql语句$select="select username from user where username='$user'";$result=mysqli_query($con, $select);//执行sql语句$row=mysqli_num_rows($result);//返回记录数if(!$row){//记录数不存在则说明该账户没有被注册过if (mysqli_query($con,$sql)){//查询insert语句是否成功执行,成功将返回 TRUE。如果失败,则返回 FALSE。//跳转登录页面echo "alert('注册成功,请登录');location='./login.php'";}else{//失败则重新跳转注册页面echo "alert('注册失败,请重新注册');location='./regsiter.php'";}}else{//存在记录数则说明注册的用户已存在echo "alert('该用户已经存在,请直接登录');location='./login.php'";}}}require './view/register.html';

5.创建code.php,用于生成验证码

<?php//用于生成验证码//创建验证码画布$img_w = 100;//验证码的宽度$img_h = 30; //验证码的高度$img = imagecreatetruecolor($img_w, $img_h); //创建画布$bg_color = imagecolorallocate($img,0xcc,0xcc,0xcc); //画布颜色imagefill($img,0,0,$bg_color); //背景色//生成验证码文本$count = 4; //验证码位数$charset = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789'; //随机因子$charset_len = strlen($charset)-1; //计算随机因子长度(作为取出时的索引)$code = ''; //保存生成的验证码for($i=0; $i<$count; ++$i) {//通过索引取出字符,mt_rand()用于获取指定范围内的随机数$code .= $charset[mt_rand(0,$charset_len)];}//将生成的文本保存到Session中session_start();//启动session$_SESSION['captcha'] = $code;//在画布中绘制验证码文本$fontSize = 16;//文字大小$fontStyle = './fonts/SourceCodePro-Bold.ttf'; //字体样式//生成指定长度的验证码for($i=0; $i<$count; ++$i){//随机生成字体颜色$fontColor = imagecolorallocate($img,mt_rand(0,100),mt_rand(0,50),mt_rand(0,255));imagettftext ($img,//画布资源$fontSize,//文字大小mt_rand(0,20) - mt_rand(0,25),//随机设置文字倾斜角度$fontSize*$i+20,mt_rand($img_h/2,$img_h), //随机设置文字坐标,并自动计算间距$fontColor,//文字颜色$fontStyle,//文字字体$code[$i]//文字内容);}//为验证码图片生成彩色噪点for($i=0; $i<300; ++$i){//随机生成颜色$color = imagecolorallocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));//随机绘制干扰点imagesetpixel($img,mt_rand(0,$img_w),mt_rand(0,$img_h),$color);}//绘制干扰线for($i=0; $i<10; ++$i){//随机生成干扰线颜色$color = imagecolorallocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));//随机绘制干扰线imageline($img,mt_rand(0,$img_w),0,mt_rand(0,$img_h*5),$img_h,$color);}header('Content-Type: image/gif'); //输出图像imagegif($img);

6.创建login_db_connect.php,用于数据库连接

数据库连接方式有多种,例如PDO连接,有兴趣的朋友可以自行了解

<?php//用于登录界面数据库连接//设置字符集header('Content-type:text/html;charset=utf8');//连接数据库$con=mysqli_connect("localhost","root","Huawei@123","LMS");//此处root为登录mysql的用户名,其后依此是密码与数据库名称if (mysqli_connect_errno($con)){echo "连接 MySQL 失败: " . mysqli_connect_error();} R

*注意:仅供学习参考,转载请注明出处。感谢支持。

源代码下载

https://url79.ctfile.com/d/33928079-50033272-dfd303?p=7430 (访问密码:7430)