關於 PHP, Linux, Open Source 及個人生活記載的網誌。
RSS icon
  • PHP 過濾器: PECL Input Filter

    Posted on April 9th, 2007 Sam Tang No comments

    過濾用戶輸入一直也是 web 應用很重要的安全工作,在 PHP 內除了自行編寫過濾特別字符串的程式外,也可以用現成的 PECL extension: Input Filter extension。要使用這個 extension 需要在 shell 輸入以下指令安裝:

    pecl install filter

    以下例子假設有一張表單,裡面有兩個欄位: name, age 及 email。而我們希望 name 會用字串;age 是數字;email 就是電郵格式,那麼便可以這樣做:

    PHP:
    1. <?php
    2. $clean = array();
    3.  
    4. $clean['name']  = filter_input(INPUT_POST, 'name',  FILTER_VALIDATE_REGEXP, array('regexp' => '^[\w ]+$'));
    5. $clean['age']   = filter_input(INPUT_POST, 'age',   FILTER_VALIDATE_INT);
    6. $clean['email'] = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
    7. ?>

    以上會使用 filter_input 函式來過濾輸入,如果輸入是合符規定,會回傳沒有改動的變數;如果不符合規定,便會回傳 FALSE,而如果變數不存取便會回傳 NULL。

    如果不想回傳 FALSE,而是回傳經過處理的輸入,假設 $_POST['name'] 是 "<b>My Name</b>" 可以這樣做:

    PHP:
    1. <?php
    2. $clean = array();
    3. $clean['name']  = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
    4. ?>


    Leave a reply

    *
    To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
    Click to hear an audio file of the anti-spam word