You are here

Drupal专业开发指南 第20章 考虑数据类型

g089h515r806 的头像
Submitted by g089h515r806 on 星期四, 2009-08-27 12:57

当在一个像Drupal这样的系统中处理文本时,由于用户输入将会作为站点的一部分展示出来,所以如果将用户输入看作一个带有类型的变量,那么就能帮我们很好的理解这个系统。如果你使用过强类型语言写过程序,比如JAVA,那么你将熟悉强类型变量。例如,在Java中,一个整数就是一个整数。在PHP(弱类型语言)中,使用PHP的自动类型转换,根据上下文,你既可以把整数看作字符串,也可以看作整数。但是优秀的PHP程序员都会仔细的考虑类型,并恰到好处的利用自动类型转换。同样,尽管是通过用户输入得到的,节点提交表单中的“Body”(主体)字段,也可以作为一个文本进行处理,如果我们把它看作具有特定类型的文本,那么就会更好的理解的它的本质。用户输入的是纯文本么?用户输入的文本中是否带有HTML标签,如果带有的话是否将它们也一同显示出来?如果带有HTML标签的话,这些标签中是否允许带有恶意的标签,比如JavaScript,它可以将你的页面替换成一个手机铃声的广告?在展示给用户的页面中,采用HTML格式;用户输入是各种文本格式类型的变体,在展示它们以前,必须安全的将其转化为HTML。如果我们使用这种方式来考虑用户输入的话,这能够帮助我们理解Drupal的文本转换功能的工作原理。文本输入的常见类型,还有将文本转化为另一种格式的函数,如表20-1所示。

 
20-1 将一种文本类型安全的转化为另一种类型
源格式      目标格式            Drupal 函数              功能
Plain text         HTML               check_plain()           将特定字符编码为HTML实体
HTML text         HTML               filter_xss()       使用一组标签,检查和清理HTML
Rich text          HTML               check_markup()     使用过滤器过滤
Plain text         URL                drupal_urlencode() 将特定字符编码为%0x
URL                HTML               check_url()        清除有害的协议,比如javascript,
Plain text         MIME               mime_header_encode() 编码非ASCII字符, UTF-8编码字符
 

老葛的Drupal培训班  Think in Drupal

Drupal版本: