php如何实现验证码登录

本文操作环境:windows10系统、PHP 7、thinkpad t480电脑。

验证码在我们的日常生活中非常常见,使用验证码有诸多好处,如:

防止恶意的破解密码。如一些黑客为了获取到用户信息,通过不同的手段向服务器发送数据,验证猜测用户信息的准确性。

防止恶意的刷票,论坛灌水。这种在论坛中长期存在灌水的现象,比如贴吧,不断发送帖子。现在百度贴吧已经针对用户发帖的时间做了一个时间的限制,当一定时间内发帖过多是无法继续发帖的。

防止恶意的请求。如用户提交一个表单信息,通过不断向后台请求数据信息造成服务器资源的浪费,以及恶意的攻击。

趣味性。这一点属于个人观点,当我们提交表单的时候,如遇到一些有趣的验证码方式,能够增强用户对网站的喜爱程度。

获取用户信息。这一点在现目前的站点中是屡见不鲜的事情了。如我们注册一个站点的账号,需要通过手机验证码才可以注册成功。网站在拿到用户的电话号码之后会给手机号主发送一些营销信息。

那么我们该如何实现验证码登录功能呢?一起来看下吧!

环境配置:

只需要本地安装了php的GD扩展库即可使用。如何查看呢,创建一个PHP文件在该文件中写入<?php phpinfo();?>,访问该文件,如果查看到了GD库已经安装了,则可以使用。

具体代码实现:

我们先创建一个html页面显示验证码

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>登陆</title>
</head>
<body>
    <fORM action="./login.php" method="post">
        <img src="image_captcha.php"  onclick="this.src='image_captcha.php?'+new Date().getTime();" width="200" height="200"><br/>
        <input type="text" name="captcha" placeholder="请输入图片中的验证码"><br/>
        <input type="submit" value="验证">
    </form>
</body>
</html>

创建一个PHP文件,接受前端页面传入的验证码信息

<?php

session_start();
//1. 获取到用户提交的验证码
$captcha = $_POST["captcha"];
//2. 将session中的验证码和用户提交的验证码进行核对,当成功时提示验证码正确,并销毁之前的session值,不成功则重新提交
if(strtolower($_SESSION["captchaimg"]) == strtolower($captcha)){
    echo "验证码正确!";
    $_SESSION["captcha"] = "";
}else{
    echo "验证码提交不正确!";
}

创建验证码生成PHP文件

<?php

// 开启session
session_start();
//1.创建黑色画布
$image = imagecreatetruecolor(100, 30);
 
//2.为画布定义(背景)颜色
$bGColor = imagecolorallocate($image, 255, 255, 255);
 
//3.填充颜色
imagefill($image, 0, 0, $bgcolor);
 
// 4.设置验证码内容
 
//4.1 定义验证码的内容
$content = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
 
//4.1 创建一个变量存储产生的验证码数据,便于用户提交核对
$captcha = "";
for ($i = 0; $i < 4; $i++) {
    // 字体大小
    $fontsize = 10;
    // 字体颜色
    $fontcolor = imagecolorallocate($image, mt_rand(0, 120), mt_rand(0, 120), mt_rand(0, 120));
    // 设置字体内容
    $fontcontent = substr($content, mt_rand(0, strlen($content)), 1);
    $captcha .= $fontcontent;
    // 显示的坐标
    $x = ($i * 100 / 4) + mt_rand(5, 10);
    $y = mt_rand(5, 10);
    // 填充内容到画布中
    imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
}
$_SESSION["captcha"] = $captcha;
 
//4.3 设置背景干扰元素
for ($$i = 0; $i < 200; $i++) {
    $pointcolor = imagecolorallocate($image, mt_rand(50, 200), mt_rand(50, 200), mt_rand(50, 200));
    imagesetpixel($image, mt_rand(1, 99), mt_rand(1, 29), $pointcolor);
}
 
//4.4 设置干扰线
for ($i = 0; $i < 3; $i++) {
    $linecolor = imagecolorallocate($image, mt_rand(50, 200), mt_rand(50, 200), mt_rand(50, 200));
    imageline($image, mt_rand(1, 99), mt_rand(1, 29), mt_rand(1, 99), mt_rand(1, 29), $linecolor);
}
 
//5.向浏览器输出图片头信息
header('content-type:image/png');
 
//6.输出图片到浏览器
imagepng($image);
 
//7.销毁图片
imagedestroy($image); 

--结束END--

本文标题: php如何实现验证码登录

