技术开发 频道

让开发变得简单 使用cakephp进行Forms确认

    【IT168 技术文档】在具体的工作中,常常因为各种原因需要去猜测用户的输入内容和方式以防止有些用户故意输入一些奇特的,古怪的,比较变态的内容。对于开发者来说,这是一件非常痛苦的事情,所以很多时候并没有特别的去费尽心力的完成,结果呢,那就是不正确的数据,交叉的脚本以及 sql 注入的攻击漏洞从星期1开始就会让你焦头烂额。

    现在这些问题看起来仍然会发生:你必须在每一页都作用户输入验证。每个开发者都要做的严格的数据验证,详细的应用设置看起来其实可以使用一个自动的框架来完成。CAKEPHP就是为了这个目的产生的。通过上一次的介绍后,这次我来给介绍另一种方法,能让你的开发变得简单的CakePHP的数据确认功能。

    实例演示

    CakePHP提供了一些能力来验证数据是否是正确的email address (VALID_EMAIL), year (VALID_YEAR), number (VALID_NUMBER), or non-empty (VALID_NOT_EMPTY).你可以附加一个检测给数据模型,通过命名为$validate的数组来印射为对应的模式数值。在适当的模式类中转让一些属性。例如,想想你把字段NUMBER给player model,用于代替player's jersey number,明显的只有数字可以被允许,所以VALID_NUMBER印射到了NUMBER字段,就像
    <?php
    class Team extends AppModel
    {  var $name = 'Team';
     var $displayField = 'name';
      var $validate = array(
        'number' => VALID_NUMBER
      );
    }
    ?>
    Once added, only numeric values will be accepted when inserting or modifying the data residing in the number field.

Custom Validators
    CakePHP的默认确认非常实用,当然你也可以自己定义自己的强制确认内容。CakePHP允许使用Perl-compatible regular expressions来进行自己定义。NFL球队经常使用各种字符来做球队的队名其中还有大量的空格,例如Pittsburgh Steelers" and "Ohio State Buckeyes"是正确的数据,"PittRulez 43" and "OSU#1Champs"就不是。要实现这样的确认,你需要自己修改已经完成得Team 模块,但是这次,只需要创建一个简单的表现规则来只允许字母和空格就可以了。例如
    <?php

class Team extends AppModel
    {
      var $name = 'Team';
      var $displayField = 'name';
      var $validate = array(
        'name' => '/^[a-zA-Z ]+$/'
      );
    }
    ?>

    关于cukephp对于错误信息的处理方式,请参考http://www.developer.com/open/article.php/3642016
    

0
相关文章