iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 12
0
Modern Web

你說Codeigniter還能怎麼做?系列 第 12

[Day12] GET/POST傳入的資料是否正確?

上次我們新增第三方套件來取得GET, POST資料,並且驗證是否遺漏必填項目,這次我們一樣透過函式來返還漏填的內容。

返回遺漏項目

我們可以同樣在libraries/Getpost.php新增函式:

  /**
   * 檢查必填項目,沒有被填寫到的資料就會被丟回陣列回傳
   */
  function report_required($requred, $type = 'GET') {
		$CI =& get_instance(); // 載入CI元件
		$CI->load->helper('url'); // 載入URL元件
    $res = array(); // 結果都會儲存到內部

		foreach ($requred as $key => $value) {
      $item = '';
      if ($type === 'GET') $item = $CI->input->get($value);
      if ($type === 'POST') $item = $CI->input->post($value);
			if($item == ""){
				$res[] = $value;
			}
    }

    return $res;
  }

接著回到controllers/Unit.php新增測試:

  /**
   * 測試GET/POST
   */
  function test_getpost() {
    $needsData = array('product_id', 'product_name', 'remark'); // 估計需要的值
    $requiredData = array('product_id', 'product_name'); // 必填欄位
    $data = $this->getpost->getpost_data($needsData, $requiredData, 'GET'); // 把結果丟到$data
    if ($data) {
      // 正確
      $json_arr['response'] = 'success';
    } else {
      // 回報缺少的內容
      $json_arr['requred'] = $this->getpost->report_required($requiredData, 'GET');
    }
    echo json_encode($json_arr); // 把結果印出來測試看看
  }

接著只要沒有在必填名單上的都會被報出錯誤,並且回傳缺少的內容,這個時候很適合用在前台驗證欄位上面,接著我們透過網址測試:http://ip-address/unit/test_getpost?product_id=P1231425621&product_name=灰熊印貓罐頭
符合欄位

下一步我們在拿掉必要的product_name試試看:http://ip-address/unit/test_getpost?product_id=P1231425621
缺少必填欄位

如此一來我們就能如期顯示哪些尚未被填寫,
明天我們就再加個錯誤提示吧!

Next station ... 回傳錯誤與成功


上一篇
[Day11] 改造GET/POST
下一篇
[Day13] 回傳錯誤與成功
系列文
你說Codeigniter還能怎麼做?30

尚未有邦友留言

立即登入留言