本文链接: https://www.lsjlt.com/news/291.html (转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢

  • php如何实现验证码登录

    php实现验证码登录的方法:1、创建html页面显示验证码;2、创建php文件,接受前端页面传入的验证码信息;3、创建验证码生成PHP文件。
    阅读数:147 php 验证码
  • php如何实现获取验证码

    php实现获取验证码的方法:【<?php session_start();$image = imagecreatetruecolor(100, 30);imagecolorallocate(int im, int red, int...】。
    阅读数:587 php 验证码
  • php如何实现自动生成验证码

    php实现自动生成验证码的方法:【session_start(); $width = 150; $height = 40; $image = imagecreatetruecolor($width, $height);$bgcol...】。
    阅读数:843 php 验证码
  • php怎么实现图片验证码

    php实现图片验证码的方法:1、加载GD扩展;2、创建画布并在画布上增加内容;3、通过imagepng保存输出;4、释放资源;5、生成随机验证码数据即可。
    阅读数:244 php
  • php怎么实现数字验证码

    php实现数字验证码的方法:1、通过imagecreatetruecolor函数实现验证码底图;2、通过imagecolorallocate方法实现数字验证码;3、增加干扰元素;4、存储验证信息即可。
    阅读数:487 php
  • php不用验证码如何防止ddos

    php不用验证码防止ddos的示例:1.在相关的php文件中,添加防止ddos攻击代码://查询禁止IP$ip =$_SERVER['REMOTE_ADDR'];$fileht=".htaccess2";if(!file_exists($f
    阅读数:863 ddos PHP
  • php怎么实现发送验证码的功能

    php实现发送验证码功能的方法:1、创建好HTML和js文件;2、创建“Msm.php”文件,内容为“public function sendmsm(){...}”;3、通过CURL发送HTTP请求即可。
    阅读数:180 php 验证码
  • php 验证码不变怎么办

    php验证码不变的解决办法:1、使用“javascript:ckimg();”方法实现更换一张验证码;2、通过“οnclick="this.src='...”方法实现点击换图片即可。
    阅读数:263 php
  • php怎么发送短信验证码

    发送方法:1、实名认证并开通短信API接口服务,获取API请求KEY;2、调用接口申请短信模板并等待审核通过;3、调用API接口,通过“function juheHttpRequest($url,$params=false,$ispost=0){...}”方式发起网络请求,按照申请的模板发生短信到指定手机号即可。
    阅读数:180 php
  • 怎么解决php验证码失效问题

    php验证码失效的解决办法:1、开启gd2选项;2、使用windows自带的记事本编辑器对网站配置文件进行修改和保存;3、使用“ob_clean()”方法清除相关缓存;4、重写规则“.htaccess”;5、开启Redis服务即可。
    阅读数:407 验证码 php
  • php实现自动生成验证码的实例讲解

    在本篇文章里小编给大家整理了一篇关于php实现自动生成验证码的实例讲解内容,有需要的朋友们可以跟着学习下。
    阅读数:801 php 验证码生成
  • 如何使用php+js实现极验,拖动滑块验证码验证表单

    这篇文章给大家分享的是有关如何使用php+js实现极验,拖动滑块验证码验证表单的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。代码实现html文件
    阅读数:258 php js
  • php验证码后台不能生成怎么办

    php验证码后台不能生成的解决办法:1、添加“header('Content-type: image/png')”语句;2、通过“ob_clean();”清除输出缓存即可。
    阅读数:592 php 验证码
  • PHP如何实现HTTP验证

    这篇文章主要介绍了PHP如何实现HTTP验证,帮助大家更好的理解和学习使用PHP,感兴趣的朋友可以了解下
    阅读数:864 PHP HTTP验证 PHP http
  • php如何实现SSO登录

    php实现SSO登录的方法:1、用户进入登录页生成自定义SID,写入redis和cookie;2、在业务的BaseController的构造函数,写一个更新redis的操作;3、js构造跳转事件,然后服务端根据SID查看该用户存redis。
    阅读数:389 php SSO
  • php中 验证码不同步怎么办

    php中验证码不同步是因为页面加载login.php页面时,图片的加载跟其他标签加载是异步的,所以其他标签信息先加载,而后才会去加载图片。
    阅读数:736 php
  • php验证码显示x是什么意思

    php验证码显示x表示验证码没有正常显示出来,其解决办法:1、找到在“checkCode.php”文件;2、在“checkCode.php”头部增加“ini_set('display_errors','Off');”语句即可。
    阅读数:310 验证码 php
  • php如何实现自动登录

    php实现自动登录的方法:1、在第一次登录时存储自动登录的cookie,作为用户下次自动登录时验证;2、在下次登录初始化时,检测电脑中是否有$_COOKIE['autoLogin']的数据,如果有则自动登录。
    阅读数:707 php 自动登录
  • php怎么实现微信扫码登录

    php实现微信扫码登录的方法:1、通过js实例化一个对象;2、在html中定义一个div并包含二维码;3、在$(document).ready()内进行实例化即可。
    阅读数:712 php 微信
  • PHP怎么实现扫码登录QQ

    PHP实现扫码登录QQ的方法:1、通过“public function QRcode(){...}”方法获取登录验证码;2、动态传入QQ微信的类名字符串快速实例化;3、生成二维码并轮询检测二维码状态即可。
    阅读数:812 qq php