整理乙個接收指定型別引數的類sanitize

2021-10-05 18:49:49 字數 1147 閱讀 8232

此類用於接受作者指定的引數說明物件,對引數的名稱和型別進行驗證,還可以指定乙個額外的函式名稱對引數進行處理

<?php

function sanitize_vars(&$vars, $signatures, $redir_url = null) else

exit();

}$tmp[$name] = $vars[$name];

if(isset($sig['type']))

if(isset($sig['function']))

}$vars = $tmp;

}

應用舉例:

$sigs = array(

'email' => array('required' => true, 'type' => 'string', 'function' => 'addslashes'),

'passwd' => array('required' => true, 'type' => 'string', 'function' => 'addslashes')

);sanitize_vars($_post, $sigs);

其中的, 'function' => 'addslashes'是可選的.也可以指定別的自定義函式.這裡主要是對使用者輸入進行處理,防止注入.

每個選項都有個required鍵值對,說明引數是否是必須的,type的型別和settype一致,

settype ( mixed &$var , string $type ) : bool

將變數 var 的型別設定成 type。

引數var

要轉換的變數。

type

type 的可能值為:

◦ "boolean" (或為"bool",從 php 4.2.0 起)  

◦ "integer" (或為"int",從 php 4.2.0 起)  

◦ "float" (只在 php 4.2.0 之後可以使用,對於舊版本中使用的"double"現已停用)  

◦ "string"  

◦  "array"  

◦  "object"  

◦  "null" (從 php 4.2.0 起)

有了這個神器,就多了一道安全屏障,如果型別設定為int,那就只能接收整型的引數,否則會被該函式自動攔截處理了.

乙個可變引數型別檢查的示例

最近在修正 警告,發現封裝的列印語句不會進行引數的型別檢查,而用printf卻是可以的。於是上網找了下資料,學習了一下。對於函式引數型別的檢查,在gcc環境中可以使用 attribute format printf,n,m 的形式。其中n表示第幾個引數是格式化字串,m指明從第幾個引數開始做檢查。對於...

乙個介面多個實現,指定實現類

目的 乙個介面多個實現時,根據不同的條件呼叫不用的實現 1 有如下介面 public inte ce pay2 有如下兩個實現 實現一 service weixinpay public class weixinpay implements pay 實現二 service alipay public ...

C 將乙個物件轉換為指定型別

適用 普通的物件,並且有預設的無引數建構函式 region 將乙個物件轉換為指定型別 將乙個物件轉換為指定型別 待轉換的物件 目標型別 轉換後的物件 public static object converttoobject object obj,type type else if underlyin...