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,