• php_mvc实现步骤九(登录验证码,退出-登录标记)


    shop34-17-登录验证码

    验证码的分析

    登录:防止暴力破解

    论坛:防止灌水水

    展示类:被抓取。

    需要技术:

    图片处理技术。

    会话session技术。

    PHP图片处理技术 – GD

    具体操作步骤

    开启GD扩展

    Apache restart

    场景:

    制作500×300的绿色图片

    创建画布

    画布,一种资源型数据。可以操作的图像资源。

    创建新画布(新建)

    ImageCreate(,高)创建基于调色板的画布。

    imageCreateTrueColor(,高);创建真彩色的画布。

    基于图片创建画布(打开)

    imageCreateFromJPEG(图片地址);

    imageCreateFromPNG(图片地址);

    imageCreateFromGIF(图片地址);

    操作画布

    分配颜色:如果需要在画布上使用某个颜色,应该先颜色分配到画布上。

    使用函数:

    颜色标识 = imageColorAllocate(画布RGB);

    颜色的表示方式:

    RGB

    填充画布:填充点,连续并且颜色相同的点进行填充(替换)

    使用函数:

    imageFill(画布, 填充位置x 填充位置Y颜色标识)完成

    位置采用坐标进行管理:

    原点00,画布的左上角。

    向右x轴增加,向下Y增加。

    右下角坐标:width-1,height-1

    输出画布

    画布中处理好的图样信息,输出出来。

    典型

    1输出到图片文件。

    2直接输出。

    使用函数:

    imagePNG(画布[, 文件地址]):

    imageJPEG();

    imageGIF();

    如果没有第二个参数,表示直接输出。

    如果直接输出到浏览器,需要告知浏览器,响应数据类型应该是PNG格式的图片:

    使用指令Content-type

    tip:一个画布可以输出多次,输出为各种格式!

    销毁画布资源

    imageDestroy();

    项目中实现验证码

    验证码工具

    Framework/tool/Captcha.class.php

    自动加载:

    生成验证码图片:

    Session开启重复避免:

    背景图位置:

    登录表单时展示

    登录表单页面,通过IMG标签,请求生图片的URL地址,展示图片。

    <img src=”URL” />

    增加一个动作,用于完成生成后台登录界面的验证码图片:

    Back/AdminController->captchaAction();

    页面img标签的src属性,请求该动作:

    Tip:如果图片显示失败,如何调试?

    应该直接请求生成图片的地址而不是在img标签中查看。

    我的程序,应该将captchaAction()也列为登入认证例外:

    后台的平台控制器:

    结果

    点击更换:

    通过点击事件,对生产验证码图片的地址重新请求,形成新验证码,进行展示!

    如果img标签的src属性被更改,则浏览器会对新的url进行请求,展示在img图片区域内。

    验证管理信息前验证

    验证管理员信息的合法性前,对验证码作出验证:

    Back/AdminController->checkAction();

    增加验证码工具类Captcha的方法

    checkCaptcha()

     

    Back/AdminController->checkAction();

    利用上面的方法完成验证:  

    tip:图片程序错误解析

    step1 请求生成图片的URL

    语法错误

    逻辑错误:

    此时,如果出现语法错误,页面会有相应的提示。

    但是没有语法错误,就如上面的结果,提示图片内部错误无法显示:

    Step2header(‘Content-Type:image/jpeg’)注释

    解决即可!

    图片不能展示的原因:额外输出

    BOMutf-8编码文件的签名,三个字节的隐藏字符。也是输出的!

    shop34-18-退出-登录标志

    退出

    销毁登录标志,

    Session中存储的is_login

    控制器-动作

    修改top模板,请求到退出动作:   

    登录标志

    通常还具有存储当前登录用户管理员)信息的功能!

    存储登录标志时,获取当前管理员信息,存储到session

    Back/AdminController->checkAction();

    需要back/AdminModel->check()方法,返回的为管理员信息合法情况下):

    back/PlatformController->_checkLogin()验证管理员是否登录时,使用admin下标:

    退出时,销毁的也是该标志:

    Back/AdminController->logoutAction();

    页面上可以获取管理员信息:

    Back/top.html中,显示你好 管理员

  • 相关阅读:
    Android:控件GridView的使用
    Android:监听ListView
    Android:控件ListView列表项与适配器结合使用
    Android:删除模拟器中没用的应用
    Android:Activity之间跳转和参数传递
    Android:常见错误提示
    删除appcompat_v7会出很多错误
    Android工具:延展图片NinePatch
    Android:布局实例之模仿QQ登录界面
    Android:android:gravity 和 android:layout_Gravity 的区别
  • 原文地址:https://www.cnblogs.com/ybygb-geng/p/9913430.html
Copyright © 2020-2023  润新知