zoukankan      html  css  js  c++  java
  • 公益图书馆-学习笔记一

    1、HTML <caption> 标签

    caption 标签必须紧随 table 标签之后。您只能对每个表格定义一个标题。通常这个标题会被居中于表格之上。

    <table border="6">
    <caption>表格标题</caption>

    2、模板继承是thinkphp的一项更加灵活的模板布局方式,模板继承不同于模板布局。

    模板可以定义一个基础模板,并且定义相关的区块(block),然后继承(extend)该基础模板的子模板中就可以对基础模板中定义的区块进行重载

    例如下面定义了一个base.html基础模板及block

    <html>
     <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     <block name="title"><title>标题</title></block>
     </head>
     <body>
     <block name="menu">菜单</block>
     <block name="left">左边分栏</block>
     <block name="main">主内容</block>
     <block name="right">右边分栏</block>
     <block name="footer">底部</block>
     </body>
     </html>

    然后我们在子模板(其实是当前操作的入口模板)中使用继承:

    <extend name="base" />
     
    <block name="title"><title>{$title}</title></block>

    <block name="menu"> <a href="/" >首页</a> <a href="/info/" >资讯</a> <a href="/bbs/" >论坛</a> </block>

    <block name="left"></block>//为空区块,则表示删除基础模板中的该区块内容

    <block name="content"> <volist name="list" id="vo"> <a href="/new/{$vo.id}">{$vo.title}</a><br/> {$vo.content} </volist> </block>

    <block name="right"> 最新资讯: <volist name="news" id="new"> <a href="/new/{$new.id}">{$new.title}</a><br/> </volist> </block>

    <block name="footer"> @ThinkPHP2012 版权所有 </block>

    在当前子模板中,只能定义区块而不能定义其他的模板内容,否则将会直接忽略,并且只能定义基础模板中已经定义的区块

    在子模板中,可以对基础模板中的区块进行重载定义,如果没有重新定义的话,则表示沿用基础模板中的区块定义,如果定义了一个空的区块,则表示删除基础模板中的该区块内容。

    子模板中的区块定义顺序是随意的。


    3、当输入用户名、密码等信息时要采用POST提交数据可加密

    //如果不是post提交,直接报错。
    if (!IS_POST) halt("页面不存在");

    利用 I 函数来获取刚提交的POST数据

    $username = I('post.username');
    $password = I('post.password');
    $verifyCode = I('post.verify');
    $autologin=I('post.autologin');


    4、数据库操作

    登陆验证用户名及密码:利用用户名找出数据库中md5加密后的密码与输入的密码(进行md5)对比

    $User = D("User"); //获取数据表对象
    $res = $User->where(array("username" => $username))->select();  //筛选出指定username的对象

    //返回数据data是json对象,{"info":"demo info","status":"y"}


    5、一些变量含义

    $num=session('loginTime'); //登陆次数,保存在服务器端写入session

    session('needCode',false); //不需要验证码

    if(session('loginTime')>3)
    {
    session('needCode',true);
    }  //如果登陆次数大于3次则显示验证码


    6、验证码

    ThinkPHP的扩展中由图像处理类Image以及用于生成随机验证码的字符处理类String共同完成验证码功能。

    生成验证码其实很简单,只需要在你的Action中添加操作方法,一般为了避免受权限控制的影响,我们通常把这个方法放到公共Action或者无需授权就能访问的控制器(例如PublicAction)中,下面我们以放到PublicAction控制器类中为例,代码如下:

    class PublicAction extends Action{
        Public function verify(){
            import('ORG.Util.Image');
            Image::buildImageVerify();
        }
     }

    定义后,我们可以在任何需要验证码的模块中调用Public模块的verify方法来显示验证码,需要做的仅仅是在需要的模板中添加如下调用代码:

    <img src='!-APP-!/Public/verify/' />

    这样,我们访问该页面后就能看到默认的验证码图像显示,如下所示:

    验证码显示设置

    默认情况下,验证码采用随机的4位数字显示,我们可以通过参数来设置不同的显示方式,Image类的buildImageVerify方法用法如下:

    buildImageVerify 生成图像验证码
    用法 buildImageVerify($length,$mode,$type,$width,$height,$verifyName)
    参数 length 验证码的长度,默认为4位数
    model 验证字符串的类型,默认为数字,其他支持类型有0 字母 1 数字 2 大写字母 3 小写字母 4中文 5混合
    type 验证码的图片类型,默认为png
    width 验证码的宽度,默认会自动根据验证码长度自动计算
    height 验证码的高度,默认为22
    verifyName 验证码的SESSION记录名称,默认为verify

    验证输入

    每次生成验证码的时候,就会通过SESSION记录本次的验证码的md5后的字符串信息,所以,要检查验证码是否正确,我们只需要在Action中使用下面的代码判断就行了:

    if(session('verify') != md5($_POST['verify'])) {
       $this->error('验证码错误!');
     }

    建议使用session方法来获取SESSION值,因为验证码生成方法里面也是采用的session方法保存的,可以避免受session前缀的影响而出错。这里的verify名称取决于你的验证码的verifyName参数的值。
    如果你的session功能不正常,可能会导致验证码检测报错的情况发生。

    中文验证码

    BuildImageVerify方法不支持中文验证码的显示,如果需要显示中文验证码,请使用GBVerify方法,用法示例:

    Public function verify(){
        import("ORG.Util.Image");
        Image::GBVerify();
     }

    7、ThinkPHP中实例化对象M()和D()的区别?ThinkPHP如何实例化对象?

    在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会自动调用M方法。
    通俗一点说:
    M实例化参数是数据库的表名。
    D实例化的是你自己在Model文件夹下面建立的模型文件

  • 相关阅读:
    ABAP 更改DN外向交货单
    ABAP 参照SO item 创建DN
    ABAP 获取客户供应商的电话,地址,email等相关信息
    ABAP 自定义的ALV导出excel按钮,导出ALV内表中其中某几列的数据
    ABAP 后台JOB布置例子
    ABAP 选择屏幕字段动态隐藏和显示
    ABAP 选择屏幕上的导入模板下载按钮
    ABAP 选择屏幕文件导入时,单元格超50字符怎么处理
    ABAP 选择屏幕字段动态隐藏和显示
    人脸检测数据集
  • 原文地址:https://www.cnblogs.com/wingjay/p/3900020.html
Copyright © 2011-2022 走看看