wordpress的validation


Updated on: August 28, 2020 in Wordpress by

wp的validation ,  inval()  函数来检查是不是integer,  validation 用来check the data,  确保是valid的data,  validate的函数通常是 isset() ; empty(); strlen(); pre_match(); count(); in_array(); 只有两种结果,valid和Invalid。 

sanitizition就是过滤数据, 函数如 sanitize_text_field($post[‘price’] ) , 预防别人在text的input里面输入script之类的标记来执行, sanitization can actually modify the data.  在你不想用很严格的策略来validation的时候你又要确保数据得到过滤,就用sanitization ,  sanitization 有几个函数,如:

sanitize_email() 

sanitize_text_field()

sanitize_user()

esc_url_raw(0 

esc_url() 之类的是wordpress escaping 函数,  如果有已经代码被注入到我们的数据库, 然后我们又不想让这些代码在前端执行,  我们就要用到escaping函数,escaping 是securing the output,  过滤掉html tag和scirpt tags 等,  wordpress有很多escaping函数,但是 如果要展现在html上, 就用到esc_html() 函数,  esc_html 作用就是如果 是js 代码,通常会以文本形式展现在html上。 

展现在html上的title, content之类的,或者自定义字段之类的,都用到esc_html()函数, 如果是Img或者a的url之类的,都用到esc_url函数, 如<img  src=”<?php echo esc_url($url) ?>” >;

esc_js() 用在script 里面执行特定的onclick 函数之类。  esc_attr() 用在属性里面,  用在class 或者title之类属性里面, esc_textarea()  用在  <textarea> 输入内容,

escaping和sanitization的区别:

比方说: 有一段代码, 

sometext <bold> here </bold>

escaping 直接输出的是  sometext <bold> here </bold> 文本, 而sanitization过滤掉的html标签, 输出 sometext here. 

有一些函数直接已经escaping了比方说 the_permalink() 已经直接是escaping的输出,  用get_permalink则要escaping输出, wordpress 直接带the的函数基本都是escaping输出,直接echo了的函数都是已经escaping .  带get的都是要escape,