Rev 66 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*QBPWCF, Quick Build PHP website Component base on Fedora Linux.Copyright (C) 2015~2024 Min-Jhin,ChenThis file is part of QBPWCF.QBPWCF is free software: you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation, either version 3 of the License, or(at your option) any later version.QBPWCF is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with QBPWCF. If not, see <http://www.gnu.org/licenses/>.*/namespace qbpwcf;/*類別說明:form表單應用的類別.備註:無.*/class form{/*#函式說明:#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#必填參數:#$method,物件,為物件實體或類別名稱,會自動置入該參數.#$arguments,陣列,為呼叫方法時所用的參數.#可省略參數:#無.#參考資料:#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic#備註:#無.*/public function __call($method,$arguments){#取得當前執行的函式$result["function"]=__FUNCTION__;#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"][]=__NAMESPACE__ ."/".$method."() 不存在!";#設置所丟入的參數$result["error"][]=$arguments;#回傳結果return $result;}#function __call end/*#函式說明:#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#必填參數:#$method,物件,為物件實體或類別名稱,會自動置入該參數.#$arguments,陣列,為呼叫方法時所用的參數.#可省略參數:#無.#參考資料:#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic#備註:#無.*/public static function __callStatic($method,$arguments){#取得當前執行的函式$result["function"]=__FUNCTION__;#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"][]="欲呼叫的". __NAMESPACE__ ."/".$method."() 不存在!";#設置所丟入的參數$result["error"][]=$arguments;#回傳結果return $result;}#function __callStatic end/*#函式說明:#表單開始#回傳結果:#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$resutl["function"],當前執行的函式名稱.#$result["content"],表單開始的語法.#必填參數:#$conf["action"],字串,爲要交給那個檔案處理該表單傳送的內容.$conf["action"]="";#可省略參數:#$conf["legend"]="";#顯示表單的標題#$conf["name"]="";#爲該表單的名稱,id也跟$conf["name"]一樣.#$conf["method"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。#$conf["target"]="";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是,"false"為否,預設為"false".#$conf["tableClass"]="";#表格要套用的css樣式,預設爲"__withoutBorder"無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。#$conf["showFieldsetBorder"]="false";#是否要顯示表單區域的框線,預設為"false"不顯示,"true"代表要顯示.#參考資料:#http://www.w3schools.com/html/html_forms.asp#http://www.w3schools.com/tags/tag_fieldset.asp#備註:#建議增加enctype的參數設定application/json=>https://imququ.com/post/four-ways-to-post-data-in-http.html*/public static function start(&$conf){#初始化要回傳的變數$result=array();#設置當前執行的函式$result["function"]=__FUNCTION__;#初始化表單開始的語法$result["content"]="";#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("action");#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("legend","name","method","target","tableStart","tableClass","showFieldsetBorder");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string");#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null,"post","_top","false","__withoutBorder","false");#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果 $checkArguments["status"] 等於 "false"if($checkArguments["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#如果 $checkArguments["passed"] 等於 "false"if($checkArguments["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#建立表格預設的 css 樣式 "__defaultTbaleCsssStyle"#函式說明:#創建 css 樣式#必填參數:$conf_createCssStyle["cssStyleName"]="__defaultTbaleCsssStyle";#為該 css 樣式的名稱,不能以數字開頭。$conf_createCssStyle["attributes"]=array("table-layout","word-break","width","border");#為屬性名稱,須為陣列值$conf_createCssStyle["content"]=array("fixed","break-all","100%","0px");#為屬性值,須為陣列值$css=css::createCssStyle($conf_createCssStyle);unset($conf_createCssStyle);#如果建立css樣式失敗if($css["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$css;#回傳結果return $result;}#if end#取得表格預設的css語法$result["content"]=$result["content"].$css["content"];#如果 $conf["name"] 存在if(isset($conf["name"])){#如果 $conf["name"] 不為 ""if($conf["name"]!=""){#設定name與id屬性$conf["name"]=" name=".$conf["name"]." id=".$conf["name"];}#if end}#if end#反之$conf["name"]不存在else{#設為 ""$conf["name"]="";}#esle end#判斷其值是否爲"true"if($conf["tableStart"]=="true"){#函式說明:#表格開始,可以設定表格的厚度和位置#回傳結果:#$result,表格開始的語法#必填寫的參數:#如果 $conf["tableClass"] 存在if(isset($conf["tableClass"])){#則套用指定的樣式$conf["table"]["start"]["class"]=$conf["tableClass"];}#if end#反之採用預設沒有線條的css樣式else{#則套用的預設的樣式$conf["table"]["start"]["class"]="__withoutBorder";}#else end$tableStart=table::start($conf["table"]["start"]);unset($conf["table"]["start"]);#如果表格開始失敗if($tableStart["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$tableStart;#回傳結果return $result;}#if end#串接表格開始的語法$result["content"]=$result["content"].$tableStart["content"];}#if end#如果有設置 $conf["legend"]if(isset($conf["legend"])){#設置要顯示的表單名稱$conf["legend"]="<legend>".$conf["legend"]."</legend>";}#if end#反之else{#設為 ""$conf["legend"]="";}#else end#如果 $conf["showFieldsetBorder"] 為 "false"if($conf["showFieldsetBorder"]=="false"){#設置要套用的樣式$conf["showFieldsetBorder"]=" class=\"__qbpwcf_fieldsetCssStyle\" ";}#if end#反之設為 ""else{$conf["showFieldsetBorder"]="";}#else end#設定要印出/回傳的變數內容$result["content"]=$result["content"]."<form action = ".$conf["action"]." class=\"__qbpwcf_hiddenFormBlank\" ".$conf["name"]." method = ".$conf["method"]." enctype= \"multipart/form-data\" target = ".$conf["target"]." ><fieldset ".$conf["showFieldsetBorder"]." >".$conf["legend"];#設置執行正常$result["status"]="true";#回傳結果return $result;}#function start end/*#函式說明:#表單結束#回傳結果:#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$resutl["function"],當前執行的函式名稱.#$result["content"],表單結束的語法.#必填參數:#$conf["tableEnd"],字串,爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。$conf["tableEnd"]="false";#可省略參數:#無.#參考資料:#無.#備註:#無.*/public static function end(&$conf){#初始化要回傳的變數$result=array();#設置當前執行的函式$result["function"]=__FUNCTION__;#初始化表單開始的語法$result["content"]="";#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("tableEnd");#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("legend","name","method","target","tableStart","tableClass","showFieldsetBorder");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string");#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,"","post","_top",null,null,"false");#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果 $checkArguments["status"] 等於 "false"if($checkArguments["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#如果 $checkArguments["passed"] 等於 "false"if($checkArguments["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#儲存表單結束的html$result["content"]=$result["content"]."</fieldset></form>";#判斷其值是否爲"true"if($conf["tableEnd"]=="true"){#儲存表格結尾的標籤$result["content"]=$result["content"]."</table>";}#if end#設置執行正常$result["status"]="true";#回傳結果return $result;}#function end end/*#函式說明:#若有表單透過POST或GET的方式傳送的資料,則將內容回傳,若是用GET的方式傳送則轉址到 $headerLocation#回傳結果:#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$resutl["function"],當前執行的函式名稱.#$result["warning"],警告訊息.#$result["content"],接收到變數內容,若為null則代表要接收的變數不存在.#必填參數:#$conf["inputName"],字串,讀取表單的資料時用來辨別的名稱。$conf["inputName"]="";#可省略參數#$conf["refuseGetMethod"],字串,是否要擋 get 傳值,如果有設置,則不檔GET傳值。#$conf["refuseGetMethod"]="true";#$conf["transferLocation"],字串,如果是用GET傳值,則轉址到那個網址,預設爲資安素養網"https://isafe.moe.edu.tw/"#$conf["transferLocation"]="";#$conf["correctCharacter"],字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設為"true".#$conf["correctCharacter"]="false";#參考資料:#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php#備註:#無.*/public static function responseInputData(&$conf){#初始化要回傳的變數$result=array();#設置當前執行的函式$result["function"]=__FUNCTION__;#初始化表單開始的語法$result["content"]="";#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputName");#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("refuseGetMethod","transferLocation","correctCharacter");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string");#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true","https://isafe.moe.edu.tw/","true");#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果 $checkArguments["status"] 等於 "false"if($checkArguments["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#如果 $checkArguments["passed"] 等於 "false"if($checkArguments["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#如果$conf["security"]不存在,則代表採用預設值要防止get傳值if($conf["refuseGetMethod"]=="true"){#若有表單透過POST傳送的資料if(isset($_POST[$conf["inputName"]])){#如果 $conf["correctCharacter"] 爲 falseif($conf["correctCharacter"]=="false"){#如果 $_POST[$conf["inputName"]] 存在if(isset($_POST[$conf["inputName"]])){#設置執行正常$result["status"]="true";#設置抓到的post數值$result["content"]=$_POST[$conf["inputName"]];#回傳結果return $result;}#if end}#if end#反之 $conf["correctCharacter"] 不爲 falseelse{#如果 $_POST[$conf["inputName"]] 存在if(isset($_POST[$conf["inputName"]])){#將字串作處理避免錯誤#函式說明:#處理字串避免網頁出錯#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["content"],爲處理好的字串.#$result["error"],錯誤訊息陣列.#必填參數:$conf["stringProcess::correctCharacter"]["stringIn"]=$_POST[$conf["inputName"]];#爲要處理的字串#可省略的參數:#$conf["selectedCharacter"]=array("");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);#如果處理字串失敗if($correctCharacter["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$correctCharacter;#回傳結果return $result;}#if end#設置執行正常$result["status"]="true";#設置抓到的post數值$result["content"]=$correctCharacter["content"];#回傳結果return $result;}#if end}#else end}#if end#若有表單透過GET傳送的資料if(isset($_GET[$conf["inputName"]])){#進行轉址的動作$conf["header"]["redirectionNow"]["headerLocation"]=$conf["header"]["redirectionNow"]["transferLocation"];header::redirectionNow($conf["header"]["redirectionNow"]);unset($conf["header"]["redirectionNow"]);}#判斷式結束}#判斷式結束#如果不使用檔get傳值else{#若有表單透過POST傳送的資料if(isset($_POST[$conf["inputName"]])){#如果 $conf["correctCharacter"] 存在if(isset($conf["correctCharacter"])){#如果 $conf["correctCharacter"] 爲 falseif($conf["correctCharacter"]=="false"){#設置執行正常$result["status"]="true";#設置抓到的post數值$result["content"]=$_POST[$conf["inputName"]];#回傳結果return $result;}#if end}#if end#反之else{#將字串作處理避免錯誤$correctCharacter_conf["stringIn"]=$_POST[$conf["inputName"]];#爲要處理的字串$correctCharacter=stringProcess::correctCharacter($correctCharacter_conf);unset($correctCharacter_conf);#如果處理字串失敗if($correctCharacter["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$correctCharacter;#回傳結果return $result;}#if end#設置執行正常$result["status"]="true";#設置抓到的post數值$result["content"]=$correctCharacter["content"];#回傳結果return $result;}#else end}#if end#若有表單透過GET傳送的資料if(isset($_GET[$conf["inputName"]])){#如果 $conf["correctCharacter"] 存在if(isset($conf["correctCharacter"])){#如果 $conf["correctCharacter"] 爲 falseif($conf["correctCharacter"]=="false"){#設置執行正常$result["status"]="true";#設置抓到的get數值$result["content"]=$_GET[$conf["inputName"]];#回傳結果return $result;}#判斷式結束}#判斷式結束#反之else{#將字串作處理避免錯誤$correctCharacter_conf["stringIn"]=$_GET[$conf["inputName"]];#爲要處理的字串$correctCharacter=stringProcess::correctCharacter($correctCharacter_conf);unset($correctCharacter_conf);#如果處理字串失敗if($correctCharacter["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$correctCharacter;#回傳結果return $result;}#if end#設置執行正常$result["status"]="true";#設置抓到的get數值$result["content"]=$correctCharacter["content"];#回傳結果return $result;}#else end}#if end}#else end#執行到這邊代表要接收的變數不存在$result["warning"][]="表單變數「".$conf["inputName"]."」不存在";#設置執行正常$result["status"]="true";#設置接收到的內容為 null$result["content"]=null;#回傳結果return $result;}#funcion responseInputData end/*#函式說明:#若有表單透過POST或GET的方式傳送的資料,則將內容回傳,若是用GET的方式傳送則轉址到 $headerLocation#回傳結果:#$result["status"],是否執行成功,"true"代表執行成功;"false"代表執行失敗。#$result["function"],當前執行的函數名稱.#$result["error"],錯誤訊息。#$result["reveivedVarName"],接收到的變數名稱#$result["receivedVarValue"],接收到的變數內容#$result["HTTP_REFERER"],前一頁的網址,null為不存在的意思.#必填參數:#$conf["inputName"],字串,讀取表單的資料時用來辨別的名稱,$conf["inputName"]="";#可省略參數:#$conf["receiveType"],字串,要接收 post/POST 或 get/GET 的變數,預設爲 POST#$conf["receiveType"]="POST";#$conf["allowGet"],字串,是否要允許 get 傳值,"true",代表允許;"false" ,代表不允許,預設爲不允許。#$conf["allowGet"]="true";#$conf["limitPrePage"],字串陣列,限定前一頁的網址須爲改陣列裏面的其中一個位置,才能接收內容,不符合則轉址。#$conf["limitPrePage"]=array();#$conf["transferLocation"],字串,如果是用GET傳值,則轉址到那個網址,預設爲資安素養網"https://isafe.moe.edu.tw/"#$conf["transferLocation"]="";##$conf["correctCharacter"],字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設為"true".#$conf["correctCharacter"]="false";#參考資料:#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php#備註:#無.*/public static function responseInputDataSecurityEnhance(&$conf){#初始化要回傳的變數$result=array();#設置當前執行的函式$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputName");#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("receiveType","allowGet","limitPrePage","transferLocation","correctCharacter");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","array","string","string");#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("POST","false",null,"https://isafe.moe.edu.tw/","true");#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果 $checkArguments["status"] 等於 "false"if($checkArguments["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#如果 $checkArguments["passed"] 等於 "false"if($checkArguments["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#如果 $_SERVER["HTTP_REFERER"] 存在if(isset($_SERVER["HTTP_REFERER"])){#取得前一個網址$result["HTTP_REFERER"]=basename($_SERVER["HTTP_REFERER"]);}#if end#反之 $_SERVER["HTTP_REFERER"] 不存在else{#設為 null$result["HTTP_REFERER"]=null;}#else end#初始化接收的變數內容#$result["reveivedVarName"]="";#$result["receivedVarValue"]="";#更正 post 的名稱if($conf["receiveType"]=="post"){$conf["receiveType"]="POST";}#if end#更正 get 的名稱if($conf["receiveType"]=="get"){$conf["receiveType"]="GET";}#if end#如果是 post 的傳送方式if($conf["receiveType"]=="POST"){#如果不存在要抓取的變數if(!isset($_POST[$conf["inputName"]])){#設置執行狀態爲 "false"$result["status"]="false";#設置錯誤訊息$result["error"]="key爲".$conf["inputName"]."的$".$conf["receiveType"]."變數不存在!";#回傳結果return $result;}#if end#設置取得的變數內容$result["reveivedVarName"]=$conf["inputName"];$result["receivedVarValue"]=$_POST[$conf["inputName"]];}#if end#如果是 get 的傳送方式if($conf["receiveType"]=="GET"){#如果不存在要抓取的變數if(!isset($_GET[$conf["inputName"]])){#設置執行狀態爲 "false"$result["status"]="false";#設置錯誤訊息$result["error"]="key爲".$conf["inputName"]."的$".$receiveType."變數不存在!";#回傳結果return $result;}#if end#設置取得的變數內容$result["reveivedVarName"]=$conf["inputName"];$result["receivedVarValue"]=$_GET[$conf["inputName"]];}#if end#如果 $conf["allowGet"] 等於 "fasle"if($conf["allowGet"]=="false"){#如果是用 get 傳送資料if(count($_GET)>0){#設定session變數後,立即轉址#必填參數:$conf["header"]["redirectionNow"]["headerLocation"]=$conf["transferLocation"];#為要轉址到的地方#若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面。#全民資安素養網爲 https://isafe.moe.edu.tw/#可省略參數:#$conf["sessionName"]=array("","","");#可省略,可以指派3維session變數的內容,此處爲該3維session變數的名稱。#$conf["sessionValue"]="";#可省略,該3維session變數的內容爲設爲何?#參靠資料來源:#http://php.net/manual/en/reserved.variables.server.phpheader::redirectionNow($conf["header"]["redirectionNow"]);unset($conf["header"]["redirectionNow"]);}#if end}#if end#如果 $conf["limitPrePage"] 有設定if(isset($conf["limitPrePage"])){#如果 $conf["limitPrePage"] 為陣列型別if(gettype($conf["limitPrePage"])=="array"){#檢查 前一拜訪頁的位址 是否在 $conf["limitPrePage"] 陣列裡面#函式說明:#檢查一個數值是否與陣列裏面的元素相同#回傳的結果:#$result["status"],"true"表示執行正確,"false"表示執行錯誤.#$result["founded"],"true"表示有找到相同的,"false"表示沒有找到相同的.#$result["error"],錯誤訊息#$result["equalVarName"],相等的變數名稱或key.#$result["equalVarValue"],相等的變數數值內容.#必填參數:$conf["search"]["getEqualVar"]["conditionElement"]=basename($_SERVER["HTTP_REFERER"]);#條件元素,要等於的元素內容.$conf["search"]["getEqualVar"]["compareElements"]=$conf["limitPrePage"];#要比對的陣列變數內容.$getMatchResult=search::getEqualVar($conf["search"]["getEqualVar"]);unset($conf["search"]["getEqualVar"]);#如果檢查出錯if($getMatchResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$getMatchResult;#回傳結果return $result;}#if end#如果 $getMatchResult["founded"] 等於 "false"if($getMatchResult["founded"]=="false"){#轉址#函式說明:#設定session變數後,立即轉址.#回傳的結果:#$result["status"],執行是否成功,"true"代表執行成功,"false"代表執行失敗.#$result["error"],錯誤訊息陣列.#必填參數:#$conf["headerLocation"],為要轉址到的地方,若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面,全民資安素養網爲 https://isafe.moe.edu.tw/.$conf["header"]["redirectionNow"]["headerLocation"]=$conf["transferLocation"];#可省略的參數:#$conf["sessionName"],可省略,可以指派3維session變數的內容,此處爲該3維session變數的名稱.#$conf["sessionName"]=array("","","");#$conf["sessionValue"],可省略,該3維session變數的內容爲設爲何?#$conf["sessionValue"]="";#$conf["hostUnderNat"],為伺服器是否為透過NAT轉封包,且有設定轉址."true"為是,"true"的話會將轉址的服務修正,以免轉址到不能連線到的ip.#$conf["hostUnderNat"]["protocol"],#要連線到伺服器的通訊協定,"http"與"https"是可以用的選項.#$conf["hostUnderNat"]["protocol"]="https";#$conf["hostUnderNat"]["localhostIP"],可省略,為伺服器的IP位置.#$conf["hostUnderNat"]["localhostIP"]="";#參靠資料來源:#http://php.net/manual/en/reserved.variables.server.php#建議:#新增可應用於在虛擬機器下透過NAT上網,且透過轉port的方式也能正確地轉址的辦法.header::redirectionNow($conf["header"]["redirectionNow"]);unset($conf["header"]["redirectionNow"]);}#if end}#if end#反之代表參數型別有錯else{#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]="\$conf[\"limitPrePage\"]參數須為字串陣列";#回傳結果return $result;}#else end}#if end#如果 $conf["correctCharacter"] 等於 trueif($conf["correctCharacter"]=="true"){#函式說明:#處理字串避免網頁出錯#回傳結果:#$result,爲處理好的字串。#必填參數:$conf["stringProcess"]["correctCharacter"]["stringIn"]=$result["receivedVarValue"];#爲要處理的字串#可省略的參數:#$conf["selectedCharacter"]=array("");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">",";","=","//","'","$","%","&","|","/*","*/","#")。#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$correctCharacter=stringProcess::correctCharacter($conf["stringProcess"]["correctCharacter"]);unset($conf["stringProcess"]["correctCharacter"]);#如果修正字串失敗if($correctCharacter["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$correctCharacter;#回傳結果return $result;}#if end#取得修正後接收到的變數內容$result["receivedVarValue"]=$correctCharacter["content"];}#if end#設置執行成功狀態$result["status"]="true";#回傳結果return $result;}#function responseInputDataSecurityEnhance end/*#函式說明:#可以處理多個透過GET、POST而來的資訊,儲存成變數。#回傳結果:#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$resutl["function"],當前執行的函式名稱.#$result["inputDataContent"],所接收的參數陣列。#$result["inputDataCount"],總共接收到幾個元素。#$result["inputDataKey"],所接收到的參數陣列元素key值。#必填參數:$conf["method"]="";#傳送過來的資料是用"post/POST"還是"get/GET"?#可省略參數:#$conf["stopGetMethod"]="true";#若設爲"true",則遇到以get方式傳送過來的數值時,則進行轉址,若為"false"則不轉址,預設為"true".#$conf["transferLocation"]="";#遇到get傳值的時候要轉址到的頁面,預設爲資安素養網"https:#isafe.moe.edu.tw/"#$conf["ignore"]=array();#如果要接收的變數名稱與該陣列其一元素一樣,則不放進要回傳的變數裏面。#$conf["correctCharacter"]="false";#如果爲"false",則不處理可能導致網頁出問題的字串,預設爲要進行處理。#參考資料:#foreach 的用法 -> http:#php.net/manual/en/control-structures.foreach.php#備註:#建議改用 responseInputData 實作*/public static function responseMultiInputData(&$conf){#初始化要回傳的變數$result=array();#設置當前執行的函式$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("method");#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("stopGetMethod","transferLocation","ignore","correctCharacter");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","array","string");#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true","https://isafe.moe.edu.tw/",null,"true");#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果 $checkArguments["status"] 等於 "false"if($checkArguments["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#如果 $checkArguments["passed"] 等於 "false"if($checkArguments["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#若有表單透過GET傳送的資料#$_GET變數有可能有設定,但是是爲!isset,所以改用 !isset 來判斷是否爲空值if(!isset($_GET)){#如果 $conf["stopGetMethod"] 有設定if(isset($conf["stopGetMethod"])){#如果 $conf["stopGetMethod"] 爲 "true"if($conf["stopGetMethod"]=="true"){#如果 $conf["transferLocation"] 有設定if(isset($conf["transferLocation"])){#進行轉址的動作$conf["header"]["redirectionNow"]["headerLocation"]=$conf["header"]["redirectionNow"]["transferLocation"];header::redirectionNow($conf["header"]["redirectionNow"]);unset($conf["header"]["redirectionNow"]);}#if end#如果 $conf["transferLocation"] 沒有設定else{#進行預設的轉址位置$conf["header"]["redirectionNow"]["headerLocation"]="https:#isafe.moe.edu.tw/";header::redirectionNow($conf["header"]["redirectionNow"]);unset($conf["header"]["redirectionNow"]);}#else end}#if end}#if end}#if end#初始化接收到的變數$result["inputDataContent"]=array();#依據 $conf["method"] 判別switch($conf["method"]){#如果 $conf["method"] 爲 "post"case "post":#改為 "POST"$conf["method"]="POST";#如果 $conf["method"] 爲 "POST"case "POST":#陣列元素名稱的key編號初始值$inputDataKeyNum=0;#將每個透過 POST 方式吃傳送過來的變數,轉存到變數裏面。foreach($_POST as $elementKey => $elementValue){#如果 $conf["correctCharacter"]爲 "true"if($conf["correctCharacter"]==="true"){#檢查是否邀接收的變數名稱是否為要忽略的清單裡面#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數#$result["error"],函式錯誤訊息,若爲""則表示沒有錯誤#$result["founded"][$i],若爲0代表沒有相同的元素;反之1代表有相同的元素,$i爲第i+1個參數判斷後的結果。#必填參數:$conf_checkEquality["inputElement"]=array($elementKey);#爲要進行比對的變數/數值。$conf_checkEquality["blackBoxElement"]=$conf["ignore"];#爲用來比對的變數/數值陣列$result_checkEquality=search::checkEquality($conf_checkEquality);unset($conf_checkEquality);#如果檢查失敗if($result_checkEquality["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$result_checkEquality;#回傳結果return $result;}#if end#如果變數的名稱等於要忽略的變數項目之一if($result_checkEquality["founded"][0]=="true"){#略過這個變數的處理continue;}#if end#處理字串避免網頁出錯#函式說明:#處理字串避免網頁出錯#回傳結果:#$result,爲處理好的字串。#必天寫的參數:$conf_correctCharacter["stringIn"]=$elementValue;#爲要處理的字串#可省略的參數:#$conf["selectedCharacter"]=array("");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換(" ","<",">",";","=","#","*","'","$","%","&","|")。#$conf["changeTo"];#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$correctCharacter=stringProcess::correctCharacter($conf_correctCharacter);unset($conf_correctCharacter);#如果矯正接收的變數內容失敗if($correctCharacter["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$correctCharacter;#回傳結果return $result;}#if end#取得處理的變數字串內容$elementValue=$correctCharacter["content"];}#if end#如果 $conf["ignore"] 存在if(isset($conf["ignore"])){#檢查是否邀接收的變數名稱是否為要忽略的清單裡面#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數#$result["error"],函式錯誤訊息,若爲""則表示沒有錯誤#$result["founded"][$i],若爲0代表沒有相同的元素;反之1代表有相同的元素,$i爲第i+1個參數判斷後的結果。#必填參數:$conf_checkEquality["inputElement"]=array($elementKey);#爲要進行比對的變數/數值。$conf_checkEquality["blackBoxElement"]=$conf["ignore"];#爲用來比對的變數/數值陣列$result_checkEquality=search::checkEquality($conf_checkEquality);unset($conf_checkEquality);#如果檢查失敗if($result_checkEquality["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$result_checkEquality;#回傳結果return $result;}#if end#如果變數的名稱等於要忽略的變數項目之一if($result_checkEquality["founded"][0]=="true"){#略過這個變數的取得continue;}#if end#如果變數名稱不等於要忽略的變數項目之一else{#將每個透過 POST 方式吃傳送過來的變數,轉存到 $result["inputDataContent"] 陣列變數裏面。$result["inputDataContent"][$elementKey]=$elementValue;#將每個透過 POST 方式傳送過來的變數名稱,轉存到 $result["inputDataKey"] 陣列變數裏面。$result["inputDataKey"][$inputDataKeyNum]=$elementKey;#陣列元素名稱的key加1$inputDataKeyNum++;}#else end}#if end#反之不存在要忽略接收的變數else{#將每個透過 POST 方式傳送過來的變數,轉存到 $result["inputDataContent"] 陣列變數裏面。$result["inputDataContent"][$elementKey]=$elementValue;#將每個透過 POST 方式傳送過來的變數名稱,轉存到 $result["inputDataKey"] 陣列變數裏面。$result["inputDataKey"][$inputDataKeyNum]=$elementKey;$inputDataKeyNum++;}#else end}#foreach end#取得總共有接收幾個變數$result["inputDataCount"]=count($result["inputDataContent"]);#跳出 switchbreak;#如果 $conf["method"] 爲 "get"case "get":#改為 "get"$conf["method"]="GET";#如果 $conf["method"] 爲 "GET"case "GET":#陣列元素名稱的key編號初始值$inputDataKeyNum=0;#將每個透過 GET 方式吃傳送過來的變數,轉存到變數裏面。foreach($_GET as $elementKey => $elementValue){#如果 $conf["correctCharacter"] 爲 "true"if($conf["correctCharacter"]==="true"){#處理字串避免網頁出錯#函式說明:#處理字串避免網頁出錯#回傳結果:#$result,爲處理好的字串。#必天寫的參數:$conf_correctCharacter["stringIn"]=$elementValue;#爲要處理的字串#可省略的參數:#$conf["selectedCharacter"]=array("");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換(" ","<",">",";","=","#","*","'","$","%","&","|")。#$conf["changeTo"];#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$correctCharacter=stringProcess::correctCharacter($conf_correctCharacter);unset($conf_correctCharacter);#如果矯正接收的變數內容失敗if($correctCharacter["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$correctCharacter;#回傳結果return $result;}#if end#取得處理的變數字串內容$elementValue=$correctCharacter["content"];}#if end#如果 $conf["ignore"] 存在if(isset($conf["ignore"])){#檢查是否邀接收的變數名稱是否為要忽略的清單裡面#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數#$result["error"],函式錯誤訊息,若爲""則表示沒有錯誤#$result["founded"][$i],若爲0代表沒有相同的元素;反之1代表有相同的元素,$i爲第i+1個參數判斷後的結果。#必填參數:$conf_checkEquality["inputElement"]=array($elementKey);#爲要進行比對的變數/數值。$conf_checkEquality["blackBoxElement"]=$conf["ignore"];#爲用來比對的變數/數值陣列$result_checkEquality=search::checkEquality($conf_checkEquality);unset($conf_checkEquality);#如果檢查失敗if($result_checkEquality["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$result_checkEquality;#回傳結果return $result;}#if end#如果變數的名稱等於要忽略的變數項目之一if($result_checkEquality["founded"][0]=="true"){#略過這個變數的取得continue;}#if end#如果變數名稱不等於要忽略的變數項目之一else{#將每個透過 POST 方式吃傳送過來的變數,轉存到 $result["inputDataContent"] 陣列變數裏面。$result["inputDataContent"][$elementKey]=$elementValue;#將每個透過 POST 方式傳送過來的變數名稱,轉存到 $result["inputDataKey"] 陣列變數裏面。$result["inputDataKey"][$inputDataKeyNum]=$elementKey;#陣列元素名稱的key加1$inputDataKeyNum++;}#else end}#if end}#foreach end#取得總共有接收幾個變數$result["inputDataCount"]=count($result["inputDataContent"]);#跳出 switchbreak;}#switch end#執行到這邊代表正常$result["status"]="true";#回傳結果陣列return $result;}#responseMutiInputData function end/*#函式說明:#可以處理多個透過GET、POST而來的資訊,儲存成變數,同時限定傳送的方法、來源,來增加安全性,檢查有沒有皆收到必須要接收到的變數,沒有接收到的變數可以指定從session變數中取得.#回傳結果:#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$resutl["function"],當前執行的函式名稱.#$result["warning"],警告訊息陣列.#$result["passed"],是否有皆收到全部該接收到的變數,若有設定$conf["checkedVarName"]的話,執行正常後會回傳該結果。#$result["lostVarName"],沒有皆收到的變數名稱陣列#$result["inputDataContent"],所接收的參數陣列.#$result["inputDataContent"]["變數名稱"],所接收變數的內容.#$result["inputDataCount"],從表單總共接收到幾個元素.#$result["HTTP_REFERER"],前一頁的網址,null代表不存在.#必填參數:#$conf["method"],字串,傳送過來的資料是用"post/POST"還是"get/GET"?$conf["method"]="";#可省略參數:#$conf["allowGet"],字串,是否要允許 get 傳值,"true",代表允許;"false" ,代表不允許,預設爲不允許.#$conf["allowGet"]="true";#$conf["limitPrePage"],字串陣列,是否要限定前一頁的網址為哪些,才能接收內容,不符合則轉址.#$conf["limitPrePage"]=array("");#$conf["transferLocation"],字串,遇到get傳值,或前一個頁面不符合要求時要轉址到的頁面,預設爲資安素養網"https://isafe.moe.edu.tw/"#$conf["transferLocation"]="";#$conf["ignore"]=字串陣列,如果要接收的變數名稱與該陣列其一元素一樣,則不放進要回傳的變數裏面.#$conf["ignore"]=array();#$conf["correctCharacter"]=,字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設爲要進行處理.#$conf["correctCharacter"]="false";#$conf["checkedVarName"],字串陣列,為檢查是否有接收到哪些變數.#$conf["checkedVarName"]=array();#$conf["canBeEmptyString"],字串,用$conf["checkedVarName"]指定接收的變數名稱陣列,若接收到的內容為空字串是否算有接收到內容,預設為"false","true"代表接收到的內容可以為空字串,"false"代表接收到的內容不可以為空字串.#$conf["canBeEmptyString"]="false";#$conf["sessionNameArray"],陣列,若存在則代表若沒有從表單取得變數,則從session變數中取得內容,每個元素代表每個表單變數對應的session名稱,若不是要改用session方式取得變數內容的變數,請輸入null,數量請跟$conf["checkedVarName"]參數一致.#$conf["sessionNameArray"]=array();#$conf["unsetSessionArray"],陣列,與$conf["sessionNameArray"]對應的元素,是否要接收到變數後就卸除,"true"代表要卸除,"false"代表不要卸除.#$conf["unsetSessionArray"]=array();#$conf["recaptcha_url"],字串,有內容代表要檢查有無透過recaptcha於特定頁面網址認證過.#$conf["recaptcha_url"]="";#參考資料:#foreach 的用法 -> http://php.net/manual/en/control-structures.foreach.php#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php#備註:#表單變數的名稱若含有「.」,則會變成「-」。*/public static function responseMultiInputDataSecurityEnhance(&$conf){#設置回傳變數的初始值$result=array();#設置當前執行的函式$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#如果 $_SERVER["HTTP_REFERER"] 存在if(isset($_SERVER["HTTP_REFERER"])){#取得前一個網址$result["HTTP_REFERER"]=basename($_SERVER["HTTP_REFERER"]);}#if end#反之 $_SERVER["HTTP_REFERER"] 不存在else{#設為 null$result["HTTP_REFERER"]=null;}#else end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["variableCheck.checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck.checkArguments"]["varInput"]=&$conf;#$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="method";#$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="string";#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";#可省略參數:#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["skipableVariableName"][]="allowGet";$conf["variableCheck.checkArguments"]["skipableVariableName"][]="limitPrePage";$conf["variableCheck.checkArguments"]["skipableVariableName"][]="transferLocation";$conf["variableCheck.checkArguments"]["skipableVariableName"][]="ignore";$conf["variableCheck.checkArguments"]["skipableVariableName"][]="correctCharacter";$conf["variableCheck.checkArguments"]["skipableVariableName"][]="checkedVarName";$conf["variableCheck.checkArguments"]["skipableVariableName"][]="canBeEmptyString";$conf["variableCheck.checkArguments"]["skipableVariableName"][]="sessionNameArray";$conf["variableCheck.checkArguments"]["skipableVariableName"][]="unsetSessionArray";$conf["variableCheck.checkArguments"]["skipableVariableName"][]="recaptcha_url";#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["skipableVariableType"][]="string";$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";$conf["variableCheck.checkArguments"]["skipableVariableType"][]="string";$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";$conf["variableCheck.checkArguments"]["skipableVariableType"][]="string";$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";$conf["variableCheck.checkArguments"]["skipableVariableType"][]="string";$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";$conf["variableCheck.checkArguments"]["skipableVariableType"][]="string";#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]="false";$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]="https://isafe.moe.edu.tw/";$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]="true";$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]="false";$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;#$conf["variableCheck.checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.$conf["variableCheck.checkArguments"]["arrayCountEqualCheck"][]=array("checkedVarName","sessionNameArray","unsetSessionArray");$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);unset($conf["variableCheck.checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置錯誤$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置錯誤$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果有設置要檢查有無於特定網址取得google recaptcha認證if(isset($conf["recaptcha_url"])){#函式說明:#檢查是否擁有透過gl_reCAPTCHA_server授權的session網址記錄.#回傳結果:#$result["status"],執行正常與否,"false"代表不正常;"true"代表正常.#$result["error"],錯誤訊息陣列.#$result["function"],函式名稱.#$result["passed"],"true"代表通過檢查,"false"代表沒有通過檢查.#必填參數:#$conf["url"],字串,要有什麼的網址才通過檢查$conf["authenticate::gl_reCAPTCH_authCheck"]["url"]=$conf["recaptcha_url"];$gl_reCAPTCH_authCheck=authenticate::gl_reCAPTCH_authCheck($conf["authenticate::gl_reCAPTCH_authCheck"]);unset($conf["authenticate::gl_reCAPTCH_authCheck"]);#如果檢驗有無通過 google reCAPTCHA 的記錄 失敗if($gl_reCAPTCH_authCheck["status"]==="false"){#設置錯誤$result["status"]="false";#設置錯誤訊息$result["error"]=$gl_reCAPTCH_authCheck;#回傳結果return $result;}#if end#如果無通過 google reCAPTCHA 的記錄if($gl_reCAPTCH_authCheck["passed"]==="false"){#設置正常$result["status"]="true";#設置沒通過測試$result["passed"]="false";#設置錯誤訊息$result["error"]=$gl_reCAPTCH_authCheck;#回傳結果return $result;}#if end}#if end#如果 $conf["method"] 為 getif($conf["method"]=="get"){#將之轉換為 "GET"$conf["method"]="GET";}#if end#如果 $conf["method"] 為 postif($conf["method"]=="post"){#將之轉換為 "POST"$conf["method"]="POST";}#if end#如果不允許 get 要求if($conf["allowGet"]=="false"){#如果有 get 要求存在if(count($_GET)>0){#轉址#函式說明:#設定session變數後,立即轉址.#回傳的結果:#$result["status"],執行是否成功,"true"代表執行成功,"false"代表執行失敗.#$result["error"],錯誤訊息陣列.#必填參數:#$conf["headerLocation"],為要轉址到的地方,若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面,全民資安素養網爲 https://isafe.moe.edu.tw/.$conf["header"]["redirectionNow"]["headerLocation"]=$conf["transferLocation"];#可省略的參數:#$conf["sessionName"],可省略,可以指派3維session變數的內容,此處爲該3維session變數的名稱.#$conf["sessionName"]=array("","","");#$conf["sessionValue"],可省略,該3維session變數的內容爲設爲何?#$conf["sessionValue"]="";#$conf["hostUnderNat"],為伺服器是否為透過NAT轉封包,且有設定轉址."true"為是,"true"的話會將轉址的服務修正,以免轉址到不能連線到的ip.#$conf["hostUnderNat"]["protocol"],#要連線到伺服器的通訊協定,"http"與"https"是可以用的選項.#$conf["hostUnderNat"]["protocol"]="https";#$conf["hostUnderNat"]["localhostIP"],可省略,為伺服器的IP位置.#$conf["hostUnderNat"]["localhostIP"]="";#參靠資料來源:#http://php.net/manual/en/reserved.variables.server.php#建議:#新增可應用於在虛擬機器下透過NAT上網,且透過轉port的方式也能正確地轉址的辦法.header::redirectionNow($conf["header"]["redirectionNow"]);unset($conf["header"]["redirectionNow"]);#debug#echo "<p><p>有$_GET變數<p>";#var_dump($_GET);}#if end}#if end#如果 $conf["limitPrePage"] 有設定if(isset($conf["limitPrePage"])){#如果有前一頁瀏覽的網址記錄if($result["HTTP_REFERER"]!=null){#檢查 前一拜訪頁的位址 是否在 $conf["limitPrePage"] 陣列裡面#函式說明:#檢查一個數值是否與陣列裏面的元素相同#回傳的結果:#$result["status"],"true"表示執行正確,"false"表示執行錯誤.#$result["founded"],"true"表示有找到相同的,"false"表示沒有找到相同的.#$result["error"],錯誤訊息#$result["equalVarName"],相等的變數名稱或key.#$result["equalVarValue"],相等的變數數值內容.#必填參數:$conf["search"]["getEqualVar"]["conditionElement"]=$result["HTTP_REFERER"];#條件元素,要等於的元素內容.$conf["search"]["getEqualVar"]["compareElements"]=$conf["limitPrePage"];#要比對的陣列變數內容.$getMatchResult=search::getEqualVar($conf["search"]["getEqualVar"]);unset($conf["search"]["getEqualVar"]);#如果檢查出錯if($getMatchResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$getMatchResult;#回傳結果return $result;}#if end#如果 $getMatchResult["founded"] 等於 "false"if($getMatchResult["founded"]==="false"){#轉址#函式說明:#設定session變數後,立即轉址.#回傳的結果:#$result["status"],執行是否成功,"true"代表執行成功,"false"代表執行失敗.#$result["error"],錯誤訊息陣列.#必填參數:#$conf["headerLocation"],為要轉址到的地方,若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面,全民資安素養網爲 https://isafe.moe.edu.tw/.$conf["header"]["redirectionNow"]["headerLocation"]=$conf["transferLocation"];#可省略的參數:#$conf["sessionName"],可省略,可以指派3維session變數的內容,此處爲該3維session變數的名稱.#$conf["sessionName"]=array("","","");#$conf["sessionValue"],可省略,該3維session變數的內容爲設爲何?#$conf["sessionValue"]="";#$conf["hostUnderNat"],為伺服器是否為透過NAT轉封包,且有設定轉址."true"為是,"true"的話會將轉址的服務修正,以免轉址到不能連線到的ip.#$conf["hostUnderNat"]["protocol"],#要連線到伺服器的通訊協定,"http"與"https"是可以用的選項.#$conf["hostUnderNat"]["protocol"]="https";#$conf["hostUnderNat"]["localhostIP"],可省略,為伺服器的IP位置.#$conf["hostUnderNat"]["localhostIP"]="";#參靠資料來源:#http://php.net/manual/en/reserved.variables.server.php#建議:#新增可應用於在虛擬機器下透過NAT上網,且透過轉port的方式也能正確地轉址的辦法.header::redirectionNow($conf["header"]["redirectionNow"]);unset($conf["header"]["redirectionNow"]);}#if end}#if end#反之沒有記錄前一頁瀏覽的頁面else{#設置警告訊息$result["warning"][]="無法取得前一個瀏覽的頁面";}#else end}#if end#依據 $conf["method"] 來分類判斷switch($conf["method"]){#如果 $conf["method"] 為 "GET"case "GET":#抓取每個$_GET變數$getVarArray=$_GET;#如果接收的$_GET變數數量等於0if(count($getVarArray)==0){#設置抓到的表單變數數量為0$result["inputDataCount"]=0;#設置空的 $result["inputDataContent"] 陣列$result["inputDataContent"]=array();}#if end#反之代表有 get 變數else{#針對每個$_GET變數foreach($getVarArray as $getVarKey=>$getVarValue){#轉存每個$_GET變數$result["inputDataContent"][$getVarKey]=$getVarValue;}#foreach end}#else end#中斷break;#如果 $conf["method"] 為 "POST"case "POST":#抓取每個$_POST變數$postVarArray=$_POST;#如果接收的$_POST變數數量等於0if(count($postVarArray)==0){#設置抓到的表單變數數量為0$result["inputDataCount"]=0;#設置空的 $result["inputDataContent"] 陣列$result["inputDataContent"]=array();}#if end#反之有post變數else{#針對每個$_POST變數foreach($postVarArray as $postVarKey=>$postVarValue){#取得每個$_POST變數$result["inputDataContent"][$postVarKey]=$postVarValue;}#foreach end}#else end#中斷break;#如果 $conf["method"] 不為以上數值default:#設置錯誤$result["status"]="false";#設置錯誤訊息$result["error"][]="\$conf[\"method\"]須為 \"get\" 、 \"GET\" 、 \"post\" 、 \"POST\" ";#回傳結果return $result;}#switch end#如果 $conf["ignore"] 有設置if(isset($conf["ignore"])){#初始化暫存有那些key$inputDataKey=array();#依據 $result["inputDataContent"] 的數目foreach($result["inputDataContent"] as $key=>$value){#儲存key$inputDataKey[$key]=$key;}#foreache end#函式說明:#檢查多個字串裡面是否有多個關鍵字#回傳結果:#$result["status"],整體來說,執行是否成功,"true"代表執行成功,"false"代表執行失敗。#$result["function"],當前執行的函數名稱.#$result["foundedFalseKey"],$result[$i]["founded"]結果為"false"的元素key陣列。#$result["foundedAll"],是否每個關鍵字都有找到,"true"代表每個都有找到,"false"代表沒有每個都找到.#必填參數:$conf["search"]["findManyKeyWordsFromManyString"]["keyWords"]=$conf["ignore"];#想要搜尋的關鍵字$conf["search"]["findManyKeyWordsFromManyString"]["stringArray"]=$inputDataKey;#要被搜尋的字串內容陣列#可省略參數:$conf["search"]["findManyKeyWordsFromManyString"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。$filted=search::findManyKeyWordsFromManyString($conf["search"]["findManyKeyWordsFromManyString"]);unset($conf["search"]["findManyKeyWordsFromManyString"]);#debug#var_dump($filted);#如果檢查多個字串裡面是否有多個關鍵字失敗if($filted["status"]=="false"){#設置錯誤$result["status"]="false";#設置錯誤訊息$result["error"]=$filted;#回傳結果return $result;}#if end#如果全部都有找到if($filted["foundedAll"]=="true"){#取得沒被篩選掉的內容$result["inputDataContent"]=array();}#if end#反之為有些沒有符合else{#另存 $result["inputDataContent"]$temp["inputDataContent"]=$result["inputDataContent"];#移除舊的 $result["inputDataContent"]unset($result["inputDataContent"]);#依據沒被篩選掉的變數keyforeach($filted["foundedFalseKey"] as $key){#取得不是要忽略的表單變數$result["inputDataContent"][$key]=$temp["inputDataContent"][$key];}#foreach end#移除 $temp["inputDataContent"]unset($temp["inputDataContent"]);}#else end}#if end#如果 $conf["correctCharacter"] 為 "true" 且 $result["inputDataContent"]元素數量大於0 則代表要過濾字串if($conf["correctCharacter"]=="true" && count($result["inputDataContent"])>0 ){#如果 $result["inputDataContent"] 的元素不為字串就會出錯。#函式說明:#處理多個字串避免網頁出錯#回傳結果:#$result["status"],"true"代表執行成功,"false"代表執行失敗。#$result["error"],錯誤訊息#$result["processedStrArray"],處理好的字串陣列#必填參數:$conf["stringProcess"]["correctMutiStrCharacter"]["stringIn"]=$result["inputDataContent"];#爲要處理的字串陣列#可省略的參數:#$conf["selectedCharacter"]=array("");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">",";","=","//","'","$","%","&","|","/*","*\/","#")。#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$peocessedStrArray=stringProcess::correctMutiStrCharacter($conf["stringProcess"]["correctMutiStrCharacter"]);unset($conf["stringProcess"]);#如果分割失敗if($peocessedStrArray["status"]=="false"){#設置執行不正常$result["status"]="false";#設置執行錯誤訊息$result["error"]=$peocessedStrArray;#回傳結果return $result;}#if end#取得處理好的字串陣列$result["inputDataContent"]=$peocessedStrArray["processedStrArray"];}#if end#取得接收到的變數數量$result["inputDataCount"]=count($result["inputDataContent"]);#如果 $conf["checkedVarName"] 有設定if(isset($conf["checkedVarName"])){#初始化沒有接收的變數陣列$result["lostVarName"]=array();#檢查變數是否有皆收到#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳的結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result["content"][$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result["content"][$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result["content"][$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:$conf["variableCheck.isexistMulti"]["varInput"]=$result["inputDataContent"];#要檢查的陣列變數$conf["variableCheck.isexistMulti"]["variableCheck"]=$conf["checkedVarName"];#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:#$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");$conf["variableCheck.isexistMulti"]["canBeEmptyString"]=$conf["canBeEmptyString"];#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。$checkShouldBeExistedVar=variableCheck::isexistMulti($conf["variableCheck.isexistMulti"]);#var_dump($conf["variableCheck.isexistMulti"]);unset($conf["variableCheck.isexistMulti"]);#var_dump($checkShouldBeExistedVar);#如果檢查要接收到的變數失敗if($checkShouldBeExistedVar["status"]=="false"){#設置錯誤$result["status"]="false";#設置錯誤訊息$result["error"]=$checkShouldBeExistedVar;#回傳結果return $result;}#if end#如果 $checkShouldBeExistedVar["passed"] 等於 "false"if($checkShouldBeExistedVar["passed"]=="false"){#設置沒有抓到全部的變數$result["passed"]="false";#取得是哪些變數是沒有接收到foreach($conf["checkedVarName"] as $varName){#如果該變數沒抓到if($checkShouldBeExistedVar["content"][$varName]["varExist"]=="false"){#取得沒抓到的變數名稱$result["lostVarName"][]=$varName;}#if end}#for end}#if end#反之代表該取得的變數都有抓到else{#設置沒有抓到全部的變數$result["passed"]="true";}#if end}#if end#如果 $result["lostVarName"] 存在if(isset($result["lostVarName"])){#如果找不到的變數($result["lostVarName"])數量大於0if(count($result["lostVarName"])>0){#如果 $conf["sessionNameArray"] 有設置if(isset($conf["sessionNameArray"])){#複製遺失的變數名稱陣列$copy["lostVarName"]=$result["lostVarName"];#有幾個遺失的變數就執行幾次for($i=0;$i<count($copy["lostVarName"]);$i++){#尋找 $result["lostVarName"][$i] 在 $conf["checkedVarName"] 中的哪一個,key為何?#函式說明:#檢查一個數值是否與陣列裏面的元素相同,找到一個相符合的元素後就會停止搜尋.#回傳的結果:#$result["status"],"true"表示執行正確,"false"表示執行錯誤.#$result["founded"],"true"表示有找到相同的,"false"表示沒有找到相同的.#$result["error"],錯誤訊息#$result["equalVarName"],相等的變數名稱或key.#$result["equalVarValue"],相等的變數數值內容.#必填參數:$conf["search::getEqualVar"]["conditionElement"]=$copy["lostVarName"][$i];#條件元素,要等於的元素內容.$conf["search::getEqualVar"]["compareElements"]=$conf["checkedVarName"];#要比對的陣列變數內容.$searchResult=search::getEqualVar($conf["search::getEqualVar"]);unset($conf["search::getEqualVar"]);#如果尋找失敗if($searchResult["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$searchResult;#回傳結果return $result;}#if end#如果沒有找到對應的變數名稱if($searchResult["founded"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$searchResult;#回傳結果return $result;}#if end#如果該變數是不允許從session取得的if($conf["sessionNameArray"][$searchResult["equalVarName"]]==null){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"][]="變數".$searchResult["equalVarValue"]."禁止從session中取得";#回傳結果return $result;}#if end#取得遺失變數對應的session變數名稱$sessionVarName=$conf["sessionNameArray"][$searchResult["equalVarName"]];#函式說明:#取得session變數裡面的數值,然後卸除該session變數#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表有誤.#$result["error"],錯誤訊息#$result["founded"],是否找到session變數,"true"代表找到,"false"代表沒找到.#$result["content"],取得的變數內容#必填參數:$conf["session::getSessionValue"]["sessionVarName"]=$sessionVarName;#要取得內容的session變數名稱#可省略參數:#如果存在是否要卸除session變數的陣列if(isset($conf["unsetSessionArray"])){#設置其是否要卸除$conf["unsetSessionVar"]=$conf["unsetSessionArray"][$searchResult["equalVarName"]];#"true"代表要卸除session變數,預設不卸除}#if end#參考資料:#http://stackoverflow.com/questions/8971261/php-5-4-call-time-pass-by-reference-easy-fix-available#可變變數->http://emn178.pixnet.net/blog/post/80119035-php%E6%95%99%E5%AD%B8---%E8%AE%8A%E6%95%B8%28variables%29#卸除參考的原始變數->http://stackoverflow.com/questions/6654538/php-function-to-unset-variables-passed-by-reference$getSessionValue=session::getSessionValue($conf["session::getSessionValue"]);unset($conf["session::getSessionValue"]);#如果取得 session 變數失敗if($getSessionValue["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$getSessionValue;#回傳結果return $result;}#if end#如果 session 變數不存在if($getSessionValue["founded"]=="false"){#設置執行失敗$result["status"]="false";#設置沒有找到所有指定的變數$result["passed"]="false";#設置執行錯誤$result["error"]=$getSessionValue;#回傳結果return $result;}#if end#將取得的session變數儲存起來$result["inputDataContent"][$copy["lostVarName"][$i]]=$getSessionValue["content"];#從找不到的變數清單裡面移除已經找到的變數unset($result["lostVarName"][$i]);}#for end#如果沒有遺失的變數if(count($result["lostVarName"])==0){#設置檢查都通過$result["passed"]="true";}#if end}#if end}#if end}#if end#設置執行成功$result["status"]="true";#回傳結果return $result;}#function responseMutiInputDataSecurityEnhance end/*#函式說明:#能夠接收數個指定的變數名稱#回傳的結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數#$result["error"],函式錯誤訊息,若爲""則表示沒有錯誤#$result["warning"],警告訊息陣列#$result["getedValue"][$elementKey],取得的變數內容,請將「$elementKey」替換成要取得的表單傳送名稱,例如:$result["getedValue"]["account"],如果該變數不存在則其值會等於null.#必填參數:$conf["receivedVarArray"]=array();#要接收的參數陣列#可省略參數:#$conf["correctStr"],是否要過濾字串,預設為"true"要過濾,"false"為不要過濾.#$conf["correctStr"]="true";#參考資料:#無.#備註:#無.*/public static function receiveCustomMultiData(&$conf){#初始化要回傳的內容$result=array();#設置當前執行的函數$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck.checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("receivedVarArray");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("array");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";#可省略參數:#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("method","correctStr");#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string");#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array("post","true");$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);unset($conf["variableCheck.checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#根據接收的模式來判斷switch($conf["method"]){#如果爲 post/POSTcase "post" || "POST" :#有幾個變數要接收,就判斷幾次for($i=0;$i<count($conf["receivedVarArray"]);$i++){#將每個post變數視爲$elementKey指到$elementValueforeach($_POST as $elementKey => $elementValue){#如果 $elementKey 等於任何一個 $conf["receivedVarArray"] 裏陣列元素的key#函式說明:#檢查一個數值是否與陣列裏面的元素相同,如果有相同的則會傳其變數內容。#回傳結果:#$result["status"],"true"表示執行正確,"false"表示執行錯誤.#$result["founded"],"true"表示有找到相同的,"false"表示沒有找到相同的.#$result["error"],錯誤訊息#$result["function"],當前執行的函數名稱#$result["equalVarName"],相等的變數名稱或key.#$result["equalVarValue"],相等的變數數值內容.#必填參數:$conf["search"]["getEqualVar"]["conditionElement"]=$conf["receivedVarArray"][$i];#條件元素,要等於的元素內容。$conf["search"]["getEqualVar"]["compareElements"]=array($elementKey);#要比對的陣列變數內容。$getEqualVarResult=search::getEqualVar($conf["search"]["getEqualVar"]);unset($conf["search"]["getEqualVar"]);#如果 search::getEqualVar 執行失敗if($getEqualVarResult["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$getEqualVarResult;#回傳結果return $result;}#if end#如果找到對應的變數名稱if($getEqualVarResult["founded"]=="true"){#設定爲要回傳的變數之一#$result["getedValue"][$elementKey]=$getEqualVarResult["equalVarName"];$result["getedValue"][$elementKey]=$elementValue;}#if end}#foreach end#如果該變數沒有接收到if(!isset($result["getedValue"][$conf["receivedVarArray"][$i]])){#設為 null$result["getedValue"][$conf["receivedVarArray"][$i]]=null;}#if end}#for end#挑出 casebreak;#如果爲 get/GETcase "get" || "GET" :#有幾個變數要接收,就判斷幾次for($i=0;$i<count($conf["receivedVarArray"]);$i++){#將每個post變數視爲$elementKey指到$elementValueforeach($_GET as $elementKey => $elementValue){#如果 $elementKey 等於任何一個 $conf["receivedVarArray"] 裏陣列元素的key#函式說明:#檢查一個數值是否與陣列裏面的元素相同,如果有相同的則會傳其變數內容。#$result["status"],"true"表示執行正確,"false"表示執行錯誤.#$result["founded"],"true"表示有找到相同的,"false"表示沒有找到相同的.#$result["error"],錯誤訊息#$result["function"],當前執行的函數名稱#$result["equalVarName"],相等的變數名稱或key.#$result["equalVarValue"],相等的變數數值內容.#必填參數:$conf["search"]["getEqualVar"]["conditionElement"]=$conf["receivedVarArray"][$i];#條件元素,要等於的元素內容。$conf["search"]["getEqualVar"]["compareElements"]=array($elementKey);#要比對的陣列變數內容。$getEqualVarResult=search::getEqualVar($conf["search"]["getEqualVar"]);unset($conf["search"]["getEqualVar"]);#如果 search::getEqualVar 執行失敗if($getEqualVarResult["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$getEqualVarResult;#回傳結果return $result;}#if end#如果找到對應的變數名稱if($getEqualVarResult["founded"]=="true"){#設定爲要回傳的變數之一$result["getedValue"][$elementKey]=$elementValue;}#if end}#foreach end#如果該變數沒有接收到if(!isset($result["getedValue"][$conf["receivedVarArray"][$i]])){#設為 null$result["getedValue"][$conf["receivedVarArray"][$i]]=null;}#if end}#for end#挑出 casebreak;#如果不爲以上內容default :#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"][]="不適用的method參數";#回傳false,表示函式使用有誤return $result;}#switch end#設置執行正常$result["status"]="true";#回傳結果return $result;}#function receiveCustomMultiData end/*#函式說明:#放置按鈕#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["content"],按鈕語法.#必填參數:$conf["buttonDisplayValue"]="";#爲按鈕上顯示的文字。#可省略參數:#$conf["buttonStyleName"]="";#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __qbpwcf_button 。#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式或程式,預設不設定。#"document.forms.formName.submit()"爲傳送名爲testForm的表單內容#"window.print()"爲使用瀏覽器內建工具列印當前網頁#若搭配 javaScript 類別的 confirmWindow 函數的回傳結果,則會有確認視窗的效果.#$conf["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".#$conf["tableStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"false"。#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",亦即沒有框線的樣式;"__withBorder"則爲有框線的樣式#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".#$conf["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是,預設爲"false"。#$conf["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".#$conf["action"]="";#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用#$conf["target"]="";#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用#$conf["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".#$conf["formId"],字串,表單的id.#$conf["formId"]="";#$conf["buttonId"],字串,按鈕的id.#$conf["buttonId"]="";#參考資料:#http://stackoverflow.com/questions/3014649/how-to-disable-html-button-using-javascript#備註:#無.*/public static function button(&$conf){#初始化要回傳的內容$result=array();#設置當前執行的函數$result["function"]=__FUNCTION__;#初始化content樣式內容$result["content"]="";#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck.checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("buttonDisplayValue");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";#可省略參數:#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("buttonStyleName","buttonActionScriptFunction","buttonBorder","disabled","tableStart","tableClass","trStart","trClass","tdStart","tdClass","tdEnd","trEnd","tableEnd","formStart","action","target","formEnd","formId","buttonId");#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string");#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array("__qbpwcf_button",null,"0","false","false","__defaultTbaleCsssStyle","false","__withoutBorder","false","__withoutBorder","false","false","false","false",null,"_self","false",null,null);$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);unset($conf["variableCheck.checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果要表格開始if($conf["tableStart"]=="true"){#函式說明:#表格開始,可以設定表格的厚度和位置#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["content"],表格開始的語法#$result["function"],當前執行的函數#$result["error"],函式錯誤訊息#必填寫的參數:$conf["table::start"]["class"]=$conf["tableClass"];#爲表格的css樣式,若為"",則代表不套用css樣式;若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。$tableStart=table::start($conf["table::start"]);unset($conf["table::start"]);#如果表開始立失敗if($tableStart["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$tableStart;#回傳結果return $result;}#if end#串接表格開始的語法$result["content"]=$result["content"].$tableStart["content"];}#if end#如果其值爲 trueif($conf["trStart"]=="true"){#套用列開始指定的css樣式#函式說明:#列開始#回傳結果:#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.#$result["error"],函式錯誤訊息陣列.#$result["content"],列開始的語法.#$result["function"],當前執行的函式名稱.#必填寫的參數:$conf["table"]["trStart"]["class"]=$conf["trClass"];#爲tr的css樣式,若為""則為不套用css樣式;若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。$trStart=table::trStart($conf["table"]["trStart"]);unset($conf["table"]);#如果列開始失敗if($trStart["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$trStart;#回傳結果return $result;}#if end#串接列開始$result["content"]=$result["content"].$trStart["content"];}#if end#如果$conf["tdStart"]其值爲 "true"if($conf["tdStart"]=="true"){#列開始且套用css樣式.#函式說明:#行開始#回傳結果:#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.#$result["error"],函式錯誤訊息陣列.#$result["content"],行開始的語法.#$result["function"],當前執行的函式名稱.#必填寫的參數:$conf["table"]["tdStart"]["class"]=$conf["tdClass"];#該 td 要套用套用的 css 樣式#預設的樣式#"border-width","border","border-color","border-style","margin-right","margin-left"#"100%","1px","#0000FF","solid","auto","auto"$tdStart=table::tdStart($conf["table"]["tdStart"]);unset($conf["table"]);#若行開始失敗if($tdStart["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$tdStart;#回傳結果return $result;}#if end#串接行開始的語法$result["content"]=$result["content"].$tdStart["content"];}#if end#如果 $conf["formStart"] 等於 "true"if($conf["formStart"]=="true"){#如果 $conf["action"] 有設定if(isset($conf["action"])){#表單開始#函式說明:#表單開始#回傳結果:#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$resutl["function"],當前執行的函式名稱.#$result["content"],表單開始的語法.$conf["form"]["start"]["action"]=$conf["action"];#爲要交給那個檔案處理該表單傳送的內容#可省略參數:#$conf["name"]="";#爲該表單的名稱#$conf["method"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。$conf["form"]["start"]["target"]=$conf["target"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["form"]["start"]["tableStart"]=$conf["tableStart"];#爲該表單是否要以<table>開始。"true"爲是;#$conf["form"]["start"]["tableClass"]=$conf["tableClass"];#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。#如果有設定 $conf["formId"]if(isset($conf["formId"])){#設置表單的名稱與id$conf["form"]["start"]["name"]=$conf["formId"];#爲該表單的名稱,id也跟$conf["name"]一樣.}#if end$formStart=form::start($conf["form"]["start"]);unset($conf["form"]);#如果表單開始失敗if($formStart["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$formStart;#回傳結果return $result;}#if end#串接表單開始的語法$result["content"]=$result["content"].$formStart["content"];}#if end#反之不存在else{#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["status"]="\$conf[\"action\"]參數沒有設置!";#回傳結果return $result;}#else end}#if end#套用按鈕的css樣式$conf["buttonStyleName"]=" class = '".$conf["buttonStyleName"]."' ";#如果$conf["buttonActionScriptFunction"]不存在if(!isset($conf["buttonActionScriptFunction"])){#則預設給與""$conf["buttonActionScriptFunction"]="";}#if end#反之$conf["buttonActionScriptFunction"]存在else{#則套用設定的javaScript$conf["buttonActionScriptFunction"]=" onClick=\"".$conf["buttonActionScriptFunction"]."\"";}#else end#如果 $conf["disabled"] 為"true"if($conf["disabled"]=="true"){#設置取消按鈕功能的屬性$conf["disabled"]=" disabled=\"disabled\" ";}#if end#反之 $conf["disabled"] 不為"true"else{#預設功能要正常$conf["disabled"]="";}#else end#如果有設置 $conf["buttonId"]if(isset($conf["buttonId"])){#設置按鈕id的語法$conf["buttonId"]=" id=\"".$conf["buttonId"]."\"";}#if end#反之else{#設為空字串$conf["buttonId"]="";}#else end#放置按鈕$result["content"]=$result["content"]."<input type = submit ".$conf["disabled"]." value = \"".$conf["buttonDisplayValue"]."\" ".$conf["buttonStyleName"]." ".$conf["buttonActionScriptFunction"]." border = ".$conf["buttonBorder"]." ".$conf["buttonId"]." >";#如果其值爲 trueif($conf["tdEnd"]=="true"){#加上 </td>$result["content"]=$result["content"]."</td>";}#if end#如果其值爲 trueif($conf["trEnd"]=="true"){#加上 </tr>$result["content"]=$result["content"]."</tr>";}#if end#如果 $conf["formEnd"] 等於 trueif($conf["formEnd"]=="true"){#說明:#表單結束#回傳結果:#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$resutl["function"],當前執行的函式名稱.#$result["content"],表單結束的語法.#必填寫的參數:$conf_end["tableEnd"]=$conf["tableEnd"];#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。$formEnd=form::end($conf_end);unset($conf_end);#如果表單結束失敗if($formEnd["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$formEnd;#回傳結果return $result;}#if end#串聯表單結束的語法$result["content"]=$result["content"].$formEnd["content"];}#if end#如果有表格結束if($conf["tableEnd"]=="true"){#函式說明:#表格結束#回傳結果:#表格結束的語法$result["content"]=$result["content"].table::end();}#if end#執行到這邊代表執行正常$result["status"]="true";#回傳結果return $result;}#function button end/*#函式說明:#以圖片代替的表單送出扭#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["content"],按鈕語法.#必填參數:$conf["img"]="";#爲要作爲按鈕的圖片位置。#可省略參數:#$conf["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".#$conf["formAction"]="";#字串,表單要傳送到哪邊#$conf["legend"]="";#字串,圖片按鈕的註解.#$conf["formMethod"]="";#字串,表單傳送的方式,預設為"post",也可以使用"get".#$conf["formTarget"]="";#字串,表單的回應要呈現在哪邊,預設為"_self"(當前頁面、頁框),"_top"為整個頁面,"_parent"為父頁面,"_blank"為開新頁面,也可以為iframe的名稱.#$conf["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".#$conf["width"]="";#爲按鈕圖片的寬度,若省略,則按照原始圖片的寬度。#$conf["height"]="";#爲按鈕圖片的高度,若省略,則按照原始圖片的高度。#$conf["class"]="";#爲按鈕圖片要套用的css樣式名稱,若省略,則不套用任何css樣式。#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。#$conf["formId"],字串,表單的id.#$conf["formId"]="";#$conf["buttonId"],字串,按鈕的id.#$conf["buttonId"]="";#參考資料:#無.#備註:#使用圖片作為傳送按時,會傳送點擊圖片的x軸與y軸數數值.*/public static function buttonImg(&$conf){#初始化要回傳的內容$result=array();#設置當前執行的函數$result["function"]=__FUNCTION__;#初始化content樣式內容$result["content"]="";#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck.checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("img");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";#可省略參數:#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("formStart","formAction","legend","formMethod","formTarget","formEnd","width","height","class","trStart","tdStart","tdEnd","trEnd","formId","buttonId");#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string","string","string","string","string","string","string","string","string");#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array("false",null,null,"post","_self","false",null,null,null,"false","false","false","false",null,null);$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);unset($conf["variableCheck.checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果其值爲 trueif($conf["trStart"]=="true"){$result["content"]=$result["content"]."<tr>";}#if end#如果其值爲 trueif($conf["tdStart"]=="true"){$result["content"]=$result["content"]."<td>";}#if end#如果 $conf["formStart"] 為 "true" 且 $conf["formAction"] 有設置if($conf["formStart"]=="true" && isset($conf["formAction"])){#函式說明:#表單開始#回傳結果:#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$resutl["function"],當前執行的函式名稱.#$result["content"],表單開始的語法.#必填參數:$conf["form::start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容#可省略參數:#如果有設定 $conf["legend"]if(isset($conf["legend"])){$conf["form::start"]["legend"]=$conf["legend"];#顯示表單的標題}#if end#如果有設置 $conf["formId"]if(isset($conf["formId"])){#設置表單的名稱與id$conf["form::start"]["name"]=$conf["formId"];#爲該表單的名稱}#if end$conf["form::start"]["method"]=$conf["formMethod"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。$conf["form::start"]["target"]=$conf["formTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是,"false"為否,預設為"false".#$conf["tableClass"]="";#表格要套用的css樣式,預設爲"__withoutBorder"無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。#$conf["showFieldsetBorder"]="false";#是否要顯示表單區域的框線,預設為"false"不顯示,"true"代表要顯示.#參考資料:#http://www.w3schools.com/html/html_forms.asp#http://www.w3schools.com/tags/tag_fieldset.asp$formStart=form::start($conf["form::start"]);unset($conf["form::start"]);#如果表單開始失敗if($formStart["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$formStart;#回傳結果return $result;}#if end#串接表單開始$result["content"]=$result["content"].$formStart["content"];}#if end#如果$conf["class"]沒有設定if(!isset($conf["class"])){#則$conf["class"]就爲空的$conf["class"] = "";}#if end#如果$conf["class"]有設定else{#則套用css樣式$conf["class"] = "class=".$conf["class"];}#else end#如果$conf["width"]沒設定if(!isset($conf["width"])){#則$conf["width"]設爲""$conf["width"]="";}#if end#如果$conf["width"]有設定else{#就按照設定值$conf["width"]=" width=".$conf["width"];}#else end#如果$conf["height"]沒設定if(!isset($conf["height"])){#則$conf["height"]設爲""$conf["height"]="";}#if end#$conf["height"]有設定else{#就按照設定值$conf["height"]=" height=".$conf["height"];}#else end#如果 $conf["buttonId"] 存在if(isset($conf["buttonId"])){#設置按鈕的id$conf["buttonId"]=" id=\"".$conf["buttonId"]."\"";}#if end#反之else{#設為 ""$conf["buttonId"]="";}#else end#放置圖片按鈕的樣式$result["content"]=$result["content"]."<input type=image src=".$conf["img"]." alt=Submit ".$conf["width"]." ".$conf["height"]." ".$conf["class"]." border = 0 ".$conf["buttonId"]." >";#如果 $conf["formEnd"] 為 "true"if($conf["formEnd"]=="true"){#函式說明:#表單結束#回傳結果:#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$resutl["function"],當前執行的函式名稱.#$result["content"],表單結束的語法.#必填參數:$conf["form::end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。$formEnd=form::end($conf["form::end"]);unset($conf["form::end"]);#如果 表單結束 失敗if($formEnd["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$formEnd;#回傳結果return $result;}#if end#串接表單結束$result["content"]=$result["content"].$formEnd["content"];}#if end#如果其值爲 trueif($conf["tdEnd"]=="true"){$result["content"]=$result["content"]."</td>";}#if end#如果其值爲 trueif($conf["trEnd"]=="true"){$result["content"]=$result["content"]."</tr>";}#if end#執行到這邊代表執行正常$result["status"]="true";#回傳結果return $result;}#function buttonImg end/*#函式說明:#將表單填寫的狀態還原至預設值的按鈕.#回傳的內容:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["content"],按鈕語法.#必填參數:#$conf["value"],字串,爲清空表單內容的按鈕顯示名稱$conf["value"]="reset";#可省略參數:#$conf["class"],字串,爲要套用的css樣式名稱,預設為__qbpwcf_button."#$conf["class"]="";#$conf["trStart"],字串,爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設為"false".#$conf["trStart"]="true";#$conf["tdStart"],字串,爲是否要以<td>開頭,"true"表示"是",可以看成列裏面的元素開始,預設為"false".#$conf["tdStart"]="true";#$conf["tdEnd"],字串,爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設為"false".#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設為"false".#$conf["buttonId"],字串,按鈕的id.#$conf["buttonId"]="";#參考資料:#無.#備註:#無.*/public static function buttonReset(&$conf){#初始化要回傳的內容$result=array();#設置當前執行的函數$result["function"]=__FUNCTION__;#初始化content樣式內容$result["content"]="";#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck.checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("value");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";#可省略參數:#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("class","trStart","tdStart","tdEnd","trEnd","buttonId");#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string");#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array("__qbpwcf_button","false","false","false","false",null);$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);unset($conf["variableCheck.checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果其值爲 trueif($conf["trStart"]=="true"){#串接 "<tr>"$result["content"]=$result["content"]."<tr>";}#if end#如果其值爲 trueif($conf["tdStart"]=="true"){#串接 "<td>"$result["content"]=$result["content"]."<td>";}#if end#如果不使用樣式if(!isset($conf["class"])){#則$class就爲空的$conf["class"] = "";}#if end#如果有使用class樣式else{#則套用樣式$conf["class"] = " class=".$conf["class"];}#else end#套用設定值$conf["value"]=" value =".$conf["value"];#如果 $conf["buttonId"] 有設置if(isset($conf["buttonId"])){#設置按鈕id$conf["buttonId"]=" id=\"".$conf["buttonId"]."\"";}#if end#反之else{#設為 ""$conf["buttonId"]="";}#else end#放置表單內容清空的按鈕$result["content"]=$result["content"]."<input type = reset ".$conf["value"]." ".$conf["class"]." border = 0 ".$conf["buttonId"]." >";#如果其值爲 trueif($conf["tdEnd"]=="true"){#串接 "</td>"$result["content"]=$result["content"]."</td>";}#if end#如果其值爲 trueif($conf["trEnd"]=="true"){#串接 "</tr>"$result["content"]=$result["content"]."</tr>";}#if end#設置執行正常$result["status"]="true";#回傳語法return $result;}#function buttonReset end/*#函式說明:#一個簡單的按鈕,按了可以到指定的頁面,同時也可以傳送多個隱藏的變數#回傳的結果#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列#$result["function"],當前執行的函數名稱.#$result["content"],語法內容#必填參數:#$conf["buttonDisplayValue"],字串,按鈕上要顯示的文字$conf["buttonDisplayValue"]="";#可省略參數:#$conf["buttonStyleName"],字串,按鈕的css樣式應該爲何,若省略的話預設會採用 __qbpwcf_button 的樣式#$conf["buttonStyleName"]="";#$conf["hiddenVarName"],陣列,要傳送的隱藏變數名稱,與 $conf["hiddenVarContent"] 相對應。#$conf["hiddenVarName"]=array();#$conf["hiddenVarContent"],陣列,要傳誦的隱藏變數內容,與 $conf["hiddenVarName"] 相對應。#$conf["hiddenVarContent"]=array();#$conf["disabled"],字串,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".#$conf["disabled"]="true";#$conf["formStart"],字串,爲是否要表單開始,如果爲"true"則代表要表單開始,預設爲"false".#$conf["formStart"]="true";#$conf["method"],字串,爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。#$conf["method"]="";#$conf["formName"],字串,該表單的名稱#$conf["formName"]="";#$conf["buttonId"],字串,按鈕的id#$conf["buttonId"]="";#$conf["actionPage"],字串,按鈕按了之後要到哪個地方?若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面。#$conf["actionPage"]="";#$conf["buttonActionScriptFunction"],字串,爲按下按鈕時所要執行的javaScript函式,預設不設定,可以是"document.forms.formName.submit()"(傳送名爲testForm的表單內容).#$conf["buttonActionScriptFunction"]="";#$conf["formEnd"],字串,爲是否要表單結束,如果爲"true"則代表要表單結束,預設爲"false"#$conf["formEnd"]="true";#$conf["tableStart"],字串,爲是否要表格開始,"true"表示"是",預設為"false".#$conf["tableStart"]="true";#$conf["tableClass"],字串,爲表格要採用的css樣式名稱,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder".#$conf["tableClass"]="__withoutBorder";#$conf["trStart"],字串,爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".#$conf["trStart"]="true"#$conf["trClass"],字串,列開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder"#$conf["trClass"]="__withoutBorder";#$conf["tdStart"],字串,爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false"#$conf["tdStart"]="true";#$conf["tdClass"],字串,行開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder"#$conf["tdClass"]="__withoutBorder";#$conf["tdEnd"],字串,爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".#$conf["tdEnd"]="true";#$conf["trEnd"],字串,爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".#$conf["trEnd"]="true";#$conf["displayTarget"],字串,頁面的呈現方法,可以是開新視窗(_blank)、在目前頁面、頁框裏面(_self)、在父頁面(_parent)、最上層頁面(_top),預設為"_top"。#$conf["displayTarget"]="";#$conf["tableEnd"],字串,爲是否要表格結束,"true"表示"是",預設為"false".#$conf["tableEnd"]="true";#參考資料:#無.#備註:#無.*/public static function sendHugeDataButton(&$conf){#初始化要回傳的內容$result=array();#設置當前執行的函數$result["function"]=__FUNCTION__;#初始化content樣式內容$result["content"]="";#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck.checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("buttonDisplayValue");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";#可省略參數:#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("method","buttonStyleName","hiddenVarName","hiddenVarContent","disabled","formStart","formName","actionPage","buttonActionScriptFunction","formEnd","tableStart","tableClass","trStart","trClass","tdStart","tdClass","tdEnd","trEnd","displayTarget","tableEnd","formName","buttonId");#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string","array","array","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string");#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array("post","__qbpwcf_button",null,null,"false","false",null,null,null,"false","false","__withoutBorder","false","__withoutBorder","false","__withoutBorder","false","false","_top","false",null,null);#$conf["variableCheck.checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.$conf["variableCheck.checkArguments"]["arrayCountEqualCheck"][]=array("hiddenVarName","hiddenVarContent");$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);unset($conf["variableCheck.checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果要表格開始if($conf["tableStart"]=="true"){#函式說明:#表格開始,可以設定表格的厚度和位置#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["content"],表格開始的語法#$result["function"],當前執行的函數#$result["error"],函式錯誤訊息#必填寫的參數:$conf["table::start"]["class"]=$conf["tableClass"];#爲表格的css樣式,若為"",則代表不套用css樣式;若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。$tableStart=table::start($conf["table::start"]);unset($conf["table::start"]);#如果表開始立失敗if($tableStart["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$tableStart;#回傳結果return $result;}#if end#串接表格開始的語法$result["content"]=$result["content"].$tableStart["content"];}#if end#如果 $conf["formStart"] 等於 "true"if($conf["formStart"]=="true"){#如果 $conf["actionPage"] 有設定if(isset($conf["actionPage"])){#表單開始#函式說明:#表單開始#回傳結果:#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$resutl["function"],當前執行的函式名稱.#$result["content"],表單開始的語法.$conf["form"]["start"]["action"]=$conf["actionPage"];#爲要交給那個檔案處理該表單傳送的內容#可省略參數:#如果有設定 $conf["formName"]if(isset($conf["formName"])){$conf["form"]["start"]["name"]=$conf["formName"];#爲該表單的名稱}#if end$conf["form"]["start"]["method"]=$conf["method"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。$conf["form"]["start"]["target"]=$conf["displayTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["form"]["start"]["tableStart"]=$conf["tableStart"];#爲該表單是否要以<table>開始。"true"爲是;#$conf["form"]["start"]["tableClass"]=$conf["tableClass"];#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。$formStart=form::start($conf["form"]["start"]);unset($conf["form"]);#如果表單開始失敗if($formStart["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$formStart;#回傳結果return $result;}#if end#串接表單開始的語法$result["content"]=$result["content"].$formStart["content"];}#if end#反之不存在else{#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["status"]="\$conf[\"action\"]參數沒有設置!";#回傳結果return $result;}#else end}#if end#如果其值爲 trueif($conf["trStart"]=="true"){#套用列開始指定的css樣式#函式說明:#列開始#回傳結果:#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.#$result["error"],函式錯誤訊息陣列.#$result["content"],列開始的語法.#$result["function"],當前執行的函式名稱.#必填寫的參數:$conf["table"]["trStart"]["class"]=$conf["trClass"];#爲tr的css樣式,若為""則為不套用css樣式;若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。$trStart=table::trStart($conf["table"]["trStart"]);unset($conf["table"]);#如果列開始失敗if($trStart["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$trStart;#回傳結果return $result;}#if end#串接列開始$result["content"]=$result["content"].$trStart["content"];}#if end#如果$conf["tdStart"]其值爲 "true"if($conf["tdStart"]=="true"){#列開始且套用css樣式.#函式說明:#行開始#回傳結果:#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.#$result["error"],函式錯誤訊息陣列.#$result["content"],行開始的語法.#$result["function"],當前執行的函式名稱.#必填寫的參數:$conf["table"]["tdStart"]["class"]=$conf["tdClass"];#該 td 要套用套用的 css 樣式#預設的樣式#"border-width","border","border-color","border-style","margin-right","margin-left"#"100%","1px","#0000FF","solid","auto","auto"$tdStart=table::tdStart($conf["table"]["tdStart"]);unset($conf["table"]);#若行開始失敗if($tdStart["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$tdStart;#回傳結果return $result;}#if end#串接行開始的語法$result["content"]=$result["content"].$tdStart["content"];}#if end#如果 $conf["hiddenVarName"] 存在if(isset($conf["hiddenVarName"])){#傳送多個隱藏表單的資訊#回傳的數值:#如果回傳值等於1,則代表參數設定錯誤。#$result["sendedArrayName"],#$result["sendedArrayValue"],#$result["sendedArrayCount"],#必填參數:$conf_inputMutiHidden["nameArray"]=$conf["hiddenVarName"];#欲傳送的隱藏陣列變數名稱$conf_inputMutiHidden["valueArray"]=$conf["hiddenVarContent"];#欲傳送的隱藏陣列變數數值$hiddenVar=form::inputMultiHidden($conf_inputMutiHidden);unset($conf_inputMutiHidden);#如果隱藏的表單變數設置失敗if($hiddenVar["status"]=="false"){#設置執行不正常$result["status"]="false";#設置執行錯誤的訊息$result["error"]=$hiddenVar;#回傳結果return $result;}#if end#接上語法$result["content"]=$result["content"].$hiddenVar["content"];}#if end#一般按鈕#函式說明:#放置按鈕#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["content"],按鈕語法.#必填參數:$conf["form::button"]["buttonDisplayValue"]=$conf["buttonDisplayValue"];#爲按鈕上顯示的文字。#可省略參數:$conf["form::button"]["buttonStyleName"]=$conf["buttonStyleName"];#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __simpleButtonLinkDefaultButtonCssStyle 。#其屬性爲 "width","height","font-size","text-align"#其屬性值爲 "100%" , "50" , "30" , "center"#如果有設定 $conf["buttonActionScriptFunction"]if(isset($conf["buttonActionScriptFunction"])){$conf["form::button"]["buttonActionScriptFunction"]=$conf["buttonActionScriptFunction"];#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。#"document.forms.formName.submit()"爲傳送名爲testForm的表單內容#"window.print()"爲使用瀏覽器內建工具列印當前網頁}#if end#$conf["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。$conf["form::button"]["disabled"]=$conf["disabled"];#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".#$conf["tableStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"false"。#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",亦即沒有框線的樣式;"__withBorder"則爲有框線的樣式#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".#$conf["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是,預設爲"false"。#$conf["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".#$conf["action"]="";#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用#$conf["target"]="";#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用#$conf["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".#$conf["buttonId"],字串,按鈕的id.#如果 $conf["buttonId"] 有設置if(isset($conf["buttonId"])){#設置按鈕id$conf["form::button"]["buttonId"]=$conf["buttonId"];}#if end#參考資料:#http://stackoverflow.com/questions/3014649/how-to-disable-html-button-using-javascript$button=form::button($conf["form::button"]);unset($conf["form::button"]);#如果建立按鈕失敗if($button["status"]=="false"){#設置執行不正常$result["status"]="false";#設置執行錯誤的訊息$result["error"]=$button;#回傳結果return $result;}#if end#接上按鈕語法$result["content"]=$result["content"].$button["content"];#如果其值爲 trueif($conf["tdEnd"]=="true"){#加上 </td>$result["content"]=$result["content"]."</td>";}#if end#如果其值爲 trueif($conf["trEnd"]=="true"){#加上 </tr>$result["content"]=$result["content"]."</tr>";}#if end#如果 $conf["formEnd"] 等於 trueif($conf["formEnd"]=="true"){#說明:#表單結束#回傳結果:#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$resutl["function"],當前執行的函式名稱.#$result["content"],表單結束的語法.#必填寫的參數:$conf_end["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。$formEnd=form::end($conf_end);unset($conf_end);#如果表單結束失敗if($formEnd["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$formEnd;#回傳結果return $result;}#if end#串聯表單結束的語法$result["content"]=$result["content"].$formEnd["content"];}#if end#如果有表格結束if($conf["tableEnd"]=="true"){#函式說明:#表格結束#回傳結果:#表格結束的語法$result["content"]=$result["content"].table::end();}#if end#設置執行正常$result["status"]="true";#回傳結果return $result;}#function sendHugeDataButton end/*#函式說明:#可以輸入文字的表單#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["content"],按鈕語法.#必填參數:#$conf["name"],字串,爲該文字輸入框的名稱,用於讓接收頁面讀取的名稱。$conf["name"]="";#$conf["readOnly"],字串,爲該文字框是否可以填寫資料,若要只能觀看不能填寫,那麼就必須將其值設爲"true",反之要設爲"false".$conf["readOnly"]="false";#可省略參數:#$conf["width"],字串,爲文字框的外觀長度,預設為"100%".#$conf["width"]="";#$conf["maxInputLength"],字串,爲可輸入的最大位元長度,預設不限制.#$conf["maxInputLength"]="";#$conf["autoFocus"],字串,是否為將填寫的指標移到該表單,"true"代表要,預設為"false".#$conf["autoFocus"]="";#$conf["value"],字串,爲該文字框預設要顯示的文字,預設爲"".#$conf["value"]="";#$conf["class"],字串,爲要套用的css樣式,若省略,則會套用預設的 "__qbpwcf_inputTextCssStyle" 樣式,其屬性爲 "width:100%","font-size:30px"#$conf["class"]="";#$conf["classList"],字串陣列,為要使用的多個css class樣式,若有使用,則會取代"class"參數的設定.#$conf["classList"]=array();#$conf["jsActivitor"],字串,爲觸發js的條件,可以是"onChange"(已改變內容時)、"onClick"(按下按鈕時)、"onkeyup"(當鍵盤按下放開後)、"onmouseover"(當滑鼠移過去的時候)...,須搭配$conf["jsSubmitActionTarget"]參數。#$conf["jsActivitor"]="";#$conf["jsAction"],字串,爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。#$conf["jsAction"]="";#$conf["trStart"],字串,爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".#$conf["trStart"]="";#$conf["tdStart"],字串,爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".#$conf["tdStart"]="";#$conf["formStart"],字串,爲是否要以<form>開頭,"true"表示"是",也可以看成表單的開始,預設為"false".#$conf["formStart"]="";#$conf["formAction"],字串,表單遞交的目的地,若$conf["formStart"]為"true",則該參數不能省略.#$conf["formAction"]="";#$conf["formName"],字串,爲該表單的名稱#$conf["formName"]="";#$conf["formMethod"],字串,爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。#$conf["formMethod"]="";#$conf["formTarget"],字串,為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["formTarget"]="";#$conf["tableStart"],字串,爲該表單是否要以<table>開始。"true"爲是,預設為"false".#$conf["tableStart"]="";#$conf["tableClass"],字串,表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式,預設為"__withoutBorder".#$conf["tableClass"]="";#$conf["formEnd"],字串,爲是否要以<form>結尾,"true"表示"是",也可以看成表單的結束,預設為"false".#$conf["formEnd"]="true";#$conf["tdEnd"],字串,爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".#$conf["tdEnd"]="true";#$conf["trEnd"],字串,爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".#$conf["trEnd"]="true";#$conf["tableEnd"],字串,爲該表單是否要以</table>結尾,"true"爲是,預設為"false".#$conf["tableEnd"]="true";#$conf["autocomplete"],字串,是否依據使用者過往輸入的記錄來提示可能要的輸入內容,"on"為啟用,"off"為停用,預設為"on".#$conf["autocomplete"]="off";#$conf["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".#$conf["required"]="true";#$conf["comment"],字串,輸入方框上面要放哪些註解文字,亦即用label來呈現,同時指定"for"屬性的數值為當前"input"標籤的id,意即參數"name"的內容.#$conf["comment"]="";#$conf["placeholder"],字串,當沒有內容時要顯示的內容.#$conf["placeholder"]="";#$conf["br"],字串,"true"代表最後要換行,預設為"false".#$conf["br"]="true";#$conf["p"],字串,"true"代表最後要空一行,預設為"false".#$conf["p"]="true";#$conf["id"],字串,該元素的id,預設不使用.#$conf["id"]="";#$conf["dataFormId"],字串,提供用於識別哪一張表單的data屬性名稱.#$conf["dataFormId"]="";#參考資料:#input=>http://www.w3schools.com/tags/tag_input.asp#備註:#無.*/public static function inputText(&$conf){#初始化要回傳的內容$result=array();#設置當前執行的函數$result["function"]=__FUNCTION__;#初始化content樣式內容$result["content"]="";#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["argu"],設置給予的參數.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填寫的參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可以省略的參數:#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("name","readOnly");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.#$conf["canNotBeEmpty"]=array();#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.#$conf["canBeEmpty"]=array();#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.#$conf["skipableVariableCanNotBeEmpty"]=array();#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("width","maxInputLength","autoFocus","value","class","jsActivitor","jsAction","trStart","tdStart","formStart","formAction","formName","formMethod","formTarget","tableStart","tableClass","formEnd","tdEnd","trEnd","tableEnd","autocomplete","comment","placeholder","br","p","required","id","dataFormId","classList");#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","array");#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null,"false",null,"__qbpwcf_inputTextCssStyle",null,null,"false","false","false",null,null,"post","_self","false","__withoutBorder","false","false","false","false","on",null,null,"false","false","false",null,null,null);#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".#$conf["disallowAllSkipableVarIsEmpty"]="";#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".#$conf["disallowAllSkipableVarIsEmptyArray"]="";#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查失敗if($checkArguments["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkArguments;#回傳結果return $result;}#if end#如果檢查不通過if($checkArguments["passed"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkArguments;#回傳結果return $result;}#if end#如果 $conf["tableStart"] 為 "true"if($conf["tableStart"]=="true"){#函式說明:#表格開始,可以設定表格的厚度和位置#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["content"],表格開始的語法#$result["function"],當前執行的函數#$result["error"],函式錯誤訊息#必填寫的參數:$conf["table::start"]["class"]=$conf["tableClass"];#爲表格的css樣式,若為"",則代表不套用css樣式;若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。$tableStart=table::start($conf["table::start"]);unset($conf["table::start"]);#如果表開始立失敗if($tableStart["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$tableStart;#回傳結果return $result;}#if end#串接表格開始的語法$result["content"]=$result["content"].$tableStart["content"];}#if end#如果 $conf["comment"] 有設置if(isset($conf["comment"])){#新增label,且套用css樣式.$result["content"]=$result["content"]."<label for=\"".$conf["name"]."\" class=\"".$conf["class"]."\" >".$conf["comment"]."</label>";}#if end#如果其值爲 trueif($conf["trStart"]=="true"){#串接列開始<tr>$result["content"]=$result["content"]."<tr>";}#if end#如果其值爲 trueif($conf["tdStart"]=="true"){#串接欄位開始<td>$result["content"]=$result["content"]."<td>";}#if end#如果 $conf["formStart"] 等於 "true"if($conf["formStart"]=="true"){#函式說明:#表單開始#回傳結果:#$result,表單開始的語法#必填參數:$conf["form"]["start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容#可省略參數:#如果 $conf["formName"] 有設置if(isset($conf["formName"])){#過濾 $conf["formName"] 避免錯誤#函式說明:#處理字串避免網頁出錯#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["content"],爲處理好的字串.#$result["error"],錯誤訊息陣列.#必填參數:$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["formName"];#爲要處理的字串#可省略的參數:$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);unset($conf["stringProcess::correctCharacter"]);#如果過濾 $conf["formName"] 失敗if($correctCharacter["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$correctCharacter;#回傳結果return $result;}#if end#則設定其數值$conf["form"]["start"]["name"]=$correctCharacter["content"];#爲該表單的名稱}#if end#如果 $conf["formMethod"] 有設置if(isset($conf["formMethod"])){#則設定其數值$conf["form"]["start"]["method"]=$conf["formMethod"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。}#if end#如果 $conf["formTarget"] 有設定if(isset($conf["formTarget"])){#則設定其數值$conf["form"]["start"]["target"]=$conf["formTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。}#if end#則設定其參數數值$conf["form"]["start"]["tableStart"]="false";#爲該表單是否要以<table>開始。"true"爲是;#則設定其數值#$conf["form"]["start"]["tableClass"]=$conf["tableClass"];#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。$formStart=form::start($conf["form"]["start"]);unset($conf["form"]["start"]);#如果表單開始失敗if($formStart["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$formStart;#回傳結果return $result;}#if end#串接表單開始的語法$result["content"]=$result["content"].$formStart["content"];}#if end#如果$conf["width"]沒設定if(!isset($conf["width"])){#則$conf["width"]爲空值$conf["width"]="";}#if end#如果$conf["width"]有設定else{#則套用寬度的css設定值$conf["width"]=" style=\"width:".$conf["width"].";\" ";}#else end#如果$conf["maxInputLength"]沒設定if(!isset($conf["maxInputLength"])){#則$conf["maxInputLength"]爲空值$conf["maxInputLength"]="";}#if end#如果$conf["maxInputLength"]有設定else{$conf["maxInputLength"]=" maxlength=".$conf["maxInputLength"];}#else end#如果$conf["value"]沒有設定if(!isset($conf["value"])){#則$value就爲空值$conf["value"]="";}#if end#如果$conf["value"]有設定,且不為空.else if($conf["value"]!==""){#過濾 $conf["value"] 的內容,避免錯誤。#函式說明:#處理字串避免網頁出錯#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["content"],爲處理好的字串.#$result["error"],錯誤訊息陣列.#必填參數:$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["value"];#爲要處理的字串#可省略的參數:$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);unset($conf["stringProcess::correctCharacter"]);#如果過濾字串失敗if($correctCharacter["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$correctCharacter;#回傳結果return $result;}#if end#就設定預設的內容$conf["value"] =" value= \"".$correctCharacter["content"]."\" ";}#else end#如果$conf["readOnly"]爲"true"if($conf["readOnly"]=="true"){#則$conf["readOnly"] 爲 readonly$conf["readOnly"]="readonly=true disabled=true";}#if end#反之else{#$conf["readOnly"]爲空$conf["readOnly"]="";}#if end#判斷 $conf["autoFocus"] 的數值switch($conf["autoFocus"]){#如果是 "true"case "true":#設置為 "autofocus"$conf["autoFocus"]=" autofocus=true ";#跳出 switchbreak;#如果是其他內容default:#則設置為 ""$conf["autoFocus"]="";}#switch end#如果有設置 $conf["class"]if(isset($conf["class"])){#套用css設定$conf["class"]=" class = \"".$conf["class"]."\"";}#if end#反之else{#設置為空字串$conf["class"]="";}#else end#如果有 $conf["classList"]if(isset($conf["classList"])){#傳接 class 開始$conf["class"]=" class = \"";#針對 $conf["classList"] 的每個元素foreach($conf["classList"] as $index => $cssClassName){#串接 class 名稱$conf["class"]=$conf["class"].$cssClassName;#若後面還有未串接的 class 名稱if(isset($conf["classList"][$index+1])){#串接空格$conf["class"]=$conf["class"]." ";}#if end}#foreach end#串接 class 結束$conf["class"]=$conf["class"]."\"";}#if end#如果 $conf["jsActivitor"] 與 $conf["jsAction"] 皆有設定if( isset($conf["jsActivitor"]) && isset($conf["jsAction"]) ){#則將設定值組合$conf["jsCustom"]=" ".$conf["jsActivitor"]."=".$conf["jsAction"]." ";}#if end#如果 $conf["jsCustom"] 沒有設定if(!isset($conf["jsCustom"])){#將其設爲空值$conf["jsCustom"]="";}#if end#過濾 $conf["name"] 避免錯誤#函式說明:#處理字串避免網頁出錯#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["content"],爲處理好的字串.#$result["error"],錯誤訊息陣列.#必填參數:$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["name"];#爲要處理的字串#可省略的參數:$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);unset($conf["stringProcess::correctCharacter"]);#如果過濾字串失敗if($correctCharacter["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$correctCharacter;#回傳結果return $result;}#if end#置換過濾好了的$conf["name"]$conf["name"]=$correctCharacter["content"];#如果有設定 $conf["placeholder"]if(isset($conf["placeholder"])){#串接 placeholder 的內容$conf["placeholder"]=" placeholder=\"".$conf["placeholder"]."\" ";}#if end#反之沒有設定 $conf["placeholder"]else{#設為 ""$conf["placeholder"]="";}#else end#如果 $conf["required"] 為"true"if($conf["required"]=="true"){#設置 "required" 屬性$conf["required"]="required=true";}#if end#反之else{#設為空值$conf["required"]="";}#else end#如果有設置idif(isset($conf["id"])){#設置id屬性$conf["id"]="id=\"".$conf["id"]."\"";}#if end#反之else{#設為空值$conf["id"]="";}#else end#如果有設置 $conf["dataFormId"]if(isset($conf["dataFormId"])){#設置 data-id 屬性$conf["dataFormId"]="data-form-id=\"".$conf["dataFormId"]."\"";}#if end#反之設置為空數值else{$conf["dataFormId"]="";}#else end#如果要 autocompleteif($conf["autocomplete"]==="on"){#設置為 "autocomplete"$conf["autocomplete"]="autocomplete";}#if end#反之else{#設置為空字串$conf["autocomplete"]="";}#else end#放置可以輸入文字的表單$result["content"]=$result["content"]."<input ".$conf["id"]." type = \"text\" ".$conf["width"]." ".$conf["maxInputLength"]." name = ".$conf["name"]." id = ".$conf["name"]." ".$conf["value"]." ".$conf["readOnly"]." ".$conf["autoFocus"]." ".$conf["class"]." ".$conf["jsCustom"]." ".$conf["placeholder"]." ".$conf["autocomplete"]." ".$conf["required"]." ".$conf["dataFormId"]." >";#如果 $conf["formEnd"] 等於 "true"if($conf["formEnd"]=="true"){#函式說明:#表單結束#回傳結果:#$result,表單結束的語法#必填參數:#則設定其數值$conf["form"]["end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。$formEnd=form::end($conf["form"]["end"]);unset($conf["form"]["end"]);#串接表單結束的語法$result["content"]=$result["content"].$formEnd["content"];}#if end#如果其值爲 trueif($conf["tdEnd"]=="true"){#串接欄位結束的語法$result["content"]=$result["content"]."</td>";}#if end#如果其值爲 trueif($conf["trEnd"]=="true"){#串接列結束的語法$result["content"]=$result["content"]."</tr>";}#if end#如果 $conf["br"] 等於 "true"if($conf["br"]=="true"){#結尾加上<br>$result["content"]=$result["content"]."<br>";}#if end#如果 $conf["p"] 等於 "true"if($conf["p"]=="true"){#結尾加上<p>$result["content"]=$result["content"]."<p>";}#if end#執行到這邊代表執行成功$result["status"]="true";#回傳結果return $result;}#function inputText end/*#函式說明:#可以輸入文字的區塊#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["content"],按鈕語法.#必填參數:$conf["name"]="";#爲文字輸入框的名稱,供接收端辨識用。$conf["readOnly"]="false";#爲是否要爲唯讀,如果爲"true",則爲唯讀。反之則爲"false"。#可省略參數:#$conf["id"],字串,文字區塊的id,供javaScript呼叫用.#$conf["id"]="";#$conf["width"]="";#為輸入框的寬度,預設不指定.#$conf["cols"]="";#爲文字輸入框的欄位數(寬),預設爲按照瀏覽器設定值。#$conf["rows"]="";#爲文字輸入框的列數(高),預設爲按照瀏覽器設定值。#$conf["maxInputLength"]="";#爲文字輸入的長度限制,預設無限制。#$conf["defaultText"]="";#爲文字輸入框裏面的預設文字內容,預設是空的。#$conf["class"]=;#爲要套用的css樣式。如果沒有指定 ,則採用預設的css樣式,"__qbpwcf_inputTextAreaCssStyle",其屬性爲 "width:100%","height:120px","font-size:30px"#$conf["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。#$conf["jsAction"]="";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。#$conf["formStart"]="true";#爲是否要以<form>開頭,"true"表示"是",也可以看成表單的開始,預設為"false".#$conf["formAction"]="";#表單遞交的目的地,若$conf["formStart"]為"true",則該參數不能省略.#$conf["formName"]="";#爲該表單的名稱#$conf["formMethod"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。#$conf["formTarget"]="";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["formEnd"]="true";#爲是否要以<form>結尾,"true"表示"是",也可以看成表單的結束,預設為"false".#$conf["comment"],字串,輸入方框上面要放哪些註解文字,亦即用label來呈現,同時指定"for"屬性的數值為當前"input"標籤的id,意即參數"name"的內容.#$conf["comment"]="";#$conf["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".#$conf["required"]="true";#$conf["placeholder"],字串,當沒有內容時要顯示的內容.#$conf["placeholder"]="";#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設為"false".#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是",也可以看成列裏面的元素開始,預設為"false".#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設為"false".#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設為"false".#$conf["dataFormId"],字串,提供用於識別哪一張表單的data屬性名稱.#$conf["dataFormId"]="";#參考資料:#input=>http://www.w3schools.com/tags/tag_input.asp#備註:#無.*/public static function inputTextArea(&$conf){#初始化要回傳的內容$result=array();#設置當前執行的函數$result["function"]=__FUNCTION__;#初始化content樣式內容$result["content"]="";#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck.checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("name","readOnly");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string","string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";#可省略參數:#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="true";#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("id","width","cols","rows","maxInputLength","defaultText","class","jsActivitor","jsAction","comment","trStart","tdStart","tdEnd","trEnd","placeholder","required","formStart","formAction","formName","formMethod","formTarget","formEnd","dataFormId");#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string");#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array(null,null,null,null,null,"","__qbpwcf_inputTextAreaCssStyle",null,null,null,"false","false","false","false",null,"false","false","false","false","false","false","false",null);$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);unset($conf["variableCheck.checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果其值爲 trueif($conf["trStart"]=="true"){#串接列開始$result["content"]=$result["content"]."<tr>";}#if end#如果其值爲 trueif($conf["tdStart"]=="true"){#串接欄開始$result["content"]=$result["content"]."<td>";}#if end#如果 $conf["formStart"] 等於 "true"if($conf["formStart"]=="true"){#函式說明:#表單開始#回傳結果:#$result,表單開始的語法#必填參數:$conf["form"]["start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容#可省略參數:#如果 $conf["formName"] 有設置if(isset($conf["formName"])){#過濾 $conf["formName"] 避免錯誤#函式說明:#處理字串避免網頁出錯#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["content"],爲處理好的字串.#$result["error"],錯誤訊息陣列.#必填參數:$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["formName"];#爲要處理的字串#可省略的參數:$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);unset($conf["stringProcess::correctCharacter"]);#如果過濾 $conf["formName"] 失敗if($correctCharacter["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$correctCharacter;#回傳結果return $result;}#if end#則設定其數值$conf["form"]["start"]["name"]=$correctCharacter["content"];#爲該表單的名稱}#if end#如果 $conf["formMethod"] 有設置if(isset($conf["formMethod"])){#則設定其數值$conf["form"]["start"]["method"]=$conf["formMethod"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。}#if end#如果 $conf["formTarget"] 有設定if(isset($conf["formTarget"])){#則設定其數值$conf["form"]["start"]["target"]=$conf["formTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。}#if end#則設定其參數數值$conf["form"]["start"]["tableStart"]="false";#爲該表單是否要以<table>開始。"true"爲是;#則設定其數值#$conf["form"]["start"]["tableClass"]=$conf["tableClass"];#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。$formStart=form::start($conf["form"]["start"]);unset($conf["form"]["start"]);#如果表單開始失敗if($formStart["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$formStart;#回傳結果return $result;}#if end#串接表單開始的語法$result["content"]=$result["content"].$formStart["content"];}#if end#如果$conf["readOnly"]沒有設定if($conf["readOnly"]=="false"){#$conf["readOnly"]就爲空值$conf["readOnly"]="";}#if end#如果$conf["readOnly"]有設定if($conf["readOnly"]=="true"){#就設置 readonly 屬性$conf["readOnly"]=" readonly = readonly ";}#if end#如果$conf["cols"]沒設定if(!isset($conf["cols"])){#則$conf["cols"]爲空$conf["cols"]="";}#if end#如果$conf["cols"]有設定else{#則套用設定值$conf["cols"]=" cols=".$conf["cols"];}#else end#如果$conf["rows"]沒設定if(!isset($conf["rows"])){#則$conf["rows"]爲空$conf["rows"]="";}#if end#如果$conf["rows"]有設定else{#就套用設定值$conf["rows"]=" rows=".$conf["rows"];}#else end#如果$conf["width"]沒設定if(!isset($conf["width"])){#則$conf["width"]爲空值$conf["width"]="";}#if end#如果$conf["width"]有設定else{#則套用寬度的css設定值$conf["width"]=" style=\"width:100%;\" ";}#else end#如果$conf["maxInputLength"]沒設定if(!isset($conf["maxInputLength"])){#則$conf["maxInputLength"]爲空$conf["maxInputLength"]="";}#if end#如果$conf["maxInputLength"]有設定else{$conf["maxInputLength"]=" maxlength=".$conf["maxInputLength"];}#else end#初始化僅儲存css類別名稱的變數$className=$conf["class"];#採用自定的css樣式$conf["class"] = " class=".$conf["class"];#如果 $conf["jsActivitor"] 與 $conf["jsAction"] 皆有設定if( isset($conf["jsActivitor"]) && isset($conf["jsAction"]) ){#則將設定值組合$conf["jsCustom"]=" ".$conf["jsActivitor"]."=".$conf["jsAction"]." ";}#if end#如果 $conf["jsCustom"] 沒有設定if(!isset($conf["jsCustom"])){#將其設爲空值$conf["jsCustom"]="";}#if end#如果有設置 $conf["comment"]if(isset($conf["comment"])){#函式說明:#<div>標籤的開始到結束的區段#回傳結果:#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.#$result["functin"],字串,當前函數的名稱.#$result["error"],陣列,錯訊訊息.#$result["content"],字串,<div>標籤的開始與設定語法.#必填參數:#$conf["contentArray"],字串陣列,要放入的內容陣列.$conf["css.divSection"]["contentArray"]=array($conf["comment"]);#可省略參數#$conf["class"],字串,div區段要套用的css樣式.$conf["css.divSection"]["class"]=$className;$spanSection=css::spanSection($conf["css.divSection"]);unset($conf["css.divSection"]);#如果 spanSection 建立失敗if($spanSection["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$spanSection;#回傳結果return $result;}#if end#新增label,且套用css樣式.$result["content"]=$result["content"]."<label for=\"".$conf["name"]."\" class=\"".$className."\" >".$conf["comment"]."</label>";}#if end#如果有設定 $conf["placeholder"]if(isset($conf["placeholder"])){#設定 "placeholder" 屬性$conf["placeholder"]=" placeholder=".$conf["placeholder"]." ";}#if end#反之else{#設為 ""$conf["placeholder"]="";}#else end#過濾 $conf["name"] 避免錯誤#函式說明:#處理字串避免網頁出錯#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["content"],爲處理好的字串.#$result["error"],錯誤訊息陣列.#必填參數:$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["name"];#爲要處理的字串#可省略的參數:$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);unset($conf["stringProcess::correctCharacter"]);#如果過濾字串失敗if($correctCharacter["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$correctCharacter;#回傳結果return $result;}#if end#置換過濾好了的$conf["name"]$conf["name"]=$correctCharacter["content"];#如果 $conf["required"] 為 "true"if($conf["required"]=="true"){#設置 "required" 屬性$conf["required"]=" required=true ";}#if end#反之else{#設置為空值$conf["required"]="";}#else end#如果有設置 $conf["id"]if(isset($conf["id"])){#產生id字串$conf["id"]="id=\"".$conf["id"]."\"";}#if end#反之else{#設為空字串$conf["id"]="";}#else end#如果有設置 $conf["dataFormId"]if(isset($conf["dataFormId"])){#設置 data-id 屬性$conf["dataFormId"]="data-form-id=\"".$conf["dataFormId"]."\"";}#if end#反之設置為空數值else{$conf["dataFormId"]="";}#else end#放置可以文字的區塊$result["content"]=$result["content"]."<textarea ".$conf["width"]." ".$conf["cols"]." ".$conf["rows"]." ".$conf["maxInputLength"]." name=".$conf["name"]." ".$conf["readOnly"]." ".$conf["class"]." ".$conf["jsCustom"]." ".$conf["placeholder"]." ".$conf["required"]." ".$conf["id"]." ".$conf["dataFormId"]." >".$conf["defaultText"]."</textarea>";#如果 $conf["formEnd"] 等於 "true"if($conf["formEnd"]=="true"){#函式說明:#表單結束#回傳結果:#$result,表單結束的語法#必填參數:#則設定其數值$conf["form"]["end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。$formEnd=form::end($conf["form"]["end"]);unset($conf["form"]["end"]);#串接表單結束的語法$result["content"]=$result["content"].$formEnd["content"];}#if end#如果其值爲 trueif($conf["tdEnd"]=="true"){#串接欄結束$result["content"]=$result["content"]."</td>";}#if end#如果其值爲 trueif($conf["trEnd"]=="true"){#串接列結束$result["content"]=$result["content"]."</tr>";}#if end#設置執行正常$result["status"]="true";#印出表格的設定以及表單的目的、呈現的方式、傳送的方式。return $result;}#function inputTextArea end/*#函式說明:#可以輸入密碼的表單#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["content"],按鈕語法.#必填參數:$conf["name"]="";#爲密碼輸入框的名稱,供接收端進行處理時的獨立名稱,也提供id.#可省略參數:#$conf["width"]="";#爲密碼輸入框的長度,預設無限制。#$conf["maxInputLength"]="";#爲密碼輸入的長度限制,預設無限制。#$conf["defaultValue"]="";#預設的密碼,不得為空#$conf["class"]="";#爲要套用的css樣式,若省略,則會套用預設的 __qbpwcf_inputPasswordCssStyle 樣式,其屬性爲 "width:100%","font-size:30px","margin-left:auto;","margin-right:auto;"#$conf["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。#$conf["jsAction"]="";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。#$conf["autoFocus"],字串,是否為將填寫的指標移到該表單,"true"代表要,預設為"false".#$conf["autoFocus"]="true";#$conf["autocomplete"],字串,是否依據使用者過往輸入的記錄來提示可能要的輸入內容,"on"為啟用,"off"為停用,預設為"on".#$conf["autocomplete"]="off";#$conf["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".#$conf["required"]="true";#$conf["comment"],字串,輸入方框上面要放哪些註解文字,亦即用label來呈現,同時指定"for"屬性的數值為當前"input"標籤的id,意即參數"name"的內容.#$conf["comment"]="";#$conf["placeholder"],字串,當沒有內容時要顯示的內容.#$conf["placeholder"]="";#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設為"false".#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是",也可以看成列裏面的元素開始,預設為"false".#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設為"false".#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設為"false".#$conf["formStart"]="true";#爲是否要以<form>開頭,"true"表示"是",也可以看成表單的開始,預設為"false".#$conf["formAction"]="";#表單遞交的目的地,若$conf["formStart"]為"true",則該參數不能省略.#$conf["formName"]="";#爲該表單的名稱#$conf["formMethod"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。#$conf["formTarget"]="";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["formEnd"]="true";#爲是否要以<form>結尾,"true"表示"是",也可以看成表單的結束,預設為"false".#$conf["dataFormId"],字串,提供用於識別哪一張表單的data屬性名稱.#$conf["dataFormId"]="";#參考資料:#無.#備註:#無.*/public static function inputPassword($conf){#初始化要回傳的內容$result=array();#設置當前執行的函數$result["function"]=__FUNCTION__;#初始化content樣式內容$result["content"]="";#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck.checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("name");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";#可省略參數:#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="true";#$conf["variableCheck.checkArguments"]["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或集合.$conf["variableCheck.checkArguments"]["skipableVariableCanNotBeEmpty"]=array("defaultValue");#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("autoFocus","autocomplete","required","width","maxInputLength","defaultValue","class","jsActivitor","jsAction","trStart","tdStart","tdEnd","trEnd","comment","placeholder","formStart","formAction","formName","formMethod","formTarget","formEnd","dataFormId");#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string");#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array("false","on","false",null,null,null,"__qbpwcf_inputPasswordCssStyle",null,null,"false","false","false","false",null,null,"false",null,null,"post","_self","false",null);$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);unset($conf["variableCheck.checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果其值爲 trueif($conf["trStart"]=="true"){#串接列開始$result["content"]=$result["content"]."<tr>";}#if end#如果其值爲 trueif($conf["tdStart"]=="true"){#串接欄開始$result["content"]=$result["content"]."<td>";}#if end#如果 $conf["formStart"] 有設置if(isset($conf["formStart"])){#如果 $conf["formStart"] 等於 "true"if($conf["formStart"]=="true"){#函式說明:#表單開始#回傳結果:#$result,表單開始的語法#必填參數:$conf["form"]["start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容#可省略參數:#如果 $conf["formName"] 有設置if(isset($conf["formName"])){#過濾 $conf["formName"] 避免錯誤#函式說明:#處理字串避免網頁出錯#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["content"],爲處理好的字串.#$result["error"],錯誤訊息陣列.#必填參數:$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["formName"];#爲要處理的字串#可省略的參數:$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);unset($conf["stringProcess::correctCharacter"]);#如果過濾 $conf["formName"] 失敗if($correctCharacter["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$correctCharacter;#回傳結果return $result;}#if end#則設定其數值$conf["form"]["start"]["name"]=$correctCharacter["content"];#爲該表單的名稱}#if end#如果 $conf["formMethod"] 有設置if(isset($conf["formMethod"])){#則設定其數值$conf["form"]["start"]["method"]=$conf["formMethod"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。}#if end#如果 $conf["formTarget"] 有設定if(isset($conf["formTarget"])){#則設定其數值$conf["form"]["start"]["target"]=$conf["formTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。}#if end#則設定其參數數值$conf["form"]["start"]["tableStart"]="false";#爲該表單是否要以<table>開始。"true"爲是;#則設定其數值#$conf["form"]["start"]["tableClass"]=$conf["tableClass"];#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。$formStart=form::start($conf["form"]["start"]);unset($conf["form"]["start"]);#如果表單開始失敗if($formStart["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$formStart;#回傳結果return $result;}#if end#串接表單開始的語法$result["content"]=$result["content"].$formStart["content"];}#if end}#if end#如果 $conf["comment"] 有設置if(isset($conf["comment"])){#新增註解,且套用css樣式.結尾換行.ok$result["content"]=$result["content"]."<label name=\"".$conf["name"]."\" class=\"".$conf["class"]."\">".$conf["comment"]."</label>";}#if end#如果$conf["maxInputLength"]沒設定if(!isset($conf["maxInputLength"])){#$conf["maxInputLength"]就爲空$conf["maxInputLength"]="";}#if end#如果$conf["maxInputLength"]有設定else{#就按照設定值$conf["maxInputLength"]=" maxlength=".$conf["maxInputLength"];}#else end#如果$conf["width"]沒設定if(!isset($conf["width"])){#則$conf["width"]爲空值$conf["width"]="";}#if end#如果$conf["width"]有設定else{#則套用寬度的css設定值$conf["width"]=" style=\"width:100%;\" ";}#else end#如果$conf["defaultValue"]沒設定if(!isset($conf["defaultValue"])){#則$conf["defaultValue"]爲空$conf["defaultValue"]="";}#else end#反之則設定該屬性else{$conf["defaultValue"]=" value = ".$conf["defaultValue"];}#else end#如果$conf["class"]沒設定if(!isset($conf["class"])){#則套用預設的css樣式$conf["class"]=" class = __inputPasswordCssStyle ";}#if end#如果$conf["class"]有設定else{#則套用樣式$conf["class"]=" class = \"".$conf["class"]."\"";}#else end#如果 $conf["jsActivitor"] 與 $conf["jsAction"] 皆有設定if( isset($conf["jsActivitor"]) && isset($conf["jsAction"]) ){#則將設定值組合$conf["jsCustom"]=" ".$conf["jsActivitor"]."=".$conf["jsAction"]." ";}#if end#如果 $conf["jsCustom"] 沒有設定if(!isset($conf["jsCustom"])){#將其設爲空值$conf["jsCustom"]="";}#if end#如果 $conf["placeholder"] 有設定if(isset($conf["placeholder"])){#設定 "placeholder" 屬性$conf["placeholder"]=" placeholder=".$conf["placeholder"]." ";}#if end#反之設為 ""else{$conf["placeholder"]="";}#else end#如果 $conf["required"] 為"true"if($conf["required"]=="true"){#設置 "required" 屬性$conf["required"]="required=true";}#if end#反之else{#設為空值$conf["required"]="";}#else end#過濾 $conf["name"] 避免錯誤#函式說明:#處理字串避免網頁出錯#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["content"],爲處理好的字串.#$result["error"],錯誤訊息陣列.#必填參數:$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["name"];#爲要處理的字串#可省略的參數:$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);unset($conf["stringProcess::correctCharacter"]);#如果過濾字串失敗if($correctCharacter["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$correctCharacter;#回傳結果return $result;}#if end#置換過濾好了的$conf["name"]$conf["name"]=$correctCharacter["content"];#如果 $conf["autoFocus"] 為 "true"if($conf["autoFocus"]=="true"){#設置自動選取$conf["autoFocus"]=" autofocus='ture' ";}#if end#反之else{#設為 ""$conf["autoFocus"]="";}#else end#如果有設置 $conf["dataFormId"]if(isset($conf["dataFormId"])){#設置 data-id 屬性$conf["dataFormId"]="data-form-id=\"".$conf["dataFormId"]."\"";}#if end#反之設置為空數值else{$conf["dataFormId"]="";}#else end#放置可以輸入密碼的表單$result["content"]=$result["content"]."<input type = password ".$conf["autoFocus"]." ".$conf["width"]." ".$conf["maxInputLength"]." name = ".$conf["name"]." id = ".$conf["name"]." ".$conf["defaultValue"]." ".$conf["class"]." ".$conf["jsCustom"]." ".$conf["placeholder"]." ".$conf["required"]." autocomplete=".$conf["autocomplete"]." ".$conf["dataFormId"].">";#如果 $conf["formEnd"] 等於 "true"if($conf["formEnd"]=="true"){#函式說明:#表單結束#回傳結果:#$result,表單結束的語法#必填參數:#則設定其數值$conf["form"]["end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。$formEnd=form::end($conf["form"]["end"]);unset($conf["form"]["end"]);#串接表單結束的語法$result["content"]=$result["content"].$formEnd["content"];}#if end#如果其值爲 trueif($conf["tdEnd"]=="true"){#串接欄結束$result["content"]=$result["content"]."</td>";}#if end#如果其值爲 trueif($conf["trEnd"]=="true"){#串接列結束$result["content"]=$result["content"]."</tr>";}#if end#設置執行成功$result["status"]="true";#回傳語法return $result;}#function inputPassword end/*#函式說明:#建立下拉式表單#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表失敗.#$result["error"],錯誤訊息陣列.#$result["content"],語法內容.#$result["function"],設置當前執行的函式#必填參數:#$conf["name"],字串,爲該下拉式選單的名稱$conf["name"]="";#$conf["sendValue"],陣列值,爲每個選項的實際傳送的數值,e.g. $sendValue = array("a","b","c","d","e");$conf["sendValue"]=array();#可省略參數:#$conf["formName"]="";#該表單的名稱#$conf["outputValue"]=array();#爲陣列值,爲每個選項的實際顯示的數值, e.g. $outputValue = array("p","o","i","t","e");,如果沒有設定,則其值同$conf["sendValue"]。#$conf["viewCount"]="";#為一次要顯示幾個選項,預設爲顯示一個。#$conf["defaultValue"]="";#為預設選取那個選項,須爲$conf["sendValue"]其中的一個值。#$conf["class"]="";#爲要套用的class樣式,預設為 "__qbpwcf_inputSelect".#$conf["readOnly"],字串,內容是否唯獨,預設為"false",不唯獨,"true"為唯獨.#$conf["readOnly"]="true";#$conf["comment"],字串,輸入方框上面要放哪些註解文字,亦即用label來呈現,同時指定"for"屬性的數值為當前"input"標籤的id,意即參數"name"的內容.#$conf["comment"]="";#$conf["formAction"]="";#爲該下拉式表單要傳送到的位置#$conf["actionTarget"]="_self";#要如何接收網頁的迴應,預設爲_self#$conf["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsAction"]參數。#$conf["jsAction"]="";#爲該js是要做什麼,可以是"document.forms.formName.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。#$conf["independentForm"]="false";#是否該下拉式選單就是一個完整的表單,"true"代表是,"false"代表不是,預設為"true"#$conf["hiddenVar"],字串陣列,隱藏的變數名稱陣列.#$conf["hiddenVar"]=array("");#$conf["hiddanVarValue"],字串陣列,隱藏變數的數值內容.#$conf["hiddenVarValue"]=array("");#$conf["fixedPosition"],字串,該下拉式選單是否要隨着滾軸滾動時固定在畫面上特定的位置,於設為"false",代表不固定,"true"代表要固定.#$conf["fixedPosition"]="true";#$conf["fixedPosition.fixedTop"],字串,該選單距離畫面頂部的固定距離,預設為0px.#$conf["fixedPosition.fixedTop"]="0px";#$conf["fixedPosition.fixedLeft"],字串,該選單距離畫面左方的固定距離.預設為0px.#$conf["fixedPosition.fixedLeft"]="0px";#$conf["fixedPosition.emptySpaceSize"],字串,表單位置要放置多寬的空白,於設為40px.#$conf["fixedPosition.emptySpaceSize"]="40px";#$conf["tableStartClass"]="__withoutBorder";#表格要採用的css樣式,預設為__withoutBorder,__withoutBorder為沒有框線的樣式,__withBorder為有樣式的表格.#$conf["tableStart"]="true";#爲是否要以<table>結尾,"true"表示"是"。也可以看作表格結束。#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。#$conf["tableEnd"]="true";#爲是否要以</table>結尾,"true"表示"是"。也可以看作表格結束。#$conf["dataFormId"],字串,提供用於識別哪一張表單的data屬性名稱.#$conf["dataFormId"]="";#參考資料:#無.#備註:#$_SERVER["PHP_SELF"]為php檔案自己#http://stackoverflow.com/questions/833032/submit-is-not-a-function-in-javascript => form的id重複會導致"document.testForm.submit()"的javaScript語法出錯。#http://stackoverflow.com/questions/14622124/all-of-commands-for-submit-in-onchange-select-not-work => documents.forms.formName.submit() 才會將正確的表單送出。#http://stackoverflow.com/questions/368813/html-form-readonly-select-tag-input => 禁止改變選項,且也不會傳送該名稱表單#tableStart & tableEnd 要補上*/public static function inputSelect(&$conf){#預設要回傳的數值$result=array();#初始化要回傳的語法$result["content"]="";#設置當前執行的函式$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["form.checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["form.checkArguments"]["varInput"]=&$conf;#$conf["form.checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["form.checkArguments"]["mustBeFilledVariableName"][]="name";$conf["form.checkArguments"]["mustBeFilledVariableName"][]="sendValue";#$conf["form.checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["form.checkArguments"]["mustBeFilledVariableType"][]="string";$conf["form.checkArguments"]["mustBeFilledVariableType"][]="array";#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["form.checkArguments"]["referenceVarKey"]="form.checkArguments";#可省略參數:#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。#$conf["canBeEmptyString"]="false";#$conf["form.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["form.checkArguments"]["skipableVariableName"][]="tableStart";$conf["form.checkArguments"]["skipableVariableName"][]="formAction";$conf["form.checkArguments"]["skipableVariableName"][]="formName";$conf["form.checkArguments"]["skipableVariableName"][]="hiddenVar";$conf["form.checkArguments"]["skipableVariableName"][]="hiddenVarValue";$conf["form.checkArguments"]["skipableVariableName"][]="fixedPosition";$conf["form.checkArguments"]["skipableVariableName"][]="fixedPosition.top";$conf["form.checkArguments"]["skipableVariableName"][]="fixedPosition.left";$conf["form.checkArguments"]["skipableVariableName"][]="trStart";$conf["form.checkArguments"]["skipableVariableName"][]="tdStart";$conf["form.checkArguments"]["skipableVariableName"][]="defaultValue";$conf["form.checkArguments"]["skipableVariableName"][]="viewCount";$conf["form.checkArguments"]["skipableVariableName"][]="outputValue";$conf["form.checkArguments"]["skipableVariableName"][]="jsActivitor";$conf["form.checkArguments"]["skipableVariableName"][]="jsAction";$conf["form.checkArguments"]["skipableVariableName"][]="jsCustom";$conf["form.checkArguments"]["skipableVariableName"][]="readOnly";$conf["form.checkArguments"]["skipableVariableName"][]="comment";$conf["form.checkArguments"]["skipableVariableName"][]="class";$conf["form.checkArguments"]["skipableVariableName"][]="tdEnd";$conf["form.checkArguments"]["skipableVariableName"][]="trtdEnd";$conf["form.checkArguments"]["skipableVariableName"][]="formAction";$conf["form.checkArguments"]["skipableVariableName"][]="independentForm";$conf["form.checkArguments"]["skipableVariableName"][]="tableEnd";$conf["form.checkArguments"]["skipableVariableName"][]="actionTarget";$conf["form.checkArguments"]["skipableVariableName"][]="dataFormId";#$conf["form.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="array";$conf["form.checkArguments"]["skipableVariableType"][]="array";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="array";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";#$conf["form.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["form.checkArguments"]["skipableVarDefaultValue"][]=" ";$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["form.checkArguments"]["skipableVarDefaultValue"][]=" ";$conf["form.checkArguments"]["skipableVarDefaultValue"][]="1";$conf["form.checkArguments"]["skipableVarDefaultValue"][]="\$conf[\"sendValue\"]";$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["form.checkArguments"]["skipableVarDefaultValue"][]=" ";$conf["form.checkArguments"]["skipableVarDefaultValue"][]=" ";$conf["form.checkArguments"]["skipableVarDefaultValue"][]=" ";$conf["form.checkArguments"]["skipableVarDefaultValue"][]="__qbpwcf_inputSelect";$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["form.checkArguments"]["skipableVarDefaultValue"][]="true";$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["form.checkArguments"]["skipableVarDefaultValue"][]="_self";$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.$conf["form.checkArguments"]["canBeEmptyString"]="false";$checkResult=variableCheck::checkArguments($conf["form.checkArguments"]);unset($conf["form.checkArguments"]);#如果$checkResult["status"] 等於 "false"#意即如果檢查出錯if($checkResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果$checkResult["passed"] 等於 "false"#意即如果檢查出錯if($checkResult["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果 $conf["tableStart"] 有設置if(isset($conf["tableStart"])){#如果 $conf["tableStart"] 等於 "true"if($conf["tableStart"]=="true"){#函式說明:#表格開始,可以設定表格的厚度和位置#回傳結果:#$result,表格開始的語法#必填寫的參數:$conf["table.start"]["class"]=$conf["tableStartClass"];#爲表格的css樣式,若為"",則代表不套用css樣式;若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。$tableStart=table::start($conf["table.start"]);unset($conf["table.start"]);#如果表格開始失敗if($tableStart["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$tableStart;#回傳結果return $result;}#if end#串接表格開始的字串$result["content"]=$result["content"].$tableStart["content"];}#if end}#if end#如果 $conf["formAction"] 有設定if(isset($conf["formAction"])){#如果 $conf["actionTarget"] 有設定if(isset($conf["actionTarget"])){#指派設定值$conf["form.start"]["target"]=$conf["actionTarget"];}#if end#如果 $conf["formName"] 沒有設置if(!isset($conf["formName"])){#預設爲空數值$conf["formName"]=" ";}#if end#反之 $conf["formName"] 有設置else{#過濾 $conf["formName"] 避免錯誤#函式說明:#處理字串避免網頁出錯#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["content"],爲處理好的字串.#$result["error"],錯誤訊息陣列.#必填參數:$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["formName"];#爲要處理的字串#可省略的參數:$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);unset($conf["stringProcess::correctCharacter"]);#如果過濾 $conf["formName"] 失敗if($correctCharacter["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$correctCharacter;#回傳結果return $result;}#if end#則設定其數值$conf["formName"]=$correctCharacter["content"];#爲該表單的名稱}#if end#函式說明:#表單開始#回傳結果:#$result,表單開始的語法#必填參數:$conf["form.start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容#可省略參數:$conf["form.start"]["name"]=$conf["formName"];#爲該表單的名稱#$conf["method"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。#$conf["target"]="";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是;#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100%$formStart=form::start($conf["form.start"]);unset($conf["form.start"]);#如果表單開始失敗if($formStart["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$formStart;#回傳結果return $result;}#if end#串接表單開始$result["content"]=$result["content"].$formStart["content"];}#if end#如果 $conf["hiddenVar"]與$conf["hiddenVarValue"]皆有設置if(isset($conf["hiddenVar"]) && isset($conf["hiddenVarValue"])){#且陣列元素數目相同if(count($conf["hiddenVar"])==count($conf["hiddenVarValue"])){#建立隱藏的表單#傳送多個隱藏表單的資訊#回傳的數值:#$result,語法#$result["sendedArrayName"],#$result["sendedArrayValue"],#$result["sendedArrayCount"],#必填參數:$conf["form"]["inputMutiHidden"]["nameArray"]=$conf["hiddenVar"];#欲傳送的隱藏陣列變數名稱$conf["form"]["inputMutiHidden"]["valueArray"]=$conf["hiddenVarValue"];#欲傳送的隱藏陣列變數數值$hiddenVar=form::inputMultiHidden($conf["form"]["inputMutiHidden"]);unset($conf["form"]);#如果隱藏的表單變數設置失敗if($hiddenVar["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$hiddenVar;#回傳結果return $result;}#if end#接上語法$result["content"]=$result["content"].$hiddenVar["content"];}#if end}#if end#如果有設定 $conf["fixedPosition"]if(isset($conf["fixedPosition"])){#如果 $conf["fixedPosition"] 等於 "true"if($conf["fixedPosition"]=="true"){#如果 $conf["fixedPosition.fixedTop"] 沒有設置if(!isset($conf["fixedPosition.fixedTop"])){#於設為0px$conf["fixedPosition.fixedTop"]="0px";}#if end#如果 $conf["fixedPosition.fixedLeft"] 沒有設置if(!isset($conf["fixedPosition.fixedLeft"])){#預設為0px$conf["fixedPosition.fixedLeft"]="0px";}#if end#如果 $conf["fixedPosition.emptySpaceSize"] 沒有設置if(!isset($conf["fixedPosition.emptySpaceSize"])){#預設為40px$conf["fixedPosition.emptySpaceSize"]="40px";}#if end#建立按鈕的預設css樣式#函式說明:#創建 css 樣式#必填參數:$conf_createCssStyle["cssStyleName"]="__simpleButtonLinkDefaultButtonFixedPositionCssStyle";#為該 css 樣式的名稱,不能以數字開頭。$conf_createCssStyle["attributes"]=array("width","height","font-size","text-align","position","top","left");#為屬性名稱,須為陣列值$conf_createCssStyle["content"]=array("100%",(50*$conf["viewCount"])."px","30","center","fixed",$conf["fixedPosition.fixedTop"],$conf["fixedPosition.fixedLeft"]);#為屬性值,須為陣列值$css=css::createCssStyle($conf_createCssStyle);unset($conf_createCssStyle);#如果建立css樣式失敗if($css["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$css;#回傳結果return $result;}#if end#串接css樣式$result["content"]=$result["content"].$css["content"];#函式說明:#創建 css 樣式#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["css"],css設定內容#$result["function"],當前執行的函數#$result["error"],函式錯誤訊息,若爲""則表示沒有錯誤#必填參數:$conf["css.createCssStyle"]["cssStyleName"]="emptyStyle";#為該 css 樣式的名稱,不能以數字開頭。$conf["css.createCssStyle"]["attributes"]=array("font-size");#為屬性名稱,須為陣列值$conf["css.createCssStyle"]["content"]=array("40px");#為屬性值,須為陣列值$css=css::createCssStyle($conf["css.createCssStyle"]);unset($conf["css.createCssStyle"]);#如果建立css樣式失敗if($css["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$css;#回傳結果return $result;}#if end#串接css樣式$result["content"]=$result["content"].$css["content"];}#if end}#if end#如果 $conf["trStart"] 存在if(isset($conf["trStart"])){#如果其值爲 trueif($conf["trStart"]=="true"){#串接列開始$result["content"]=$result["content"]."<tr>";}#if end}#if end#如果 $conf["tdStart"] 存在if(isset($conf["tdStart"])){#如果其值爲 trueif($conf["tdStart"]=="true"){#串接欄開始$result["content"]=$result["content"]."<td>";}#if end}#if end#如果 $conf["viewCount"] 有設定if(isset($conf["viewCount"])){#就按照設定值$conf["viewCount"]=" size = ".$conf["viewCount"]." ";}#if end#反之else{#設為""$conf["viewCount"]="";}#else end#如果有設定 $conf["fixedPosition"]if(isset($conf["fixedPosition"])){#如果 $conf["fixedPosition"] 等於 "true"if($conf["fixedPosition"]=="true"){#用固定位置的樣式$conf["class"]="__simpleButtonLinkDefaultButtonFixedPositionCssStyle";}#if end}#if end#設定要套用的css類別樣式$conf["class"] = " class='".$conf["class"]."' ";#如果 $conf["jsActivitor"] 與 $conf["jsAction"] 皆有設定if( isset($conf["jsActivitor"]) && isset($conf["jsAction"]) ){#處理jsAction裏面不能有空格#函式說明:#處理字串避免網頁出錯#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["content"],爲處理好的字串.#$result["error"],錯誤訊息陣列.#$result["argu"],使用的參數.#必填參數:$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["jsAction"];#爲要處理的字串#可省略的參數:$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array(" ");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換 ("<",">","=","//","'","$","%","&","|","/*","*","#","\"").#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);unset($conf["stringProcess::correctCharacter"]);#如果處理失敗if($correctCharacter["status"]==="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$correctCharacter;#回傳結果return $result;}#if end#get new jsAction$conf["jsAction"]=$correctCharacter["content"];#爲該表單的名稱#則將設定值組合$conf["jsCustom"]=" ".$conf["jsActivitor"]."=".$conf["jsAction"]." ";}#if end#如果 $conf["readOnly"] 為 "true"if($conf["readOnly"]=="true"){#設置為 " readonly "$conf["readOnly"]=" disabled ";}#if end#反之else{#設置為 ""$conf["readOnly"]="";}#else end#過濾 $conf["name"] 避免錯誤#函式說明:#處理字串避免網頁出錯#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["content"],爲處理好的字串.#$result["error"],錯誤訊息陣列.#必填參數:$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["name"];#爲要處理的字串#可省略的參數:$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);unset($conf["stringProcess::correctCharacter"]);#如果過濾字串失敗if($correctCharacter["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$correctCharacter;#回傳結果return $result;}#if end#置換過濾好了的$conf["name"]$conf["name"]=$correctCharacter["content"];#建立註解文字用的預設css樣式#函式說明:#創建 css 樣式#必填參數:$conf_createCssStyle["cssStyleName"]="__commentDefaultCssStyle";#為該 css 樣式的名稱,不能以數字開頭。$conf_createCssStyle["attributes"]=array("font-size","text-align");#為屬性名稱,須為陣列值$conf_createCssStyle["content"]=array("30","center");#為屬性值,須為陣列值$css=css::createCssStyle($conf_createCssStyle);unset($conf_createCssStyle);#如果建立css樣式失敗if($css["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$css;#回傳結果return $result;}#if end#串接css樣式$result["content"]=$result["content"].$css["content"];#如果有設置 $conf["dataFormId"]if(isset($conf["dataFormId"])){#設置 data-id 屬性$conf["dataFormId"]="data-form-id=\"".$conf["dataFormId"]."\"";}#if end#反之設置為空數值else{$conf["dataFormId"]="";}#else end#下拉式表單的名稱$result["content"]=$result["content"]." <label class=\"__commentDefaultCssStyle\" for=\"".$conf["name"]."\">".$conf["comment"]."</label><select id=\"".$conf["name"]."\" name = \"".$conf["name"]."\" ".$conf["viewCount"]." ".$conf["class"]." ".$conf["jsCustom"]." ".$conf["readOnly"]." ".$conf["dataFormId"].">";#將有幾個選項的數目放進 $count$count=count($conf["sendValue"]);#n個選項跑n次for($i=0;$i<$count;$i++){#如果選項的內容等於預設的數值,if($conf["defaultValue"]==$conf["sendValue"][$i]){#增加可用的選項,且設為預設選項。$result["content"]=$result["content"]."<option value = \"".$conf["sendValue"][$i]."\" selected='selected'>".$conf["outputValue"][$i]."</option>";}#if end#反之則照常處理else{#謹增加可用的選項$result["content"]=$result["content"]."<option value = \"".$conf["sendValue"][$i]."\">".$conf["outputValue"][$i]."</option>";}#else end}#回圈結束#選項結束$result["content"]=$result["content"]."</select>";#如果有設定 $conf["fixedPosition"]if(isset($conf["fixedPosition"])){#如果 $conf["fixedPosition"] 等於 "true"if($conf["fixedPosition"]=="true"){#空白區塊#函式說明:#<span>區塊:#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.#$result["functin"],字串,當前函數的名稱.#$result["error"],陣列,錯訊訊息.#$result["content"],字串,<div>標籤的開始與設定語法.#必填參數:#$conf["css.spanSection"]["contentArray"],字串陣列,要放入的內容陣列.$conf["css.spanSection"]["contentArray"]=array(" ");#可省略參數#$conf["css.spanSection"]["class"],字串,div區段要套用的css樣式.$conf["css.spanSection"]["class"]="emptyStyle";$spanSection=css::spanSection($conf["css.spanSection"]);unset($conf["css.spanSection"]);#如果 spanSection 建立失敗if($spanSection["status"]==="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$spanSection;#回傳結果return $result;}#if end#串接 spanSection$result["content"]=$result["content"].$spanSection["content"];}#if end}#if end#如果 $conf["tdEnd"] 存在if(isset($conf["tdEnd"])){#如果其值爲 trueif($conf["tdEnd"]==="true"){#欄結束$result["content"]=$result["content"]."</td>";}#if end}#if end#如果 $conf["trtdEnd"] 存在if(isset($conf["trEnd"])){#如果其值爲 trueif($conf["trEnd"]==="true"){#列結束$result["content"]=$result["content"]."</tr>";}#if end}#if end#如果 $conf["formAction"] 有設定if(isset($conf["formAction"])){#如果 $conf["independentForm"] 等於 "true"if($conf["independentForm"]=="true"){#函式說明:#表單結束#回傳結果:#$result,表單結束的語法#必填參數:$conf["form.end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。$formEnd=form::end($conf["form.end"]);unset($conf["form.end"]);#如果表單結束失敗if($formEnd["status"]==="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$formEnd;#回傳結果return $result;}#if end#串接表單結束$result["content"]=$result["content"].$formEnd["content"];}#if end}#if end#如果 $conf["tableEnd"] 有設置if(isset($conf["tableEnd"])){#如果 $conf["tableEnd"] 等於 "true"if($conf["tableEnd"]=="true"){#函式說明:#表格結束#回傳結果:#表格結束的語法$result["content"]=$result["content"].table::end();}#if end}#if end#設置執行正常$result["status"]="true";#印出表格的設定以及表單的目的、呈現的方式、傳送的方式。return $result;}#function inputSelect end/*#函式說明:#建立下拉式表單,選項會用全螢幕的div區塊呈現.#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表失敗.#$result["error"],錯誤訊息陣列.#$result["content"],語法內容.#$result["function"],設置當前執行的函式#必填參數:#$conf["name"],字串,爲該下拉式選單的名稱$conf["name"]="";#$conf["sendValue"],陣列值,爲每個選項的實際傳送的數值,e.g. $sendValue = array("a","b","c","d","e");$conf["sendValue"]=array();#可省略參數:#$conf["formName"]="";#該表單的名稱,不能跟 "name" 一樣,會造成關閉選單後,選單也跟着消失的問題.#$conf["outputValue"]=array();#爲陣列值,爲每個選項的實際顯示的數值, e.g. $outputValue = array("p","o","i","t","e");,如果沒有設定,則其值同$conf["sendValue"]。#$conf["viewCount"]="";#為一次要顯示幾個選項,預設爲顯示一個。#$conf["defaultValue"]="";#為預設選取那個選項,須爲$conf["sendValue"]其中的一個值。#$conf["class"]="";#爲要套用的class樣式,預設為 "__qbpwcf_inputSelect".#$conf["readOnly"],字串,內容是否唯獨,預設為"false",不唯獨,"true"為唯獨.#$conf["readOnly"]="true";#$conf["comment"],字串,輸入方框上面要放哪些註解文字,亦即用label來呈現,同時指定"for"屬性的數值為當前"input"標籤的id,意即參數"name"的內容.#$conf["comment"]="";#$conf["formAction"]="";#爲該下拉式表單要傳送到的位置#$conf["actionTarget"]="_self";#要如何接收網頁的迴應,預設爲_self#$conf["independentForm"]="false";#是否該下拉式選單就是一個完整的表單,"true"代表是,"false"代表不是,預設為"true"#$conf["hiddenVar"],字串陣列,隱藏的變數名稱陣列.#$conf["hiddenVar"]=array("");#$conf["hiddanVarValue"],字串陣列,隱藏變數的數值內容.#$conf["hiddenVarValue"]=array("");#$conf["fixedPosition"],字串,該下拉式選單是否要隨着滾軸滾動時固定在畫面上特定的位置,於設為"false",代表不固定,"true"代表要固定.#$conf["fixedPosition"]="true";#$conf["fixedPosition.fixedTop"],字串,該選單距離畫面頂部的固定距離,預設為0px.#$conf["fixedPosition.fixedTop"]="0px";#$conf["fixedPosition.fixedLeft"],字串,該選單距離畫面左方的固定距離.預設為0px.#$conf["fixedPosition.fixedLeft"]="0px";#$conf["fixedPosition.emptySpaceSize"],字串,表單位置要放置多寬的空白,於設為40px.#$conf["fixedPosition.emptySpaceSize"]="40px";#$conf["tableStartClass"]="__withoutBorder";#表格要採用的css樣式,預設為__withoutBorder,__withoutBorder為沒有框線的樣式,__withBorder為有樣式的表格.#$conf["tableStart"]="true";#爲是否要以<table>結尾,"true"表示"是"。也可以看作表格結束。#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。#$conf["tableEnd"]="true";#爲是否要以</table>結尾,"true"表示"是"。也可以看作表格結束。#$conf["closeIcon"],字串,關閉滾軸選單的按鈕圖示,預設為"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpvc2I9Imh0dHA6Ly93d3cub3BlbnN3YXRjaGJvb2sub3JnL3VyaS8yMDA5L29zYiIKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgd2lkdGg9IjEwNS43ODE3Mm1tIgogICBoZWlnaHQ9IjEwNS4zNDM0NG1tIgogICB2aWV3Qm94PSIwIDAgMTA1Ljc4MTcyIDEwNS4zNDM0NCIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnOCIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45MitkZXZlbCB1bmtub3duIgogICBzb2RpcG9kaTpkb2NuYW1lPSJjbG9zZUljb24uc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzMiI+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzMTUiCiAgICAgICBvc2I6cGFpbnQ9InNvbGlkIj4KICAgICAgPHN0b3AKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzAwMDAwMDtzdG9wLW9wYWNpdHk6MTsiCiAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgaWQ9InN0b3A0MzEzIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0MzkxIgogICAgICAgeD0iLTAuMDY4OTc3MTAzIgogICAgICAgd2lkdGg9IjEuMTM3OTU0MiIKICAgICAgIHk9Ii0wLjA3NTI5OTk5MyIKICAgICAgIGhlaWdodD0iMS4xNTA2Ij4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIxLjAwNjI1NDMiCiAgICAgICAgIGlkPSJmZUdhdXNzaWFuQmx1cjQzOTMiIC8+CiAgICA8L2ZpbHRlcj4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0NDM4IgogICAgICAgeD0iLTAuMDIyNjIyOTA0IgogICAgICAgd2lkdGg9IjEuMDQ1MjQ1OCIKICAgICAgIHk9Ii0wLjAyNTU1NTYxNCIKICAgICAgIGhlaWdodD0iMS4wNTExMTEyIj4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIwLjIyMTcwNjAxIgogICAgICAgICBpZD0iZmVHYXVzc2lhbkJsdXI0NDQwIiAvPgogICAgPC9maWx0ZXI+CiAgICA8ZmlsdGVyCiAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICBzdHlsZT0iY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOnNSR0IiCiAgICAgICBpZD0iZmlsdGVyNDQ0NiIKICAgICAgIHg9Ii0wLjAyMzIzMjg0NyIKICAgICAgIHdpZHRoPSIxLjA0NjQ2NTgiCiAgICAgICB5PSItMC4wMjQ4MTk1NDUiCiAgICAgICBoZWlnaHQ9IjEuMDQ5NjM5MSI+CiAgICAgIDxmZUdhdXNzaWFuQmx1cgogICAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICAgIHN0ZERldmlhdGlvbj0iMC4yMjIwOTQyOCIKICAgICAgICAgaWQ9ImZlR2F1c3NpYW5CbHVyNDQ0OCIgLz4KICAgIDwvZmlsdGVyPgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMS40IgogICAgIGlua3NjYXBlOmN4PSIxMzAuNTY4NjgiCiAgICAgaW5rc2NhcGU6Y3k9IjIwMS4zNDg0NSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0iZzQ0ODgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtcm90YXRpb249IjAiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTYwMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI4MzYiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiIC8+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNSI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MC4wNTQwMzQsLTg5LjA0MzUyMikiPgogICAgPGcKICAgICAgIGlkPSJnNDQ4OCIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDIuNjU1MDQ0MywwLDAsMi44NTQ2OTA3LC0xMTAuOTk1MTgsLTMyNi45MjY1MikiPgogICAgICA8ZWxsaXBzZQogICAgICAgICByeT0iMTYuMDM1OTI3IgogICAgICAgICByeD0iMTcuNTA1ODg0IgogICAgICAgICBjeT0iMTY0LjE2NTUxIgogICAgICAgICBjeD0iODAuNTc4NzIiCiAgICAgICAgIGlkPSJwYXRoMzQ3NCIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MC4zO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC4yNjQ5OTk5OTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxO2ZpbHRlcjp1cmwoI2ZpbHRlcjQzOTEpO2ltYWdlLXJlbmRlcmluZzphdXRvIiAvPgogICAgICA8cmVjdAogICAgICAgICB0cmFuc2Zvcm09InJvdGF0ZSgtNDIuODA4OTU1KSIKICAgICAgICAgcnk9IjAiCiAgICAgICAgIHk9IjE3NC41NTY0OSIKICAgICAgICAgeD0iLTY3LjM5ODc1OCIKICAgICAgICAgaGVpZ2h0PSIyLjE1MjIwNjQiCiAgICAgICAgIHdpZHRoPSIyOS4yNzk2NDgiCiAgICAgICAgIGlkPSJyZWN0NDQxMyIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MTtmaWxsOiNmZmZmMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjA7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MTtmaWx0ZXI6dXJsKCNmaWx0ZXI0NDQ2KSIgLz4KICAgICAgPHJlY3QKICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoLTEzOS4wMzQ0MikiCiAgICAgICAgIHJ5PSIwIgogICAgICAgICB5PSItNzMuMDUwOTQ5IgogICAgICAgICB4PSItMTgyLjk2MjUyIgogICAgICAgICBoZWlnaHQ9IjIuMTUyMjA2NCIKICAgICAgICAgd2lkdGg9IjI5LjI3OTY0OCIKICAgICAgICAgaWQ9InJlY3Q0NDEzLTMiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDojZmZmZjAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjE7ZmlsdGVyOnVybCgjZmlsdGVyNDQzOCkiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K".#$conf["closeIcon"]="";#$conf["valNotSend"],字串,如果選擇的選項數值為何,就不傳送表單.#$conf["valNotSend"]="";#$conf["dataFormId"],字串,提供用於識別哪一張表單的data屬性名稱.#$conf["dataFormId"]="";#參考資料:#http://stackoverflow.com/questions/833032/submit-is-not-a-function-in-javascript => form的id重複會導致"document.testForm.submit()"的javaScript語法出錯。#http://stackoverflow.com/questions/14622124/all-of-commands-for-submit-in-onchange-select-not-work => documents.forms.formName.submit() 才會將正確的表單送出。#http://stackoverflow.com/questions/368813/html-form-readonly-select-tag-input => 禁止改變選項,且也不會傳送該名稱表單#備註:#$_SERVER["PHP_SELF"]為php檔案自己#在手機網頁瀏覽器不支援.#tableStart & tableEnd 要補上*/public static function scrollingList(&$conf){#初始化要回傳的結果$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果沒有參數if(func_num_args()==0){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]="函數".$result["function"]."需要參數";#回傳結果return $result;}#if end#取得參數$result["argu"]=$conf;#如果 $conf 不為陣列if(gettype($conf)!=="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf===null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#如果有設置close iconif(isset($conf["closeIcon"])){#另存路徑$closeIcon=$conf["closeIcon"];#卸除不被 form::inputSelect 接受的參數unset($conf["closeIcon"]);}#if end#反之else{#用預設的 close icon$closeIcon="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpvc2I9Imh0dHA6Ly93d3cub3BlbnN3YXRjaGJvb2sub3JnL3VyaS8yMDA5L29zYiIKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgd2lkdGg9IjEwNS43ODE3Mm1tIgogICBoZWlnaHQ9IjEwNS4zNDM0NG1tIgogICB2aWV3Qm94PSIwIDAgMTA1Ljc4MTcyIDEwNS4zNDM0NCIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnOCIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45MitkZXZlbCB1bmtub3duIgogICBzb2RpcG9kaTpkb2NuYW1lPSJjbG9zZUljb24uc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzMiI+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzMTUiCiAgICAgICBvc2I6cGFpbnQ9InNvbGlkIj4KICAgICAgPHN0b3AKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzAwMDAwMDtzdG9wLW9wYWNpdHk6MTsiCiAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgaWQ9InN0b3A0MzEzIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0MzkxIgogICAgICAgeD0iLTAuMDY4OTc3MTAzIgogICAgICAgd2lkdGg9IjEuMTM3OTU0MiIKICAgICAgIHk9Ii0wLjA3NTI5OTk5MyIKICAgICAgIGhlaWdodD0iMS4xNTA2Ij4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIxLjAwNjI1NDMiCiAgICAgICAgIGlkPSJmZUdhdXNzaWFuQmx1cjQzOTMiIC8+CiAgICA8L2ZpbHRlcj4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0NDM4IgogICAgICAgeD0iLTAuMDIyNjIyOTA0IgogICAgICAgd2lkdGg9IjEuMDQ1MjQ1OCIKICAgICAgIHk9Ii0wLjAyNTU1NTYxNCIKICAgICAgIGhlaWdodD0iMS4wNTExMTEyIj4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIwLjIyMTcwNjAxIgogICAgICAgICBpZD0iZmVHYXVzc2lhbkJsdXI0NDQwIiAvPgogICAgPC9maWx0ZXI+CiAgICA8ZmlsdGVyCiAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICBzdHlsZT0iY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOnNSR0IiCiAgICAgICBpZD0iZmlsdGVyNDQ0NiIKICAgICAgIHg9Ii0wLjAyMzIzMjg0NyIKICAgICAgIHdpZHRoPSIxLjA0NjQ2NTgiCiAgICAgICB5PSItMC4wMjQ4MTk1NDUiCiAgICAgICBoZWlnaHQ9IjEuMDQ5NjM5MSI+CiAgICAgIDxmZUdhdXNzaWFuQmx1cgogICAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICAgIHN0ZERldmlhdGlvbj0iMC4yMjIwOTQyOCIKICAgICAgICAgaWQ9ImZlR2F1c3NpYW5CbHVyNDQ0OCIgLz4KICAgIDwvZmlsdGVyPgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMS40IgogICAgIGlua3NjYXBlOmN4PSIxMzAuNTY4NjgiCiAgICAgaW5rc2NhcGU6Y3k9IjIwMS4zNDg0NSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0iZzQ0ODgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtcm90YXRpb249IjAiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTYwMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI4MzYiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiIC8+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNSI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MC4wNTQwMzQsLTg5LjA0MzUyMikiPgogICAgPGcKICAgICAgIGlkPSJnNDQ4OCIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDIuNjU1MDQ0MywwLDAsMi44NTQ2OTA3LC0xMTAuOTk1MTgsLTMyNi45MjY1MikiPgogICAgICA8ZWxsaXBzZQogICAgICAgICByeT0iMTYuMDM1OTI3IgogICAgICAgICByeD0iMTcuNTA1ODg0IgogICAgICAgICBjeT0iMTY0LjE2NTUxIgogICAgICAgICBjeD0iODAuNTc4NzIiCiAgICAgICAgIGlkPSJwYXRoMzQ3NCIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MC4zO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC4yNjQ5OTk5OTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxO2ZpbHRlcjp1cmwoI2ZpbHRlcjQzOTEpO2ltYWdlLXJlbmRlcmluZzphdXRvIiAvPgogICAgICA8cmVjdAogICAgICAgICB0cmFuc2Zvcm09InJvdGF0ZSgtNDIuODA4OTU1KSIKICAgICAgICAgcnk9IjAiCiAgICAgICAgIHk9IjE3NC41NTY0OSIKICAgICAgICAgeD0iLTY3LjM5ODc1OCIKICAgICAgICAgaGVpZ2h0PSIyLjE1MjIwNjQiCiAgICAgICAgIHdpZHRoPSIyOS4yNzk2NDgiCiAgICAgICAgIGlkPSJyZWN0NDQxMyIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MTtmaWxsOiNmZmZmMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjA7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MTtmaWx0ZXI6dXJsKCNmaWx0ZXI0NDQ2KSIgLz4KICAgICAgPHJlY3QKICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoLTEzOS4wMzQ0MikiCiAgICAgICAgIHJ5PSIwIgogICAgICAgICB5PSItNzMuMDUwOTQ5IgogICAgICAgICB4PSItMTgyLjk2MjUyIgogICAgICAgICBoZWlnaHQ9IjIuMTUyMjA2NCIKICAgICAgICAgd2lkdGg9IjI5LjI3OTY0OCIKICAgICAgICAgaWQ9InJlY3Q0NDEzLTMiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDojZmZmZjAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjE7ZmlsdGVyOnVybCgjZmlsdGVyNDQzOCkiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K";}#else end#如果有設置 $conf["valNotSend"]if(isset($conf["valNotSend"])){#設置不傳送表單的js語法$valNotSend="//如果表單的數值為 ".$conf["valNotSend"]."if(clickedValue==='".$conf["valNotSend"]."'){//結束動作return true;}//if end";}#if end#反之else{#設為空值$valNotSend="";}#else end#卸除不被 form::inputSelect 接受的參數unset($conf["valNotSend"]);#如果有設置 formNameif(isset($conf["formName"])){#如果 formName 跟 name 一樣if($conf["formName"]===$conf["name"]){#增加 formName 的名稱$conf["formName"]=$conf["formName"]."FormName";}#if end}#if end#函式說明:#建立下拉式表單#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表失敗.#$result["error"],錯誤訊息陣列.#$result["content"],語法內容.#$result["function"],設置當前執行的函式#必填參數:#$conf["name"],字串,爲該下拉式選單的名稱#$conf["name"]="";#$conf["sendValue"],陣列值,爲每個選項的實際傳送的數值,e.g. $sendValue = array("a","b","c","d","e");#$conf["sendValue"]=array();#可省略參數:#$conf["formName"]="";#該表單的名稱#$conf["outputValue"]=array();#爲陣列值,爲每個選項的實際顯示的數值, e.g. $outputValue = array("p","o","i","t","e");,如果沒有設定,則其值同$conf["sendValue"]。#$conf["viewCount"]="";#為一次要顯示幾個選項,預設爲顯示一個。#$conf["defaultValue"]="";#為預設選取那個選項,須爲$conf["sendValue"]其中的一個值。#$conf["class"]="";#爲要套用的class樣式,預設為 "__qbpwcf_inputSelect".#$conf["readOnly"],字串,內容是否唯獨,預設為"false",不唯獨,"true"為唯獨.#$conf["readOnly"]="true";#$conf["comment"],字串,輸入方框上面要放哪些註解文字,亦即用label來呈現,同時指定"for"屬性的數值為當前"input"標籤的id,意即參數"name"的內容.#$conf["comment"]="";#$conf["formAction"]="";#爲該下拉式表單要傳送到的位置#$conf["actionTarget"]="_self";#要如何接收網頁的迴應,預設爲_self#$conf["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsAction"]參數。#$conf["jsAction"]="";#爲該js是要做什麼,可以是"document.forms.formName.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。#$conf["independentForm"]="true";#是否該下拉式選單就是一個完整的表單,"true"代表是,"false"代表不是,預設為"true"#$conf["hiddenVar"],字串陣列,隱藏的變數名稱陣列.#$conf["hiddenVar"]=array("");#$conf["hiddanVarValue"],字串陣列,隱藏變數的數值內容.#$conf["hiddenVarValue"]=array("");#$conf["fixedPosition"],字串,該下拉式選單是否要隨着滾軸滾動時固定在畫面上特定的位置,於設為"false",代表不固定,"true"代表要固定.#$conf["fixedPosition"]="true";#$conf["fixedPosition.fixedTop"],字串,該選單距離畫面頂部的固定距離,預設為0px.#$conf["fixedPosition.fixedTop"]="0px";#$conf["fixedPosition.fixedLeft"],字串,該選單距離畫面左方的固定距離.預設為0px.#$conf["fixedPosition.fixedLeft"]="0px";#$conf["fixedPosition.emptySpaceSize"],字串,表單位置要放置多寬的空白,於設為40px.#$conf["fixedPosition.emptySpaceSize"]="40px";#$conf["tableStartClass"]="__withoutBorder";#表格要採用的css樣式,預設為__withoutBorder,__withoutBorder為沒有框線的樣式,__withBorder為有樣式的表格.#$conf["tableStart"]="true";#爲是否要以<table>結尾,"true"表示"是"。也可以看作表格結束。#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。#$conf["tableEnd"]="true";#爲是否要以</table>結尾,"true"表示"是"。也可以看作表格結束。#如果有設置 $conf["dataFormId"]if(isset($conf["dataFormId"])){#設置 data-id 屬性$conf["dataFormId"]=$conf["dataFormId"];}#if end#備註:#$_SERVER["PHP_SELF"]為php檔案自己#參考資料來源:#http://stackoverflow.com/questions/833032/submit-is-not-a-function-in-javascript => form的id重複會導致"document.testForm.submit()"的javaScript語法出錯。#http://stackoverflow.com/questions/14622124/all-of-commands-for-submit-in-onchange-select-not-work => documents.forms.formName.submit() 才會將正確的表單送出。#http://stackoverflow.com/questions/368813/html-form-readonly-select-tag-input => 禁止改變選項,且也不會傳送該名稱表單#tableStart & tableEnd 要補上$inputSelect=form::inputSelect($conf);#如果建立失敗if($inputSelect["content"]==="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$inputSelect;#回傳結果return $result;}#if end#將$conf["name"]進行處理,避免js錯誤#函式說明:#處理字串避免網頁出錯#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["content"],爲處理好的字串.#$result["error"],錯誤訊息陣列.#必填參數:$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["name"];#爲要處理的字串#可省略的參數:$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*","#","\"","-");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換 ("<",">","=","//","'","$","%","&","|","/*","*","#","\"").#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);unset($conf["stringProcess::correctCharacter"]);#如果處理失敗if($correctCharacter["status"]==="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$correctCharacter;#回傳結果return $result;}#if end#比對名稱是否符合規則if($conf["name"]!==$correctCharacter["content"]){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$correctCharacter;#設置額外錯誤訊息$result["error"][]=$conf["name"]." 不是合法的參數";#回傳結果return $result;}#if end#另存表單的名稱$name=$conf["name"];#設置用js傳送表單的動作$sendForm="return false;";if(isset($conf["independentForm"])){$independentForm=$conf["independentForm"];if($independentForm==="true"){if(isset($conf["formName"]) && isset($conf["formAction"])){$sendForm="document.forms.".$conf["formName"].".submit();";}#if end}#if end}#if endunset($conf);#如果建立失敗if($inputSelect["status"]==="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$inputSelect;#回傳結果return $result;}#if end#取得下拉式選單的語法$result["content"]=$inputSelect["content"];#建立 scrollingList() 用的js#函式說明:#將要執行的script語法透過該函式執行(會在程式外層用<script></script>包起來).#回傳結果:#$result["status"],執行是否正常,"true"為正常,"false"為不正常.#$result["error"],錯誤訊息陣列#$result["function"],當前執行的函數名稱#$result["content"],要執行的javaScript語法#必填參數:#$conf["script"],字串,要執行的javaScript語法.$conf["javaScript::toScript"]["script"]="//取得下拉式選單元素var ".$name."=document.getElementById('".$name."');//將下拉式選單綁定'mousedown'事件,var scrollingListMousedownEvent = ".$name.".addEventListener('mousedown',function(event){//debugconsole.log('mousedown event start');//取消預設按下滑鼠的效果event.preventDefault();//停止擴散事件event.stopPropagation();//debugconsole.log('mousedown event end');});//將下拉式選單綁定'mouseup'事件,var scrollingListMouseupEvent = ".$name.".addEventListener('mouseup',function(event){//debugconsole.log('mouseup event start');//取消預設滑鼠放開的效果event.preventDefault();//停止擴散事件event.stopPropagation();//debugconsole.log('mouseup event end');});//將下拉式選單綁定'ontouchstart'事件,var scrollingListTouchStartEvent = ".$name.".addEventListener('ontouchstart',function(event){//debugconsole.log('ontouch event start');//取消預設觸碰的效果event.preventDefault();//停止擴散事件event.stopPropagation();//debugconsole.log('ontouch event end');});//將下拉式選單綁定'ontouchend'事件,var scrollingListTouchEndEvent = ".$name.".addEventListener('ontouchend',function(event){//debugconsole.log('ontouch event start');//取消預設觸碰的效果event.preventDefault();//停止擴散事件event.stopPropagation();//debugconsole.log('ontouch event end');});//將下拉式選單綁定'click'事件,觸發時要執行物件__qbpwcf_scrollingList的函數var scrollingListClickEvent = ".$name.".addEventListener('click',function(event){//debugconsole.log(event);//取消預設點擊的效果event.preventDefault();//取得下拉式選單內容var inputSelect=event.target;//debug//console.log(inputSelect);//讓下拉式選單趕緊隱藏inputSelect.style.opacity='0';//取得選項的數目var opLen=inputSelect.options.length;//debug//console.log(opLen);//新增覆蓋全螢幕的divvar root=document.createElement('div');//設置最外層div的idroot.setAttribute('id','scrollingListRootDiv');//設置最外層div的樣式root.setAttribute('class','__qbpwcf_scrollingListRootDiv');//新增為了將不足divForMiddle可見高度的選項們置中的divvar divForMiddle=document.createElement('div');//設置為了上下置中的div樣式divForMiddle.setAttribute('class','__qbpwcf_scrollingListOutterDiv');//初始化記錄選擇的選項indexvar selectedOptionIndex=-1;//針對每個選項for(var i=0;i< opLen;i++){//debug//console.log(i);//debug//console.log(inputSelect.options[i].value);//取得選項實際數值var opVal=inputSelect.options[i].value;//debug//console.log(inputSelect.options[i].innerHTML);//取得選項顯示名稱var opShow=inputSelect.options[i].innerHTML;//debug//console.log(opVal+'=>'+opShow);//建立選項的divvar opDiv=document.createElement('div');//設置選項div的classopDiv.setAttribute('class','__qbpwcf_inputSelect __qbpwcf_inputSelect_hover');//設置選項div的數值內容opDiv.setAttribute('data-val',opVal);//設置選項div的編號(從0開始)opDiv.setAttribute('data-no',i);//若該選項有 'selected' 屬性if(inputSelect.options[i].attributes['selected']!==undefined){//debug//console.log('第'+opDiv.attributes['data-no'].value+'個選項為現有選擇的項目');//標記該選項為原先所選擇的項目opDiv.setAttribute('data-selected','true');//記錄原先所選擇的項目的indexvar selectedOptionIndex=parseInt(opDiv.attributes['data-no'].value);}//if end//建立選項名稱文字節點var textnode = document.createTextNode(opShow);//將文字放進選項的divopDiv.appendChild(textnode);//將選項放進為了上下左右置中的divdivForMiddle.appendChild(opDiv);}//for end//新增為了上下左右置中的divvar divForCenterMiddle=document.createElement('div');//設置為了內部元素都上下左右置中的div樣式//divForCenterMiddle.setAttribute('style','background-color:white;position:fixed;top:15%;left:15%;height:70%;width:70%;overflow-y:auto;border:1px solid black;');divForCenterMiddle.setAttribute('class','__qbpwcf_scrollingListInnerDiv');//將上下置中的選項們放進可以上下左右置中的divdivForCenterMiddle.appendChild(divForMiddle);//將選項放進最外層的divroot.appendChild(divForCenterMiddle);//將整個div放到body裡面document.body.appendChild(root);//調整滾軸表單的置中效果scrollingListMiddleFunction();//取得所有選項var allOptions=document.getElementsByClassName('__qbpwcf_inputSelect_hover');//debug//console.log(allOptions);//移動滾軸讓原本選擇的選項盡量置中//原先選擇的項目索引//console.log(selectedOptionIndex);//opLen 選項的數目//console.log(opLen);//取得選單的滾軸上端位置//var scrollingListScrollTop=document.getElementById('scrollingListRootDiv').children[0].scrollTop;//debug//console.log(scrollingListScrollTop);//取得選單的滾軸上端位置最大值var scrollingListScrollTopMax=document.getElementById('scrollingListRootDiv').children[0].scrollTopMax;//debug//console.log(scrollingListScrollTopMax);//取得選單的可見高度//var scrollingListViewHeight=document.getElementById('scrollingListRootDiv').children[0].clientHeight;//debug//console.log(scrollingListViewHeight);//取得選單含滾軸的總高度//var scrollingListScrollHeight=document.getElementById('scrollingListRootDiv').children[0].scrollHeight;//debug//console.log(scrollingListScrollHeight);//debug//console.log(selectedOptionIndex);//如果有滾軸if(scrollingListScrollTopMax!==0){//如果是第一個選項if(selectedOptionIndex===0){//滾軸拉到最上面document.getElementById('scrollingListRootDiv').children[0].scrollTop=0;//debug//console.log('scrollingListScrollTop=0');}//if end//如果之前選擇的選項索引剛好等於 opLen/2else if(((selectedOptionIndex+1)===(opLen/2))){//debug//console.log('之前選擇的選項索引剛好等於一半');//取得新的滾軸高度var newScrollTop=scrollingListScrollTopMax/2;//設置滾軸的上端位置document.getElementById('scrollingListRootDiv').children[0].scrollTop=newScrollTop;//debug//console.log('scrollingListScrollTop='+newScrollTop.toString());}//if end//如果之前選擇的選項索引小於半else if((selectedOptionIndex+1)<(opLen/2)){//debug//console.log('之前選擇的選項索引未過半,加幾個'+(selectedOptionIndex+1).toString());//取得新的滾軸高度var newScrollTop=scrollingListScrollTopMax/opLen*selectedOptionIndex+1;//設置滾軸的上端位置document.getElementById('scrollingListRootDiv').children[0].scrollTop=newScrollTop;//debug//console.log('scrollingListScrollTop='+newScrollTop.toString());}//if end//如果之前選擇的選項索引過半else if((selectedOptionIndex+1)>(opLen/2)){//debug//console.log('之前選擇的選項索引過半,減幾個'+(opLen-selectedOptionIndex-1).toString());//取得新的滾軸高度var newScrollTop=scrollingListScrollTopMax-scrollingListScrollTopMax/opLen*(opLen-selectedOptionIndex-1);//設置滾軸的上端位置document.getElementById('scrollingListRootDiv').children[0].scrollTop=newScrollTop;//debug//console.log('scrollingListScrollTop='+newScrollTop.toString());}//if end//如果是最後一個選項else if(selectedOptionIndex===opLen){//如果是最後一個選項document.getElementById('scrollingListRootDiv').children[0].scrollTop=scrollingListScrollTopMax;//debug//console.log('scrollingListScrollTop='+scrollingListScrollTopMax);}//if end//不應該跑到的地方else{//debugconsole.log('error occur!');}//else end}//if end//針對每個選項for(var i=0;i<allOptions.length;i++){//綁定所有選項的 'click' 事件allOptions[i].addEventListener('click',function(event){//debug//console.log(event);//取得點擊到的選項var clickedOption=event.target;//debug//console.log(clickedOption);//取得點擊到的選項數值var clickedValue=clickedOption.attributes['data-val'].value;//debug//console.log(clickedValue);//取得點擊到的選項編號var clickedNo=clickedOption.attributes['data-no'].value;//debug//console.log(clickedNo);//取得點擊到的選項名稱var clickedName=clickedOption.innerHTML;//debug//console.log(clickedName);//修改下拉式選單選則的數值//針對每個下拉式選單實際的選項for(var j=0;j<allOptions.length;j++){//移除 selected 屬性inputSelect.options[j].removeAttribute('selected');}//for end//debug//console.log('設置 inputSelect.options['+clickedNo+'] 的 selected 屬性');//設置點選的選項的 selected 屬性inputSelect.options[clickedNo].setAttribute('selected','');//取得要移除 scrolling list 的 divvar divToDel=document.getElementById('scrollingListRootDiv');//debug//console.log(divTodel);//移除 scrolling list divdivToDel.remove();//復原下拉式選單inputSelect.style.opacity='unset';".$valNotSend."//馬上傳送表單sendForm();});//function end}//for end//建立 close iconcloseIcon();});//停止擴散事件event.stopPropagation();";#可省略參數:#$conf["onReady"],字串,是否要在網頁載入完再執行,"false"為不等載入完就先執行,預設為"true"要等載入完再執行.#$conf["onReady"]="true";#$conf["globalJs"],字串陣列,為要放入<script>標籤的js全域變數.$conf["javaScript::toScript"]["globalJs"][]="//取得下拉式選單元素var ".$name."=document.getElementById('".$name."');";#$conf["jsFunciton"],字串陣列,為要放入<script>標籤的js函數.$conf["javaScript::toScript"]["jsFunciton"][]="//馬上傳送表單function sendForm(){".$sendForm."}//function sendForm end//關閉 list 的按鈕與事件function closeIcon(){//建立 close iconvar closeIcon = document.createElement('img');//設置 close icon 的樣式closeIcon.style['position']='fixed';closeIcon.style['top']='15%';closeIcon.style['left']='85%';closeIcon.style['width']='5%';closeIcon.style['min-width']='30px';closeIcon.style['max-width']='50px';closeIcon.style['cursor']='pointer';//設置 close icon img 的屬性closeIcon.src='".$closeIcon."';//設置 close icon img 的idcloseIcon.setAttribute('id','qbpwcfScrollingListCloseIcon');//取得 scrollingList 的 root divvar slrd=document.getElementById('scrollingListRootDiv');//將 close icon outer div 放到 scrollingList 的 root div 裡面slrd.appendChild(closeIcon);//取得 close icon imgvar closeIcon=document.getElementById('qbpwcfScrollingListCloseIcon');//新增 close icon img 的點擊事件closeIcon.addEventListener('click',function(){//取得要移除 scrolling list 的 divvar divToDel=document.getElementById('scrollingListRootDiv');//debug//console.log(divTodel);//移除 scrolling list divdivToDel.remove();//復原下拉式選單".$name.".style.opacity='unset';});}//function closeIcon end";#參考資料:#http://stackoverflow.com/questions/9899372/pure-javascript-equivalent-to-jquerys-ready-how-to-call-a-function-when-the$toScript=javaScript::toScript($conf["javaScript::toScript"]);unset($conf["javaScript::toScript"]);#如果建立js失敗if($toScript["status"]==="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$toScript;#回傳結果return $result;}#if end#串接scrollingList用的js$result["content"]=$result["content"].$toScript["content"];#設置執行正常$result["status"]="true";#回傳結果return $result;}#function scrollingList end/*#函式說明:#建立滾軸式表單取代傳統下拉式選單,選項會用全螢幕的div區塊呈現.#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表失敗.#$result["error"],錯誤訊息陣列.#$result["content"],語法內容.#$result["function"],設置當前執行的函式#必填參數:#$conf["name"],字串,爲該下拉式選單的元素的id.$conf["name"]="";#$conf["sendValue"],陣列值,爲每個選項的實際傳送的數值,e.g. $sendValue = array("a","b","c","d","e");$conf["sendValue"]=array();#可省略參數:#$conf["outputValue"],字串陣列,爲每個選項的實際顯示的數值, e.g. $outputValue = array("p","o","i","t","e");,如果沒有設定,則其值同$conf["sendValue"]。#$conf["outputValue"]=array();#$conf["defaultValue"],字串,為預設選取那個選項,須爲$conf["sendValue"]其中的一個值。#$conf["defaultValue"]="";#$conf["class"],字串,爲要套用的class樣式,預設為 "__qbpwcf_inputSelect".#$conf["class"]="";#$conf["readOnly"],字串,內容是否唯獨,預設為"false",不唯獨,"true"為唯獨.#$conf["readOnly"]="true";#$conf["comment"],字串,輸入方框上面要放哪些註解文字,亦即用label來呈現,同時指定"for"屬性的數值為當前"input"標籤的id,意即參數"name"的內容.#$conf["comment"]="";#$conf["formAction"],字串,爲該下拉式表單要傳送到的位置.#$conf["formAction"]="";#$conf["independentForm"],字串,是否該下拉式選單就是一個完整的表單,"true"代表是,"false"代表不是,預設為"true".#$conf["independentForm"]="false";#$conf["hiddenVar"],字串陣列,隱藏的變數名稱陣列.#$conf["hiddenVar"]=array("");#$conf["hiddanVarValue"],字串陣列,隱藏變數的數值內容.#$conf["hiddenVarValue"]=array("");#$conf["closeIcon"],字串,關閉滾軸選單的按鈕圖示,預設為"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpvc2I9Imh0dHA6Ly93d3cub3BlbnN3YXRjaGJvb2sub3JnL3VyaS8yMDA5L29zYiIKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgd2lkdGg9IjEwNS43ODE3Mm1tIgogICBoZWlnaHQ9IjEwNS4zNDM0NG1tIgogICB2aWV3Qm94PSIwIDAgMTA1Ljc4MTcyIDEwNS4zNDM0NCIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnOCIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45MitkZXZlbCB1bmtub3duIgogICBzb2RpcG9kaTpkb2NuYW1lPSJjbG9zZUljb24uc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzMiI+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzMTUiCiAgICAgICBvc2I6cGFpbnQ9InNvbGlkIj4KICAgICAgPHN0b3AKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzAwMDAwMDtzdG9wLW9wYWNpdHk6MTsiCiAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgaWQ9InN0b3A0MzEzIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0MzkxIgogICAgICAgeD0iLTAuMDY4OTc3MTAzIgogICAgICAgd2lkdGg9IjEuMTM3OTU0MiIKICAgICAgIHk9Ii0wLjA3NTI5OTk5MyIKICAgICAgIGhlaWdodD0iMS4xNTA2Ij4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIxLjAwNjI1NDMiCiAgICAgICAgIGlkPSJmZUdhdXNzaWFuQmx1cjQzOTMiIC8+CiAgICA8L2ZpbHRlcj4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0NDM4IgogICAgICAgeD0iLTAuMDIyNjIyOTA0IgogICAgICAgd2lkdGg9IjEuMDQ1MjQ1OCIKICAgICAgIHk9Ii0wLjAyNTU1NTYxNCIKICAgICAgIGhlaWdodD0iMS4wNTExMTEyIj4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIwLjIyMTcwNjAxIgogICAgICAgICBpZD0iZmVHYXVzc2lhbkJsdXI0NDQwIiAvPgogICAgPC9maWx0ZXI+CiAgICA8ZmlsdGVyCiAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICBzdHlsZT0iY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOnNSR0IiCiAgICAgICBpZD0iZmlsdGVyNDQ0NiIKICAgICAgIHg9Ii0wLjAyMzIzMjg0NyIKICAgICAgIHdpZHRoPSIxLjA0NjQ2NTgiCiAgICAgICB5PSItMC4wMjQ4MTk1NDUiCiAgICAgICBoZWlnaHQ9IjEuMDQ5NjM5MSI+CiAgICAgIDxmZUdhdXNzaWFuQmx1cgogICAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICAgIHN0ZERldmlhdGlvbj0iMC4yMjIwOTQyOCIKICAgICAgICAgaWQ9ImZlR2F1c3NpYW5CbHVyNDQ0OCIgLz4KICAgIDwvZmlsdGVyPgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMS40IgogICAgIGlua3NjYXBlOmN4PSIxMzAuNTY4NjgiCiAgICAgaW5rc2NhcGU6Y3k9IjIwMS4zNDg0NSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0iZzQ0ODgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtcm90YXRpb249IjAiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTYwMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI4MzYiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiIC8+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNSI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MC4wNTQwMzQsLTg5LjA0MzUyMikiPgogICAgPGcKICAgICAgIGlkPSJnNDQ4OCIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDIuNjU1MDQ0MywwLDAsMi44NTQ2OTA3LC0xMTAuOTk1MTgsLTMyNi45MjY1MikiPgogICAgICA8ZWxsaXBzZQogICAgICAgICByeT0iMTYuMDM1OTI3IgogICAgICAgICByeD0iMTcuNTA1ODg0IgogICAgICAgICBjeT0iMTY0LjE2NTUxIgogICAgICAgICBjeD0iODAuNTc4NzIiCiAgICAgICAgIGlkPSJwYXRoMzQ3NCIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MC4zO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC4yNjQ5OTk5OTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxO2ZpbHRlcjp1cmwoI2ZpbHRlcjQzOTEpO2ltYWdlLXJlbmRlcmluZzphdXRvIiAvPgogICAgICA8cmVjdAogICAgICAgICB0cmFuc2Zvcm09InJvdGF0ZSgtNDIuODA4OTU1KSIKICAgICAgICAgcnk9IjAiCiAgICAgICAgIHk9IjE3NC41NTY0OSIKICAgICAgICAgeD0iLTY3LjM5ODc1OCIKICAgICAgICAgaGVpZ2h0PSIyLjE1MjIwNjQiCiAgICAgICAgIHdpZHRoPSIyOS4yNzk2NDgiCiAgICAgICAgIGlkPSJyZWN0NDQxMyIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MTtmaWxsOiNmZmZmMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjA7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MTtmaWx0ZXI6dXJsKCNmaWx0ZXI0NDQ2KSIgLz4KICAgICAgPHJlY3QKICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoLTEzOS4wMzQ0MikiCiAgICAgICAgIHJ5PSIwIgogICAgICAgICB5PSItNzMuMDUwOTQ5IgogICAgICAgICB4PSItMTgyLjk2MjUyIgogICAgICAgICBoZWlnaHQ9IjIuMTUyMjA2NCIKICAgICAgICAgd2lkdGg9IjI5LjI3OTY0OCIKICAgICAgICAgaWQ9InJlY3Q0NDEzLTMiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDojZmZmZjAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjE7ZmlsdGVyOnVybCgjZmlsdGVyNDQzOCkiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K".#$conf["closeIcon"]="";#$conf["valNotSend"],字串,如果選擇的選項數值為何,就不傳送表單.#$conf["valNotSend"]="";#$conf["newLineOption"],字串,"true"代表要建立換行的div選單元素,"false"代表要建立不換行的 span 元素,與設為"false".#$conf["newLineOption"]="false";#$conf["dataFormId"],字串,提供用於識別哪一張表單的data屬性名稱.#$conf["dataFormId"]="";#參考資料:#無.#備註:#無.*/public static function fakeScrollingList(&$conf){#初始化要回傳的結果$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果沒有參數if(func_num_args()==0){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]="函數".$result["function"]."需要參數";#回傳結果return $result;}#if end#取得參數$result["argu"]=$conf;#如果 $conf 不為陣列if(gettype($conf)!=="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf===null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#如果有設置close iconif(isset($conf["closeIcon"])){#另存路徑$closeIcon=$conf["closeIcon"];#卸除不被 form::inputSelect 接受的參數unset($conf["closeIcon"]);}#if end#反之else{#用預設的 close icon$closeIcon="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpvc2I9Imh0dHA6Ly93d3cub3BlbnN3YXRjaGJvb2sub3JnL3VyaS8yMDA5L29zYiIKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgd2lkdGg9IjEwNS43ODE3Mm1tIgogICBoZWlnaHQ9IjEwNS4zNDM0NG1tIgogICB2aWV3Qm94PSIwIDAgMTA1Ljc4MTcyIDEwNS4zNDM0NCIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnOCIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45MitkZXZlbCB1bmtub3duIgogICBzb2RpcG9kaTpkb2NuYW1lPSJjbG9zZUljb24uc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzMiI+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzMTUiCiAgICAgICBvc2I6cGFpbnQ9InNvbGlkIj4KICAgICAgPHN0b3AKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzAwMDAwMDtzdG9wLW9wYWNpdHk6MTsiCiAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgaWQ9InN0b3A0MzEzIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0MzkxIgogICAgICAgeD0iLTAuMDY4OTc3MTAzIgogICAgICAgd2lkdGg9IjEuMTM3OTU0MiIKICAgICAgIHk9Ii0wLjA3NTI5OTk5MyIKICAgICAgIGhlaWdodD0iMS4xNTA2Ij4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIxLjAwNjI1NDMiCiAgICAgICAgIGlkPSJmZUdhdXNzaWFuQmx1cjQzOTMiIC8+CiAgICA8L2ZpbHRlcj4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0NDM4IgogICAgICAgeD0iLTAuMDIyNjIyOTA0IgogICAgICAgd2lkdGg9IjEuMDQ1MjQ1OCIKICAgICAgIHk9Ii0wLjAyNTU1NTYxNCIKICAgICAgIGhlaWdodD0iMS4wNTExMTEyIj4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIwLjIyMTcwNjAxIgogICAgICAgICBpZD0iZmVHYXVzc2lhbkJsdXI0NDQwIiAvPgogICAgPC9maWx0ZXI+CiAgICA8ZmlsdGVyCiAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICBzdHlsZT0iY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOnNSR0IiCiAgICAgICBpZD0iZmlsdGVyNDQ0NiIKICAgICAgIHg9Ii0wLjAyMzIzMjg0NyIKICAgICAgIHdpZHRoPSIxLjA0NjQ2NTgiCiAgICAgICB5PSItMC4wMjQ4MTk1NDUiCiAgICAgICBoZWlnaHQ9IjEuMDQ5NjM5MSI+CiAgICAgIDxmZUdhdXNzaWFuQmx1cgogICAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICAgIHN0ZERldmlhdGlvbj0iMC4yMjIwOTQyOCIKICAgICAgICAgaWQ9ImZlR2F1c3NpYW5CbHVyNDQ0OCIgLz4KICAgIDwvZmlsdGVyPgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMS40IgogICAgIGlua3NjYXBlOmN4PSIxMzAuNTY4NjgiCiAgICAgaW5rc2NhcGU6Y3k9IjIwMS4zNDg0NSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0iZzQ0ODgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtcm90YXRpb249IjAiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTYwMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI4MzYiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiIC8+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNSI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MC4wNTQwMzQsLTg5LjA0MzUyMikiPgogICAgPGcKICAgICAgIGlkPSJnNDQ4OCIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDIuNjU1MDQ0MywwLDAsMi44NTQ2OTA3LC0xMTAuOTk1MTgsLTMyNi45MjY1MikiPgogICAgICA8ZWxsaXBzZQogICAgICAgICByeT0iMTYuMDM1OTI3IgogICAgICAgICByeD0iMTcuNTA1ODg0IgogICAgICAgICBjeT0iMTY0LjE2NTUxIgogICAgICAgICBjeD0iODAuNTc4NzIiCiAgICAgICAgIGlkPSJwYXRoMzQ3NCIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MC4zO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC4yNjQ5OTk5OTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxO2ZpbHRlcjp1cmwoI2ZpbHRlcjQzOTEpO2ltYWdlLXJlbmRlcmluZzphdXRvIiAvPgogICAgICA8cmVjdAogICAgICAgICB0cmFuc2Zvcm09InJvdGF0ZSgtNDIuODA4OTU1KSIKICAgICAgICAgcnk9IjAiCiAgICAgICAgIHk9IjE3NC41NTY0OSIKICAgICAgICAgeD0iLTY3LjM5ODc1OCIKICAgICAgICAgaGVpZ2h0PSIyLjE1MjIwNjQiCiAgICAgICAgIHdpZHRoPSIyOS4yNzk2NDgiCiAgICAgICAgIGlkPSJyZWN0NDQxMyIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MTtmaWxsOiNmZmZmMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjA7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MTtmaWx0ZXI6dXJsKCNmaWx0ZXI0NDQ2KSIgLz4KICAgICAgPHJlY3QKICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoLTEzOS4wMzQ0MikiCiAgICAgICAgIHJ5PSIwIgogICAgICAgICB5PSItNzMuMDUwOTQ5IgogICAgICAgICB4PSItMTgyLjk2MjUyIgogICAgICAgICBoZWlnaHQ9IjIuMTUyMjA2NCIKICAgICAgICAgd2lkdGg9IjI5LjI3OTY0OCIKICAgICAgICAgaWQ9InJlY3Q0NDEzLTMiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDojZmZmZjAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjE7ZmlsdGVyOnVybCgjZmlsdGVyNDQzOCkiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K";}#else end#如果有設置 $conf["valNotSend"]if(isset($conf["valNotSend"])){#設置不傳送表單的js語法$valNotSend="//如果表單的數值為 ".$conf["valNotSend"]."if(clickedValue==='".$conf["valNotSend"]."'){//結束動作return true;}//if end";}#if end#反之else{#設為空值$valNotSend="";}#else end#卸除不被 form::inputSelect 接受的參數unset($conf["valNotSend"]);#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["argu"],設置給予的參數.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填寫的參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可以省略的參數:#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("name","sendValue");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","array");#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.$conf["variableCheck::checkArguments"]["canNotBeEmpty"]=array("name","sendValue");#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.#$conf["canBeEmpty"]=array();#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("outputValue","defaultValue","newLineOption","formAction","hiddenVar","hiddenVarValue");#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("outputValue","defaultValue","newLineOption","formAction","hiddenVar","hiddenVarValue","comment","class","readOnly","dataFormId");#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array","string","string","string","array","array","string","string","string","string");#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("\$conf[\"sendValue\"]",null,"false",null,null,null,null,"__qbpwcf_inputSelect","false",null);#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".#$conf["disallowAllSkipableVarIsEmpty"]="";#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".#$conf["disallowAllSkipableVarIsEmptyArray"]="";#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("hiddenVar","hiddenVarValue");#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查失敗if($checkArguments["status"]==="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#如果檢查失敗if($checkArguments["passed"]==="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#設置傳送表單的參數$sendForm="";#如果有設置 $conf["formAction"]if(isset($conf["formAction"])){#預設隱藏的變數為""$hiddenVar="";#如果有設置隱藏的參數 hiddenVar 與 hiddenVarValueif(isset($conf["hiddenVar"]) && isset($conf["hiddenVarValue"])){#加密要傳送的隱藏表單資料$hiddenVar=base64_encode(json_encode(array("hiddenVar"=>$conf["hiddenVar"],"hiddenVarValue"=>$conf["hiddenVarValue"])));}#if end#設置傳送表單的參數$sendForm="//馬上傳送表單window.form_fakeScrollingList_sendForm_".$conf["name"]."('".$conf["name"]."',oriOptionsInfo.sendValue[clickedNo],'".$conf["formAction"]."','".$hiddenVar."');";}#if end#儲存選項呈現的元素變數$optionOutEle="";#如果沒有指定預設的選項if(!isset($conf["defaultValue"])){#預設為第一個選項的內容$conf["defaultValue"]=$conf["sendValue"][0];}#if end#取得預設選項對應的顯示內容#函式說明:#檢查一個數值是否與陣列裏面的元素相同,找到一個相符合的元素後就會停止搜尋.#回傳的結果:#$result["status"],"true"表示執行正確,"false"表示執行錯誤.#$result["founded"],"true"表示有找到相同的,"false"表示沒有找到相同的.#$result["error"],錯誤訊息#$result["function"],當前執行的函數名稱#$result["argv"],使用的參數#$result["equalVarName"],相等的變數名稱或key.#$result["equalVarValue"],相等的變數數值內容.#必填參數:$conf["search::getEqualVar"]["conditionElement"]=$conf["defaultValue"];#條件元素,要等於的元素內容.$conf["search::getEqualVar"]["compareElements"]=$conf["sendValue"];#要比對的陣列變數內容.$getEqualVar=search::getEqualVar($conf["search::getEqualVar"]);unset($conf["search::getEqualVar"]);#如果執失敗if($getEqualVar["status"]==="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$getEqualVar;#回傳結果return $result;}#if end#如果沒有對應的選項if($getEqualVar["founded"]==="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$getEqualVar;#回傳結果return $result;}#if end#取得預設選項的顯示內容$defaultShowVal=$conf["outputValue"][$getEqualVar["equalVarName"]];#fake scrolling list data var name$fakeScrollingListDataVar="qbpwcf-fakeScrollingList-options";#判斷 $conf["newLineOption"] 參數的內容switch($conf["newLineOption"]){#如果要建立 div 選項case "true":#函式說明:#<div>區塊,裡面可以指定css的class樣式,可以指定提示文字.#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.#$result["functin"],字串,當前函數的名稱.#$result["error"],陣列,錯訊訊息.#$result["content"],字串,含有<div>標籤的內容.#必填參數:#$conf["contentArray"],字串陣列,要放入的內容陣列.$conf["css::divSection"]["contentArray"]=array($defaultShowVal);#可省略參數#$conf["id"],字串,div區塊的id.$conf["css::divSection"]["id"]=$conf["name"];#$conf["styleAttr"],字串陣列,給div區段要套用的style樣式屬性.#$conf["styleAttr"]=array();#$conf["styleVal"],字串陣列,給div區段要套用的style樣式數值.#$conf["styleVal"]=array();#$conf["class"],字串,div區段要套用的css樣式.$conf["css::divSection"]["class"]=$conf["class"];#$conf["title"],陣列,滑鼠移到上面時要顯示的內容,每個元素代表一列內容.#$conf["title"]=array();#$conf["oneScreenSize"],字串,div區塊是否要占一個螢幕的大小,預設為"false"不設定,"true"為設定成一個螢幕的大小.#$conf["oneScreenSize"]="false";#$conf["textAlignCenter"],字串,div區塊是否要置中,預設為$conf["oneScreenSize"]的值,"false"為不置中,"true"代表要置中.#$conf["textAlignCenter"]="";#$conf["css::divSection"["data"],字串陣列,每個要設置的屬性data內容,例如array("option1"=>"A","option2"=>"B"),預設不使用.$conf["css::divSection"]["data"]=array($fakeScrollingListDataVar=>base64_encode(json_encode(array("outputValue"=>$conf["outputValue"],"sendValue"=>$conf["sendValue"],"defaultValue"=>$conf["defaultValue"],"defaultShowVal"=>$defaultShowVal))));#如果有設置 $conf["dataFormId"]if(isset($conf["dataFormId"])){#設置 data-form-id 屬性$conf["css::divSection"]["data"]["form-id"]=$conf["dataFormId"];}#if end$divSection=css::divSection($conf["css::divSection"]);unset($conf["css::divSection"]);#如果建立div區段失敗if($divSection["status"]==="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$divSection;#回傳結果return $result;}#if end#取得div的內容$optionOutEle=$optionOutEle.$divSection["content"];#跳出switchbreak;#如果要建立 span 選項case "false":#函式說明:#<span>區塊,裡面可以指定css的class樣式,可以指定提示文字,若要使用移動的css樣式,請改用divSection函數.#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.#$result["functin"],字串,當前函數的名稱.#$result["error"],陣列,錯訊訊息.#$result["content"],字串,含有<span>標籤的內容.#必填參數:#$conf["contentArray"],字串陣列,要放入的內容陣列.$conf["css::spanSection"]["contentArray"]=array($defaultShowVal);#可省略參數#$conf["id"],字串,span區塊的id.$conf["css::spanSection"]["id"]=$conf["name"];#$conf["class"],字串,span區段要套用的css樣式.$conf["css::spanSection"]["class"]=$conf["class"];#$conf["title"],陣列,滑鼠移到上面時要顯示的內容,每個元素代表一列內容#$conf["title"]=array();#$conf["css::spanSection"]["data"],字串陣列,每個data屬性名稱為數值內容,例如array("a"=>"A","b"=>"B")$conf["css::spanSection"]["data"]=array($fakeScrollingListDataVar=>base64_encode(json_encode(array("outputValue"=>$conf["outputValue"],"sendValue"=>$conf["sendValue"],"defaultValue"=>$conf["defaultValue"],"defaultShowVal"=>$defaultShowVal))));#如果有設置 $conf["dataFormId"]if(isset($conf["dataFormId"])){#設置 data-form-id 屬性$conf["css::spanSection"]["data"]["form-id"]=$conf["dataFormId"];}#if end$spanSection=css::spanSection($conf["css::spanSection"]);unset($conf["css::spanSection"]);#如果建立span區段失敗if($spanSection["status"]==="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$spanSection;#回傳結果return $result;}#if end#取得span的內容$optionOutEle=$optionOutEle.$spanSection["content"];#跳出switchbreak;#其他數值的內容default :#設置不換行$conf["newLineOption"]="false";#跳出switchbreak;}#switch end#如果有設置提示文字if(isset($conf["comment"])){#設置提示文字#函式說明:#<div>區塊,裡面可以指定css的class樣式,可以指定提示文字.#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.#$result["functin"],字串,當前函數的名稱.#$result["error"],陣列,錯訊訊息.#$result["content"],字串,含有<div>標籤的內容.#必填參數:#$conf["contentArray"],字串陣列,要放入的內容陣列.$conf["css::divSection"]["contentArray"]=array($conf["comment"]);#可省略參數#$conf["id"],字串,div區塊的id.$conf["css::divSection"]["id"]=$conf["name"]."_comment";#$conf["styleAttr"],字串陣列,給div區段要套用的style樣式屬性.#$conf["styleAttr"]=array();#$conf["styleVal"],字串陣列,給div區段要套用的style樣式數值.#$conf["styleVal"]=array();#$conf["class"],字串,div區段要套用的css樣式.#$conf["class"]="";#$conf["title"],陣列,滑鼠移到上面時要顯示的內容,每個元素代表一列內容.#$conf["title"]=array();#$conf["oneScreenSize"],字串,div區塊是否要占一個螢幕的大小,預設為"false"不設定,"true"為設定成一個螢幕的大小.#$conf["oneScreenSize"]="false";#$conf["textAlignCenter"],字串,div區塊是否要置中,預設為$conf["oneScreenSize"]的值,"false"為不置中,"true"代表要置中.#$conf["textAlignCenter"]="";#$conf["css::divSection"["data"],字串陣列,每個要設置的屬性data內容,例如array("option1"=>"A","option2"=>"B"),預設不使用.#$conf["css::divSection"]["data"]=array($fakeScrollingListDataVar=>base64_encode(json_encode(array("outputValue"=>$conf["outputValue"],"sendValue"=>$conf["sendValue"],"defaultValue"=>$conf["defaultValue"],"defaultShowVal"=>$defaultShowVal))));$divSection=css::divSection($conf["css::divSection"]);unset($conf["css::divSection"]);#如果建立div區段失敗if($divSection["status"]==="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$divSection;#回傳結果return $result;}#if end#取得div的內容$optionOutEle=$divSection["content"].$optionOutEle;}#if end#設置語法內容$result["content"]=&$optionOutEle;#取得表單的名稱$name=$conf["name"];#如果 readOnlyif($conf["readOnly"]==="true"){#設置執行正常$result["status"]="true";#回傳結果return $result;}#if end#函式說明:#將要執行的script語法透過該函式執行(會在程式外層用<script></script>包起來).#回傳結果:#$result["status"],執行是否正常,"true"為正常,"false"為不正常.#$result["error"],錯誤訊息陣列#$result["function"],當前執行的函數名稱#$result["content"],要執行的javaScript語法#必填參數:#$conf["script"],字串,要執行的javaScript語法.$conf["javaScript::toScript"]["script"]="";#可省略參數:#$conf["onReady"],字串,是否要在網頁完全載入後再執行,"false"為不等載入完就先執行,預設為"true"要等載入完再執行.#$conf["onReady"]="true";#$conf["globalJs"],字串陣列,為要放入<script>標籤的js全域變數.$conf["javaScript::toScript"]["globalJs"][]="var ".$name."=document.getElementById('".$name."');//將下拉式選單綁定'click'事件,觸發時要執行物件__qbpwcf_scrollingList的函數".$name.".addEventListener('click',function(event){//debugconsole.log(event);//取消預設點擊的效果event.preventDefault();//取得下拉式選單內容var inputSelect=event.target;//debug//console.log(inputSelect);//讓下拉式選單趕緊隱藏inputSelect.style.opacity='0';//解析選項的資訊var optionsInfo=JSON.parse(atob(inputSelect.dataset.qbpwcfFakescrollinglistOptions));//取得選項的數目var opLen=optionsInfo.sendValue.length;//新增覆蓋全螢幕的divvar root=document.createElement('div');//設置最外層div的idroot.setAttribute('id','scrollingListRootDiv');//設置最外層div的樣式root.setAttribute('class','__qbpwcf_scrollingListRootDiv');//新增為了將不足divForMiddle可見高度的選項們置中的divvar divForMiddle=document.createElement('div');//設置為了上下置中的div樣式divForMiddle.setAttribute('class','__qbpwcf_scrollingListOutterDiv');//初始化記錄選擇的選項indexvar selectedOptionIndex=-1;//針對每個選項for(var i=0;i<opLen;i++){//debug//console.log(i);//debug//console.log(optionsInfo.sendValue[i]);//取得選項實際數值var opVal=optionsInfo.sendValue[i];//debug//console.log(optionsInfo.showValue[i]);//取得選項顯示名稱//var opShow=optionsInfo.sendValue[i];var opShow=optionsInfo.outputValue[i];//debug//console.log(opVal+'=>'+opShow);//建立選項的divvar opDiv=document.createElement('div');//讓選項上下置中opDiv.style.paddingTop='15px';//設置選項div的classopDiv.setAttribute('class','__qbpwcf_inputSelect __qbpwcf_inputSelect_hover');//設置選項div的數值內容opDiv.setAttribute('data-val',opVal);//設置選項div的編號(從0開始)opDiv.setAttribute('data-no',i);//設置裡面的文字要換行的時候改用...表示opDiv.style.whiteSpace='nowrap';opDiv.style.width='100%';opDiv.style.overflow='hidden';opDiv.style.textOverflow='ellipsis';//偶數欄位if(i%2===0){//設置選項div底色為藍色opDiv.style.backgroundColor='CCCCFF';}//反之為奇數欄位else{//設置選項div底色為紅色opDiv.style.backgroundColor='FFCCCC';}//解析選項的資訊var oriOptionsInfo=JSON.parse(atob(inputSelect.dataset.qbpwcfFakescrollinglistOptions));//若該選項為當前選擇的項目if(oriOptionsInfo.sendValue[i]===inputSelect.innerText){//debug//console.log('第'+opDiv.attributes['data-no'].value+'個選項為現有選擇的項目');//標記該選項為原先所選擇的項目opDiv.setAttribute('data-selected','true');//記錄原先所選擇的項目的indexvar selectedOptionIndex=parseInt(opDiv.attributes['data-no'].value);}//if end//建立選項名稱文字節點var textnode = document.createTextNode(opShow);//將文字放進選項的divopDiv.appendChild(textnode);//將選項放進為了上下左右置中的divdivForMiddle.appendChild(opDiv);}//for end//新增為了上下左右置中的divvar divForCenterMiddle=document.createElement('div');//設置為了內部元素都上下左右置中的div樣式divForCenterMiddle.setAttribute('class','__qbpwcf_scrollingListInnerDiv');//將上下置中的選項們放進可以上下左右置中的divdivForCenterMiddle.appendChild(divForMiddle);//將選項放進最外層的divroot.appendChild(divForCenterMiddle);//將整個div放到body裡面document.body.appendChild(root);//調整滾軸表單的置中效果scrollingListMiddleFunction();//取得所有選項var allOptions=document.getElementsByClassName('__qbpwcf_inputSelect_hover');//debug//console.log(allOptions);//移動滾軸讓原本選擇的選項盡量置中//原先選擇的項目索引//console.log(selectedOptionIndex);//opLen 選項的數目//console.log(opLen);//取得選單的滾軸上端位置//var scrollingListScrollTop=document.getElementById('scrollingListRootDiv').children[0].scrollTop;//debug//console.log(scrollingListScrollTop);//取得選單的滾軸上端位置最大值var scrollingListScrollTopMax=document.getElementById('scrollingListRootDiv').children[0].scrollTopMax;//debug//console.log(scrollingListScrollTopMax);//取得選單的可見高度//var scrollingListViewHeight=document.getElementById('scrollingListRootDiv').children[0].clientHeight;//debug//console.log(scrollingListViewHeight);//取得選單含滾軸的總高度//var scrollingListScrollHeight=document.getElementById('scrollingListRootDiv').children[0].scrollHeight;//debug//console.log(scrollingListScrollHeight);//debug//console.log(selectedOptionIndex);//如果有滾軸if(scrollingListScrollTopMax!==0){//如果是第一個選項if(selectedOptionIndex===0){//滾軸拉到最上面document.getElementById('scrollingListRootDiv').children[0].scrollTop=0;//debug//console.log('scrollingListScrollTop=0');}//if end//如果之前選擇的選項索引剛好等於 opLen/2else if(((selectedOptionIndex+1)===(opLen/2))){//debug//console.log('之前選擇的選項索引剛好等於一半');//取得新的滾軸高度var newScrollTop=scrollingListScrollTopMax/2;//設置滾軸的上端位置document.getElementById('scrollingListRootDiv').children[0].scrollTop=newScrollTop;//debug//console.log('scrollingListScrollTop='+newScrollTop.toString());}//if end//如果之前選擇的選項索引小於半else if((selectedOptionIndex+1)<(opLen/2)){//debug//console.log('之前選擇的選項索引未過半,加幾個'+(selectedOptionIndex+1).toString());//取得新的滾軸高度var newScrollTop=scrollingListScrollTopMax/opLen*selectedOptionIndex+1;//設置滾軸的上端位置document.getElementById('scrollingListRootDiv').children[0].scrollTop=newScrollTop;//debug//console.log('scrollingListScrollTop='+newScrollTop.toString());}//if end//如果之前選擇的選項索引過半else if((selectedOptionIndex+1)>(opLen/2)){//debug//console.log('之前選擇的選項索引過半,減幾個'+(opLen-selectedOptionIndex-1).toString());//取得新的滾軸高度var newScrollTop=scrollingListScrollTopMax-scrollingListScrollTopMax/opLen*(opLen-selectedOptionIndex-1);//設置滾軸的上端位置document.getElementById('scrollingListRootDiv').children[0].scrollTop=newScrollTop;//debug//console.log('scrollingListScrollTop='+newScrollTop.toString());}//if end//如果是最後一個選項else if(selectedOptionIndex===opLen){//如果是最後一個選項document.getElementById('scrollingListRootDiv').children[0].scrollTop=scrollingListScrollTopMax;//debug//console.log('scrollingListScrollTop='+scrollingListScrollTopMax);}//if end//不應該跑到的地方else{//debugconsole.log('error occur!');}//else end}//if end//針對每個選項for(var i=0;i<allOptions.length;i++){//綁定所有選項的 'click' 事件allOptions[i].addEventListener('click',function(event){//debug//console.log(event);//取得點擊到的選項var clickedOption=event.target;//debug//console.log(clickedOption);//取得點擊到的選項數值var clickedValue=clickedOption.attributes['data-val'].value;//debug//console.log(clickedValue);//取得點擊到的選項編號var clickedNo=clickedOption.attributes['data-no'].value;//debug//console.log(clickedNo);//取得點擊到的選項名稱var clickedName=clickedOption.innerHTML;//debug//console.log(clickedName);//解析選項的資訊var oriOptionsInfo=JSON.parse(atob(inputSelect.dataset.qbpwcfFakescrollinglistOptions));//取得顯示元素var ".$name."=document.getElementById('".$name."');//更新選取的選項數值顯示內容".$name.".innerText=oriOptionsInfo.outputValue[clickedNo];//取消透明效果".$name.".style.opacity='unset';//取得要移除 scrolling list 的 divvar divToDel=document.getElementById('scrollingListRootDiv');//debug//console.log(divTodel);//移除 scrolling list divdivToDel.remove();//復原下拉式選單inputSelect.style.opacity='unset';".$valNotSend."".$sendForm."});//function end}//for end//建立 close iconwindow.form_fakeScrollingList_closeIcon_".$conf["name"]."(".$name.");});";#$conf["jsFunciton"],字串陣列,為要放入<script>標籤的js函數.$conf["javaScript::toScript"]["jsFunciton"][]="//馬上傳送表單,key代表要傳送的元素名稱,val代表元素對應的數值內容,rev代表要傳送到哪個地方.window.form_fakeScrollingList_sendForm_".$conf["name"]."=function(key,val,rev,hidvar){//debugconsole.log('prepare send form');//new XMLHttpRequestxmlhttp=new XMLHttpRequest();//set response type to html documentxmlhttp.responseType='document';//當運行狀態改變時xmlhttp.onreadystatechange=function(){//如果狀態為4且response code為200if(xmlhttp.readyState==4 && xmlhttp.status==200){//將回應進行處理res=xmlhttp.response;//debugconsole.log(res);console.log('url:'+res.URL);console.log('title:'+res.title);//將回應刷新到當前頁面//no use?stateObj={};//取得新 titletitle=res.title;//取得新 urlnewUrl=res.URL;//更新網頁標題與網址//參考資料:https://developer.mozilla.org/en-US/docs/Web/API/History_APIhistory.pushState(stateObj, title, newUrl);//開新文件document.open('text/html',true);//寫入取得的完整回應document.write(res.all[0].outerHTML);//結束輸出document.close();}//if end}//function end//建立表單物件var formData = new FormData();//新增表單的名稱與對應的數值formData.append(key,val);//如果有隱藏的表單變數if(hidvar!==''){//解析隱藏的表單變數hidvar=JSON.parse(atob(hidvar));//另存隱藏變數的名稱hiddenVar=hidvar.hiddenVar;//另存隱藏變數對應的數值內容hiddenVarValue=hidvar.hiddenVarValue;//取得隱藏變數的數量hiddenVarCount=hiddenVar.length;//針對每個隱藏的表單變數for(i=0;i<hiddenVarCount;i++){//新增表單隱藏變數的名稱與對應的數值formData.append(hiddenVar[i],hiddenVarValue[i]);}//for end}//if end//用 post 傳送到 revxmlhttp.open('POST',rev);//set ajax headerxmlhttp.setRequestHeader('X-Requested-With','XMLHttpRequest');//傳送數值xmlhttp.send(formData);//debugconsole.log('form sended');}//function sendForm end//關閉 list 的按鈕與事件window.form_fakeScrollingList_closeIcon_".$conf["name"]."=function(sectionId){//debugconsole.log(sectionId);//建立 close iconvar closeIcon = document.createElement('img');//取得顯示項目的元素idcloseIcon.sectionId=sectionId;//設置 close icon 的樣式closeIcon.style['position']='fixed';closeIcon.style['top']='15%';closeIcon.style['left']='85%';closeIcon.style['width']='5%';closeIcon.style['min-width']='30px';closeIcon.style['max-width']='50px';closeIcon.style['cursor']='pointer';//設置 close icon img 的屬性closeIcon.src='".$closeIcon."';//設置 close icon img 的idcloseIcon.setAttribute('id','qbpwcfScrollingListCloseIcon');//取得 scrollingList 的 root divvar slrd=document.getElementById('scrollingListRootDiv');//將 close icon outer div 放到 scrollingList 的 root div 裡面slrd.appendChild(closeIcon);//取得 close icon imgvar closeIcon=document.getElementById('qbpwcfScrollingListCloseIcon');//新增 close icon img 的點擊事件closeIcon.addEventListener('click',function(){//取得要移除 scrolling list 的 divvar divToDel=document.getElementById('scrollingListRootDiv');//debug//console.log(divTodel);//移除 scrolling list divdivToDel.remove();//debugconsole.log(closeIcon.sectionId);//取得顯示元素,移除透明效果,顯示數值closeIcon.sectionId.style.opacity='unset';});}//function closeIcon end";#參考資料:#http://stackoverflow.com/questions/9899372/pure-javascript-equivalent-to-jquerys-ready-how-to-call-a-function-when-the$toScript=javaScript::toScript($conf["javaScript::toScript"]);unset($conf["javaScript::toScript"]);#如果建立 script 失敗if($toScript["status"]==="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$toScript;#回傳結果return $result;}#if end#傳接 js$result["content"]=$result["content"].$toScript["content"];#設置執行正常$result["status"]="true";#回傳結果return $result;}#funciton fakeScrollingList end/*#函式說明:#建立含有分群功能的下拉式選單#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$result["content"],語法.#必填參數:#$conf["option"][$group][$optionDisplayName]=$autualVal,二、三維字串陣列,代表$group群組的選項$optionDisplayName實際上傳送的內容為$autualVal;若為$conf["option"][$option]=$autualVal,則代表無群組的選項$option值為$autualVal.$conf["option"][][]="";#可省略參數:#$conf["name"],字串,選單用於傳送的名稱,預設為"pullDownList[]".#$conf["name"]="pullDownList[]";#$conf["id"],字串,元素id,預設跟$conf["name"]一樣.#$conf["id"]="pullDownList[]";#$conf["default"],字串陣列,代表哪個群組的選項是預設要選取的,$conf["default"]=array("g1","v1")代表g1群組的v1選擇為預設值;$conf["default"]=array("o1")代表選項顯示為o1者為預設的選項.#$conf["default"]=array($group,$optionDisplayName);#$conf["class"],字串陣列,代表要使用哪些css的class.#$conf["class"]=array();#$conf["style"],二維字串陣列,代表要使用哪些css style,例如$conf["style"]["color"]="black",就代表使用"color"屬性,屬性值為"black".#$conf["style"]["attr"]="";#$conf["notSelectedText"],一維陣列字串,沒有選擇項目時要顯示的選項為何,預設為$conf["notSelectedText"]["請選擇"]="unSelected";則代表顯示"請選擇",值為"unSelected".#$conf["notSelectedText"]["請選擇"]="unSelected"#$conf["onChangeFunction"],字串,當下拉式選單的內容變動時,要執行哪個js函數與要帶的參數,或要做的js,預設為"return false;".#$conf["onChangeFunction"]="return false;";#參考資料:#HTML <optgroup> Tag=>http://www.w3schools.com/Tags/tag_optgroup.asp#備註:#無.*/public static function pullDownList(&$conf){#初始化要回傳的結果$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果沒有參數if(func_num_args()==0){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]="函數".$result["function"]."需要參數";#回傳結果return $result;}#if end#取得參數$result["argu"]=$conf;#如果 $conf 不為陣列if(gettype($conf)!=="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf===null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("option");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.#$conf["canNotBeEmpty"]=array();#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.#$conf["canBeEmpty"]=array();#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("name","id","default","class","style");#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("name","id","default","class","style","notSelectedText","onChangeFunction");#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","array","array","array","array","string");#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("pullDownList[]","pullDownList[]",null,null,null,array("請選擇"=>"unSelected"),"return false;");#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查參數失敗if($checkArguments["status"]==="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#如果檢查不通過if($checkArguments["passed"]==="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#檢查 $conf["option"] 是否為二維陣列#針對$conf["option"]的每個元素foreach($conf["option"] as $groups){#如果$arrays不為陣列形態if(gettype($groups)!=="array" && gettype($groups)!=="string"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"][]="參數 option 須為一、二維字串陣列";#回傳結果return $result;}#if end}#foreach end#初始化要套用 css style 屬性字串$style="";#如果有設定 $conf["style"]if(isset($conf["style"])){#初始化儲存style屬性的陣列$styleAttr=array();#初始化儲存style屬性值的陣列$styleVal=array();#$conf["style"] 有幾個元素就執行幾次foreach($conf["style"] as $attr => $val){#如果屬性值不為字串if(gettype($attr)!=="string" || gettype($val)!=="string"){#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"][]="參數style的元素key與value皆須為字串";#回傳結果return $result;}#if end#取得屬性$styleAttr[]=$attr;#取得屬性值$styleVal[]=$val;}#foreach end#如果有屬性與值,且數量對應正確if(count($styleAttr)>0 && count($styleVal)>0 && count($styleAttr)===count($styleVal)){#建立 css style 屬性字串#函式說明:#建立給與html標籤使用的style屬性字串.#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數#$result["error"],錯誤訊息陣列#$result["content"],css設定內容#必填參數:$conf["css::styleStr"]["styleName"]=$styleAttr;#為屬性名稱,須為陣列值$conf["css::styleStr"]["styleValue"]=$styleVal;#為屬性值,須為陣列值$styleStr=css::styleStr($conf["css::styleStr"]);unset($conf["css::styleStr"]);#如果建立style字串失敗if($styleStr["status"]==="false"){#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"]=$styleStr;#回傳結果return $result;}#if end#設置屬性字串$style=$styleStr["content"];}#if end}#if end#初始化要套用的 css class 屬性字串$class="";#如果有設定 $conf["class"]if(isset($conf["class"])){#設定要套用的css類別#函式說明:#建立class屬性字串,亦即套用多個class樣式的設定字串.#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數#$result["error"],錯誤訊息陣列#$result["content"],class屬性字串的內容#必填參數:#$conf["class"],字串陣列,要套用的類別樣式名稱.$conf["css::classStr"]["class"]=$conf["class"];$classStr=css::classStr($conf["css::classStr"]);unset($conf["css::classStr"]);#如果建立套用css類別的屬性字串失敗if($classStr["status"]==="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$classStr;#回傳結果return $result;}#if end#取得css類別屬性字串$class=$classStr["content"];}#if end#設置當內容改變時要觸發的js$onChangeJs="onChange=\"".$conf["onChangeFunction"]."\"";#初始化要回傳的語法$result["content"]="<select name=\"".$conf["name"]."\" id=\"".$conf["id"]."\" ".$style." ".$class." ".$onChangeJs." >";#針對 $conf["notSelectedText"] 變數foreach($conf["notSelectedText"] as $unSelText => $unSelVal){#設置未選擇的選項$result["content"]=$result["content"]."<option value=\"".$unSelVal."\">".$unSelText."</option>";}#foreach end#針對每個 $conf["option"]foreach($conf["option"] as $groupName => $options){#如果 $options 為陣列if(gettype($options)==="array"){#則代表是群組選項#群組 $groupName 開始$result["content"]=$result["content"]."<optgroup label=\"".$groupName."\">";#針對每個 $optionsforeach($options as $optionName => $optionVal){#初始化預設選取的語法$selected="";#如果有設置預設值if(isset($conf["default"])){#如果存在群組選項if(isset($conf["default"][1]) && isset($conf["default"][1])){#如果是預設的群組選項if($groupName===$conf["default"][0] && $optionName===$conf["default"][1]){#設置選取的語法$selected="selected";}#if end}#if end}#if end#選項 $optionName$result["content"]=$result["content"]."<option value=\"".$optionVal."\" ".$selected." >$optionName</option>";}#foreache end#群組 $groupName 結束$result["content"]=$result["content"]."</optgroup>";}#if end#反之如果是字串else if(gettype($options)==="string"){#則代表無歸屬群組的選項#初始化預設選取的語法$selected="";#如果有設置預設值if(isset($conf["default"])){#如果存在選項if(isset($conf["default"][0])){#如果是預設的選項if($groupName===$conf["default"][0]){#設置選取的語法$selected="selected";}#if end}#if end}#if end#選項 $groupName 的值為 $options$result["content"]=$result["content"]."<option value=\"".$options."\" ".$selected." >$groupName</option>";}#if end}#foreach end#下拉式選單結束$result["content"]=$result["content"]."</select>";#設置執行正常$result["status"]="true";#回傳結果return $result;}#function pullDownList end/*#函式說明:#黑點式選單(單選)#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表失敗.#$result["error"],錯誤訊息陣列.#$result["content"],語法內容.#$result["function"],設置當前執行的函式#必填參數:$conf["name"]="";#爲黑點式選單的名稱$conf["sendValue"]=array();#爲陣列值,爲每個選項的實際傳送的數值,e.g. $sendValue = array("a","b","c","d","e");#可省略參數:#$conf["class"]="__withoutBorder";#爲要套用的class樣式,"__qbpwcf_inputRadioWithoutBorder"爲沒有框線的樣式;__qbpwcf_inputRadioWithBorder爲有框線的樣式#$conf["outputValue"]=array();#爲陣列值,爲每個選項的實際顯示的數值, e.g. $outputValue = array("p","o","i","t","e"); 預設爲跟$conf["sendValue"]一樣。#$conf["defaultValue"]="";#爲預設的選項,爲實際傳送的數值之一。#$conf["comment"],字串,下拉式表單的註解文字.#$conf["comment"]="";#$conf["disableHr"]="true";#如果設爲"true",則結尾不用<hr>來結束單選的範圍,預設為"false".#$conf["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。#$conf["jsAction"]="";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設為"false".#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",其爲沒有框線的樣式;__withBorder爲有框線的樣式#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是",也可以看成列裏面的元素開始,預設為"false".#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,預設為"__withoutBorder",其爲沒有框線的樣式;__withBorder爲有框線的樣式#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設為"false".#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設為"false".#$conf["brBetweenOption"]="true";#是否每個選項用<br>標籤隔開,預設為"true".#參考資料:#無.#備註:#無.*/public static function inputRadio($conf){#預設要回傳的數值$result=array();#初始化要回傳的語法$result["content"]="";#設置當前執行的函式$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["form.checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["form.checkArguments"]["varInput"]=&$conf;#$conf["form.checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["form.checkArguments"]["mustBeFilledVariableName"][]="name";$conf["form.checkArguments"]["mustBeFilledVariableName"][]="sendValue";#$conf["form.checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["form.checkArguments"]["mustBeFilledVariableType"][]="string";$conf["form.checkArguments"]["mustBeFilledVariableType"][]="array";#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["form.checkArguments"]["referenceVarKey"]="form.checkArguments";#可省略參數:#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。#$conf["canBeEmptyString"]="false";#$conf["form.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["form.checkArguments"]["skipableVariableName"][]="class";$conf["form.checkArguments"]["skipableVariableName"][]="outputValue";$conf["form.checkArguments"]["skipableVariableName"][]="comment";$conf["form.checkArguments"]["skipableVariableName"][]="disableHr";$conf["form.checkArguments"]["skipableVariableName"][]="jsActivitor";$conf["form.checkArguments"]["skipableVariableName"][]="jsAction";$conf["form.checkArguments"]["skipableVariableName"][]="trStart";$conf["form.checkArguments"]["skipableVariableName"][]="trClass";$conf["form.checkArguments"]["skipableVariableName"][]="tdStart";$conf["form.checkArguments"]["skipableVariableName"][]="tdClass";$conf["form.checkArguments"]["skipableVariableName"][]="tdEnd";$conf["form.checkArguments"]["skipableVariableName"][]="trEnd";$conf["form.checkArguments"]["skipableVariableName"][]="brBetweenOption";$conf["form.checkArguments"]["skipableVariableName"][]="defaultValue";#$conf["form.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="array";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";$conf["form.checkArguments"]["skipableVariableType"][]="string";#$conf["form.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["form.checkArguments"]["skipableVarDefaultValue"][]="__qbpwcf_inputRadioWithoutBorder";$conf["form.checkArguments"]["skipableVarDefaultValue"][]="\$conf[\"sendValue\"]";$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["form.checkArguments"]["skipableVarDefaultValue"][]="false";$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;$conf["form.checkArguments"]["skipableVarDefaultValue"][]="false";$conf["form.checkArguments"]["skipableVarDefaultValue"][]="__qbpwcf_inputRadioWithoutBorder";$conf["form.checkArguments"]["skipableVarDefaultValue"][]="false";$conf["form.checkArguments"]["skipableVarDefaultValue"][]="__qbpwcf_inputRadioWithoutBorder";$conf["form.checkArguments"]["skipableVarDefaultValue"][]="false";$conf["form.checkArguments"]["skipableVarDefaultValue"][]="false";$conf["form.checkArguments"]["skipableVarDefaultValue"][]="true";$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;$checkResult=variableCheck::checkArguments($conf["form.checkArguments"]);unset($conf["form.checkArguments"]);#如果$checkResult["status"] 等於 "false"#意即如果檢查出錯if($checkResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果$checkResult["passed"] 等於 "false"#意即如果檢查出錯if($checkResult["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果其值爲 trueif($conf["trStart"]=="true"){#函式說明:#列開始#回傳結果:#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.#$result["error"],函式錯誤訊息陣列.#$result["content"],列開始的語法.#$result["function"],當前執行的函式名稱.#必填寫的參數:$conf["table"]["trStart"]["class"]=$conf["trClass"];#該 tr 要套用套用的 css 樣式若爲 "" 則會採用預設的css樣式 __defaultTrCsssStyle,其屬性爲 border:1px solid blue$trStart=table::trStart($conf["table"]["trStart"]);unset($conf["table"]["trStart"]);#如果列開始失敗if($trStart["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$trStart;#回傳結果return $result;}#if end#串接列開始$result["content"]=$result["content"].$trStart["content"];}#if end#如果其值爲 trueif($conf["tdStart"]=="true"){#函式說明:#行開始#回傳結果:#$result,行開始的語法#必填寫的參數:$conf["table"]["tdStart"]["class"]=$conf["tdClass"];#該 td 要套用套用的 css 樣式#預設的樣式#"border-width","border","border-color","border-style","margin-right","margin-left"#"100%","1px","#0000FF","solid","auto","auto"$tdStart=table::tdStart($conf["table"]["tdStart"]);unset($conf["table"]["tdStart"]);#如果 欄開始 失敗if($tdStart["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$tdStar;#回傳結果return $result;}#if end#串接欄開始$result["content"]=$result["content"].$trStart["content"];}#if end#如果$conf["defaultValue"]沒有設定if(!isset($conf["defaultValue"])){#則$conf["defaultValue"]爲""$conf["defaultValue"]="";}#if end#如果$conf["outputValue"]沒設定if(!isset($conf["outputValue"])){#則$conf["outputValue"]陣列內容將會等於$conf["sendValue"]陣列內容$conf["outputValue"]=$conf["sendValue"];}#if end#暫存給註解用的css樣式$commentCssStyle="";#如果爲 "__withBorder"if($conf["class"]=="__withBorder"){#變更爲有框線的預設樣式$conf["class"]="__withBorderInputRadioCssStyle";#取得註解要用的css樣式$commentCssStyle=$conf["class"];}#if ned#如果爲 "__withoutBorder"if($conf["class"]=="__withoutBorder"){#變更爲有框線的預設樣式$conf["class"]="__withoutBorderInputRadioCssStyle";#取得註解要用的css樣式$commentCssStyle=$conf["class"];}#if ned#則按照設定值$conf["class"]=" class = ".$conf["class"]." ";#如果 $conf["jsActivitor"] 與 $conf["jsAction"] 皆有設定if( isset($conf["jsActivitor"]) && isset($conf["jsAction"]) ){#則將設定值組合$conf["jsCustom"]=" ".$conf["jsActivitor"]."=".$conf["jsAction"]." ";}#if end#如果 $conf["jsCustom"] 沒有設定if(!isset($conf["jsCustom"])){#將其設爲空值$conf["jsCustom"]="";}#if end#將有幾個選項的數目放進 $count$count=count($conf["sendValue"]);#套用css樣式$result["content"]=$result["content"]."<span ".$conf["class"]." >";#過濾 $conf["name"] 避免錯誤#函式說明:#處理字串避免網頁出錯#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["content"],爲處理好的字串.#$result["error"],錯誤訊息陣列.#必填參數:$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["name"];#爲要處理的字串#可省略的參數:$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);unset($conf["stringProcess::correctCharacter"]);#如果過濾字串失敗if($correctCharacter["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$correctCharacter;#回傳結果return $result;}#if end#置換過濾好了的$conf["name"]$conf["name"]=$correctCharacter["content"];#n個選項跑n此for($i=0;$i<=($count-1);$i++){#如果選項的數值等於 預設的數值if($conf["sendValue"][$i]==$conf["defaultValue"]){#則選取該選項$result["content"]=$result["content"]."<label><input type = \"radio\" name = ".$conf["name"]." value = ".$conf["sendValue"][$i]." checked ".$conf["jsCustom"]." >".$conf["outputValue"][$i]."</label>";}#if end#反之else{#選項的值等於現在畫面上的值$result["content"]=$result["content"]."<label><input type = \"radio\" name = ".$conf["name"]." value = ".$conf["sendValue"][$i]." ".$conf["jsCustom"]." >".$conf["outputValue"][$i]."</label>";}#else end#如果 $conf["brBetweenOption"] 等於 "true"if(($conf["brBetweenOption"]=="true")){#加上<br>標籤$result["content"]=$result["content"]."<br>";}#if end}#for end#套用css樣式的範圍結束$result["content"]=$result["content"]."</span ".$conf["class"]." >";#如果 不使用<hr> 的變數不存在if(!isset($conf["disableHr"])){#則印出<hr>進行分割,以便放置下一個radioButton$result["content"]=$result["content"]."<hr width = 0>";}#if end#如果其值爲 trueif($conf["tdEnd"]=="true"){#串接欄結束$result["content"]=$result["content"]."</td>";}#if end#如果其值爲 trueif($conf["trEnd"]=="true"){#串接列結束$result["content"]=$result["content"]."</tr>";}#if end#如果 $conf["comment"] 存在if(isset($conf["comment"])){#給註解套上css樣式#函式說明:#<span>區塊,裡面可以指定css的class樣式,可以指定提示文字.#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.#$result["functin"],字串,當前函數的名稱.#$result["error"],陣列,錯訊訊息.#$result["content"],字串,含有<span>標籤的內容.#必填參數:#$conf["contentArray"],字串陣列,要放入的內容陣列.$conf["css::spanSection"]["contentArray"]=array($conf["comment"]);#可省略參數#$conf["css::spanSection"]["class"],字串,div區段要套用的css樣式.$conf["css::spanSection"]["class"]=$commentCssStyle;#$conf["title"],陣列,滑鼠移到上面時要顯示的內容,每個元素代表一列內容#$conf["title"]=array();$spanSection=css::spanSection($conf["css::spanSection"]);unset($conf["css::spanSection"]);#若建立 spanSection 失敗if($spanSection["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$spanSection;#回傳結果return $result;}#if end#加上註解$result["content"]=$spanSection["content"]."<br>".$result["content"];}#if end#設置執行正常$result["status"]="true";#回傳語法return $result;}#function inputRadio end/*#函式說明:#勾選式選單(複選)#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表失敗.#$result["error"],錯誤訊息陣列.#$result["content"],語法內容.#$result["function"],當前執行的函式.#必填參數:$conf["name"]=array();#爲勾選式選單傳送時的各選項的名稱。例如:$conf["name"]=array("q-1","q-2","q-3","q-4","q-5");$conf["sendValue"]=array();#爲陣列值,為勾選式選單實際傳送的內容.例如:$conf["sendValue"]=array("a","b","c","d","e");#可省略參數:#$conf["class"]=;#爲要套用的class樣式,預設為"__inputCheckBoxCssStyle",其樣式為"font-size:30px;text-align:center;"#$conf["outputValue"]=array();#爲陣列值,爲每個選項的實際顯示的數值, e.g. $conf["outputValue"] = array("p","o","i","t","e"); 預設爲跟$conf["sendValue"]一樣。#$conf["checkedOption"]=array();#爲那些選項是否要勾選,須爲陣列值。例如array("1","3","4"),就代表第1、3、4個選項是勾選的狀態。#$conf["comment"]="";#為選單的註解#$conf["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。#$conf["jsAction"]="";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。#$conf["formName"]="";#爲表單的名稱#$conf["formAction"]="";#爲表單要送到哪個php檔案。#$conf["actionTarget"]="";#爲表單處理好後的呈現方式,有_top,_self,_blank,_parent,元素名稱也可以,預設為"_self"#$conf["hiddenVar"],字串陣列,隱藏的變數名稱陣列.#$conf["hiddenVar"]=array("");#$conf["hiddanVarValue"],字串陣列,隱藏變數的數值內容.#$conf["hiddenVarValue"]=array("");#$conf["formEnd"]="false";#爲是否要表單結束,預設爲"false".#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設爲"false".#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是",也可以看成列裏面的元素開始,預設爲"false".#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設爲"false".#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設爲"false".#$conf["brBetweenOption"]="true";#是否每個選項用<br>標籤隔開,"true"為要,預設爲"false".#參考資料:#無.#備註:#每個選項傳送的內容,修改成預設爲"true".*/public static function inputCheckBox(&$conf){#預設要回傳的數值$result=array();#設置當前執行的函式$result["function"]=__FUNCTION__;#初始化要回傳的語法$result["content"]="";#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck.checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("name","sendValue");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("array","array");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";#可省略參數:#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="true";#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("class","outputValue","checkedOption","comment","jsActivitor","jsAction","formName","formAction","actionTarget","trStart","tdStart","tdEnd","trEnd","brBetweenOption","hiddenVar","hiddenVarValue","formEnd");#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","array","array","string","string","string","string","string","string","string","string","string","string","string","array","array","string");#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array("__qbpwcf_inputCheckBoxCssStyle","\$conf[\"sendValue\"]",null,null,null,null,null,null,"_self","false","false","false","false","true",null,null,"false");$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);unset($conf["variableCheck.checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果 $conf["formAction"] 有設定if(isset($conf["formAction"])){#如果 $conf["actionTarget"] 有設定if(isset($conf["actionTarget"])){#指派設定值$conf["form"]["start"]["target"]=$conf["actionTarget"];}#if end#如果 $conf["formName"] 沒有設置if(!isset($conf["formName"])){#預設爲空數值$conf["form"]["start"]["formName"]=" ";}#if end#函式說明:#表單開始#回傳結果:#$result,表單開始的語法#必填參數:$conf["form"]["start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容#可省略參數:#$conf["form"]["start"]["name"]=$conf["formName"];#爲該表單的名稱#$conf["method"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。#$conf["form"]["start"]["target"]=$conf["actionTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是;#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100%$formStart=form::start($conf["form"]["start"]);unset($conf["form"]["start"]);#如果表單開始失敗if($formStart["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$formStart;#回傳結果return $result;}#if end#串接表單開始$result["content"]=$result["content"].$formStart["content"];}#if end#如果 $conf["hiddenVar"]與$conf["hiddenVarValue"]皆有設置if(isset($conf["hiddenVar"]) && isset($conf["hiddenVarValue"])){#且陣列元素數目相同if(count($conf["hiddenVar"])==count($conf["hiddenVarValue"])){#建立隱藏的表單#傳送多個隱藏表單的資訊#回傳的數值:#$result,語法#$result["sendedArrayName"],#$result["sendedArrayValue"],#$result["sendedArrayCount"],#必填參數:$conf["form"]["inputMutiHidden"]["nameArray"]=$conf["hiddenVar"];#欲傳送的隱藏陣列變數名稱$conf["form"]["inputMutiHidden"]["valueArray"]=$conf["hiddenVarValue"];#欲傳送的隱藏陣列變數數值$inputMultiHidden=form::inputMultiHidden($conf["form"]["inputMutiHidden"])["content"];unset($conf["form"]["inputMutiHidden"]);#建立隱藏的表單失敗if($inputMultiHidden["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$inputMultiHidden;#回傳結果return $result;}#if end#串接隱藏的表單$result["content"]=$result["content"].$inputMultiHidden;}#if end}#if end#如果其值爲 trueif($conf["trStart"]=="true"){#串接列開始$result["content"]=$result["content"]."<tr>";}#if end#如果其值爲 trueif($conf["tdStart"]=="true"){#串接欄開始$result["content"]=$result["content"]."<td>";}#if end#如果$conf["outputValue"]沒設定if(!isset($conf["outputValue"])){#則$conf["outputValue"]陣列內容將會等於$conf["sendValue"]陣列內容$conf["outputValue"]=$conf["sendValue"];}#if end#如果$conf["class"]沒設定if(!isset($conf["class"])){#則$conf["class"]爲空$conf["class"]="";}#if end#如果有$conf["class"]有設定else{#則按照設定值$conf["class"]=" class=".$conf["class"];}#else end#如果 $conf["jsActivitor"] 與 $conf["jsAction"] 皆有設定if( isset($conf["jsActivitor"]) && isset($conf["jsAction"]) ){#則將設定值組合$conf["jsCustom"]=" ".$conf["jsActivitor"]."=".$conf["jsAction"]." ";}#if end#如果 $conf["jsCustom"] 沒有設定if(!isset($conf["jsCustom"])){#將其設爲空值$conf["jsCustom"]="";}#if end#將有幾個選項的數目放進 $count$count=count($conf["sendValue"]);#如果 $conf["comment"] 有設定if(isset($conf["comment"])){#一開始先擺註解$result["content"]=$result["content"]."<span ".$conf["class"].">".$conf["comment"]."</span><br>";}#if end#有幾個選項就執行幾次for($i=0;$i<$count;$i++){#如果 $conf["checkedOption"] 參數存在if(isset($conf["checkedOption"])){#檢查多個數值,是否與陣列裏面的某些元素相同。#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數#$result["error"],函式錯誤訊息,若爲""則表示沒有錯誤#$result["founded"][$i],若爲"false"代表沒有相同的元素;反之"true"代表有相同的元素,$i爲第i+1個參數判斷後的結果。#必填參數:$conf_checkEquality["inputElement"]=array($i+1);#爲要進行比對的變數/數值。$conf_checkEquality["blackBoxElement"]=$conf["checkedOption"];#爲用來比對的變數/數值陣列$result_checkEquality=search::checkEquality($conf_checkEquality);unset($conf_checkEquality);#如果檢查失敗if($result_checkEquality["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$result_checkEquality;#回傳結果return $result;}#if end#如果 $result_checkEquality"founded"][$i] 存在if(isset($result_checkEquality["founded"][0])){#如果該選項是要勾選的if($result_checkEquality["founded"][0]=="true"){#選取$checked=" checked ";}#if end#反之else{#不選取$checked="";}#else end}#if end#反之else{#不選取$checked="";}#else end}#if end#反之else{#不選取$checked="";}#else end#放置勾選式表單$result["content"]=$result["content"]."<label><input type = \"checkbox\" name = ".$conf["name"][$i]." value = ".$conf["sendValue"][$i]." ".$conf["class"]." ".$checked." ".$conf["jsCustom"]." >" ."<span ".$conf["class"].">".$conf["outputValue"][$i]."</span>"."</label>";#如果 $conf["brBetweenOption"] 有設定if(isset($conf["brBetweenOption"])){#如果 $conf["brBetweenOption"] 等於 "true"if($conf["brBetweenOption"]=="true"){#如果不是最後一個選項if($i!=$count-1){#加上<br>標籤$result["content"]=$result["content"]."<br>";}#if end}#if end}#if end}#for end#如果其值爲 trueif($conf["tdEnd"]=="true"){#串接欄結束$result["content"]=$result["content"]."</td>";}#if end#如果其值爲 trueif($conf["trEnd"]=="true"){#串接列結束$result["content"]=$result["content"]."</tr>";}#if end#如果 $conf["formAction"] 有設定if(isset($conf["formAction"])){#如果有設置 $conf["formEnd"]if(isset($conf["formEnd"])){#如果 $conf["formEnd"] 設爲 "true"if($conf["formEnd"]=="true"){#函式說明:#表單結束#回傳結果:#$result,表單結束的語法#必填參數:$conf["form"]["end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。$formEnd=form::end($conf["form"]["end"]);unset($conf["form"]["end"]);#如果表單結束失敗if($formEnd["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$formEnd;#回傳結果return $result;}#if end#串接表單結束$result["content"]=$result["content"].$formEnd["content"];}#if end}#if end}#if end#反之沒有設置$conf["formAction"]else{#如果 $conf["formEnd"] 設爲 "true"if($conf["formEnd"]=="true"){#函式說明:#表單結束#回傳結果:#$result,表單結束的語法#必填參數:$conf["form"]["end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。$formEnd=form::end($conf["form"]["end"]);unset($conf["form"]["end"]);#如果表單結束失敗if($formEnd["status"]==="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$formEnd;#回傳結果return $result;}#if end#串接表單結束$result["content"]=$result["content"].$formEnd["content"];}#if end}#else end#設置執行成功$result["status"]="true";#回傳結果return $result;}#function inputCheckBox end/*#函式說明:#隱藏的表單傳送資訊#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息#$result["content"],語法#$result["function"],當前執行的函數名稱#必填參數:$conf["name"]="";#隱藏的表單名稱$conf["value"]="";#等於要傳送的數值#可省略參數:#無.#參考資料:#無.#備註:#無.*/public static function inputHidden($conf){#初始化要回傳的變數$result=array();#設置當前執行的函式$result["function"]=__FUNCTION__;#初始化表單開始的語法$result["content"]="";#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("name","value");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。#$conf["canBeEmptyString"]="false";#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");#$conf["skipableVariableName"]=array();#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");#$conf["skipableVariableType"]=array();#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".#$conf["skipableVarDefaultValue"]=array("");#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查參數失敗if($checkResult["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查參數不通過if($checkResult["passed"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$checkResult;#回傳結果return $result;}#if end#放置隱藏的表單$result["content"]="<input type = hidden name = ".$conf["name"]." value = \"".$conf["value"]."\">";#執行到這邊代表執行正常$result["status"]="true";#回傳結果return $result;}#function inputHidden end/*#函式說明:#傳送多個隱藏表單的資訊#回傳的數值:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列#$result["function"],當前執行的函數#$result["content"],語法#$result["sendedArrayName"],傳送的隱藏變數陣列#$result["sendedArrayValue"],傳送的隱藏變數陣列數值#$result["sendedArrayCount"],傳送的隱藏變數計數#必填參數:$conf["nameArray"]=array("");#欲傳送的隱藏陣列變數名稱$conf["valueArray"]=array("");#欲傳送的隱藏陣列變數數值#可省略參數:#無.#參考資料:#無.#備註:#無.*/public static function inputMultiHidden(&$conf){#預設要回傳的數值$result=array();#設置當前執行的函數$result["function"]=__FUNCTION__;#初始化要回傳的語法$result["content"]="";#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck.checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("nameArray","valueArray");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("array","array");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";#可省略參數:#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="true";#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");#$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("width","maxInputLength","defaultValue","class","jsActivitor","jsAction","trStart","tdStart","tdEnd","trEnd","comment","placeholder");#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");#$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string","string","string","string","string","string");#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array(null,null,null,"__inputPasswordCssStyle",null,null,"false","false","false","false",null,null);#$conf["variableCheck.checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.$conf["variableCheck.checkArguments"]["arrayCountEqualCheck"][]=array("nameArray","valueArray");$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);unset($conf["variableCheck.checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#透過foreach建立陣列#將陣列的key重新排序,然後回傳,以便後續存取,也可以指定key的內容,但一定要跟元素數量相同。#回傳的解果:#$result["status"],執行是否成功,"true"代表成功,"false"代表失敗.#$result["error"],執行錯誤的訊息.#$result["function"],當前執行的函數名稱.#$result["dataContent"],儲存陣列元素的內容.#必填參數:$conf_createV2["arrayContent"]=$conf["nameArray"];#陣列元素的value,須爲陣列值。#可省略的參數:#$conf["arrayCounts"]="";#爲陣列的元素有幾個,若沒設定,則數量爲$conf["arrayContent"]裏的元素數量#$conf["theSameAs"]="true";#若設爲"true",則所有元素內容都跟第一個元素內容相同$result_nameArray=arrays::createV2($conf_createV2);unset($conf_createV2);#如果重新排序陣列失敗if($result_nameArray["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$result_nameArray;#回傳結果return $result;}#if end#透過foreach建立陣列#將陣列的key重新排序,然後回傳,以便後續存取。#回傳的解果:#$result["status"],執行是否成功,"true"代表成功,"false"代表失敗.#$result["error"],執行錯誤的訊息.#$result["function"],當前執行的函數名稱.#$result["dataContent"],儲存陣列元素的內容.#必填參數:$conf_createV2["arrayContent"]=$conf["valueArray"];#陣列元素的value,須爲陣列值。#可省略的參數:#$conf["arrayCounts"]="";#爲陣列的元素有幾個,若沒設定,則數量爲$conf["arrayContent"]裏的元素數量#$conf["theSameAs"]="true";#若設爲"true",則所有元素內容都跟第一個元素內容相同$result_valueArray=arrays::createV2($conf_createV2);unset($conf_createV2);#如果重新排序陣列失敗if($result_valueArray["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$result_valueArray;#回傳結果return $result;}#if end#有幾個要傳送的元素就執行幾次for($i=0;$i<count($conf["nameArray"]);$i++){#隱藏的表單傳送資訊#必填參數:$conf_inputHidden["name"]=$result_nameArray["dataContent"][$i];#隱藏的表單名稱$conf_inputHidden["value"]=$result_valueArray["dataContent"][$i];#等於要穿送的數值$inputHidden=form::inputHidden($conf_inputHidden);unset($conf_inputHidden);#如果建立隱藏的表單失敗if($inputHidden["status"]=="false"){#設置錯誤$result["status"]="false";#設置錯誤訊息$result["error"]=$inputHidden;#回傳結果return $inputHidden;}#if end#串接 隱藏的表單$result["content"]=$result["content"].$inputHidden["content"];}#for end#設置執行正常$result["status"]="true";#回傳結果return $result;}#function inputMutiHidden end/*#函式說明:#簡單的控制面板,可以點選"新增"、"回上頁"的簡易面板#回傳的結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息#$result["content"],控制面板的語法#$result["function"],當前執行的函數名稱#必填參數:$conf["addActionPage"]="";#不可省略,爲新增表單要交給那個頁面處理,屬性內容爲網頁位置。$conf["goBackActionPage"]="";#不可省略,爲回上頁的目的地,屬性內容爲網頁位置。#可省略參數:#$conf["addActionPresentPage"]="";#可省略,爲新增表單的處理頁面要在那邊出現,可以用的數值有 _self (面板所處的頁面) _parent (父頁面) _blank (新視窗) 頁框名稱,預設爲_self#$conf["addButtonName"]="";#可省略,預設爲"新增",爲新增表單的按鈕顯示名稱,屬性內容爲字串。#$conf["addButtonStyleName"]="";#可省略,爲新增表單的按鈕css樣式,屬性內容爲 css 的類別名稱。#$conf["goBackActionPresentPage"]="";#可省略,爲回上頁的目的地的頁面要在那邊出現,可以用的數值有 _self (面板所處的頁面) _parent (父頁面) _blank (新視窗) 頁框名稱,預設爲_self#$conf["goBackButtonName"]="";#可省略,預設爲"回上頁",爲回上頁的按鈕顯示名稱,屬性內容爲字串。#$conf["goBackButtonStyleName"]="";#可省略,爲回上頁按鈕的css樣式,屬性內容爲 css 的類別名稱。#參考資料:#無.#備註:#無.*/public static function simpleControlPanel($conf){#初始化要回傳的內容$result=array();#設置當前執行的函數$result["function"]=__FUNCTION__;#初始化content樣式內容$result["content"]="";#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck.checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("addActionPage","goBackActionPage");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string","string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";#可省略參數:#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("addActionPresentPage","addButtonName","addButtonStyleName","goBackActionPresentPage","goBackButtonName","goBackButtonStyleName");#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string");#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array("_self","新增","__simpleButtonLinkDefaultButtonCssStyle","_self","回上頁","__simpleButtonLinkDefaultButtonCssStyle");$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);unset($conf["variableCheck.checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#新增的按鈕#函式說明:#放置按鈕#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["content"],按鈕語法.#必填參數:$conf["form::button"]["buttonDisplayValue"]=$conf["addButtonName"];#爲按鈕上顯示的文字。#可省略參數:$conf["form::button"]["buttonStyleName"]=$conf["addButtonStyleName"];#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __simpleButtonLinkDefaultButtonCssStyle 。#其屬性爲 "width","height","font-size","text-align"#其屬性值爲 "100%" , "50" , "30" , "center"#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。#"document.forms.formName.submit()"爲傳送名爲testForm的表單內容#"window.print()"爲使用瀏覽器內建工具列印當前網頁#$conf["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".#$conf["tableStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"false"。#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",亦即沒有框線的樣式;"__withBorder"則爲有框線的樣式#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".#$conf["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是,預設爲"false"。$conf["form::button"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".$conf["form::button"]["action"]=$conf["addActionPage"];#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用$conf["form::button"]["target"]=$conf["addActionPresentPage"];#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用$conf["form::button"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".#參考資料:#http://stackoverflow.com/questions/3014649/how-to-disable-html-button-using-javascript$addButton=form::button($conf["form::button"]);unset($conf["form::button"]);#如果建立新增按鈕失敗if($addButton["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$addButton;#回傳結果return $result;}#if end#回前頁的按鈕#函式說明:#放置按鈕#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["content"],按鈕語法.#必填參數:$conf["form::button"]["buttonDisplayValue"]=$conf["goBackButtonName"];#爲按鈕上顯示的文字。#可省略參數:$conf["form::button"]["buttonStyleName"]=$conf["goBackButtonStyleName"];#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __simpleButtonLinkDefaultButtonCssStyle 。#其屬性爲 "width","height","font-size","text-align"#其屬性值爲 "100%" , "50" , "30" , "center"#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。#"document.forms.formName.submit()"爲傳送名爲testForm的表單內容#"window.print()"爲使用瀏覽器內建工具列印當前網頁#$conf["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".#$conf["tableStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"false"。#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",亦即沒有框線的樣式;"__withBorder"則爲有框線的樣式#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".#$conf["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是,預設爲"false"。$conf["form::button"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".$conf["form::button"]["action"]=$conf["goBackActionPage"];#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用$conf["form::button"]["target"]=$conf["goBackActionPresentPage"];#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用$conf["form::button"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".#參考資料:#http://stackoverflow.com/questions/3014649/how-to-disable-html-button-using-javascript$backButton=form::button($conf["form::button"]);unset($conf["form::button"]);#如果建立回上頁按鈕失敗if($backButton["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$backButton;#回傳結果return $result;}#if end#函式說明:#建立列的元素,以及指定裏面要放什麼內容#回傳的變數:#$result["status"],執行是否正常,"true"為正常,"false"為不正常.#$result["error"],錯誤訊息陣列.#$result["function"],當前執行的函數名稱.#$result["content"],建立列元素的語法.#必填參數:$conf["table"]["printRow"]["trClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式$conf["table"]["printRow"]["tdClass"]="__withoutBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式$conf["table"]["printRow"]["tdContent"]=array($backButton["content"],$addButton["content"]);#列裏面要放的元素是?如果要空一列則可以輸array(" ")#可省略參數:$conf["table"]["printRow"]["tableStartClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式#$conf["tableBorder"]="1px";#表格的厚度預設為"1px"$conf["table"]["printRow"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。$conf["table"]["printRow"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。#$conf["formStart"]="true";#是否要有表單的開始#$conf["formName"]="";#該表單的名稱#$conf["formAction"]="";#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置#$conf["formTarget"]="_self";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["formEnd"]="true";#是否要有表單的結束$printRow=table::printRow($conf["table"]["printRow"]);unset($conf["table"]["printRow"]);#如果建立一列表格失敗if($printRow["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$printRow;#回傳結果return $result;}#if end#串接一列表格$result["content"]=$result["content"].$printRow["content"];#設置執行成功$result["status"]="true";#回傳結果return $result;}#函式 simpleControlPanel 結束/*#函式說明:#移除東西的確認視窗.#回傳結果:#$result["status"],執行是否正常,"true"代表正常;"false"代表有問題#$reuslt["error"],錯誤訊息陣列#$result["function"],當前執行的函數名稱#$result["content"],語法#必填參數:$conf["itemName"]="";#爲要刪除的物件提示名稱,格式爲字串。$conf["cancleActionPage"]="";#爲按下取消按鈕後,要交給那個頁面處理。$conf["removeActionPage"]="";#爲移除按鈕傳送的內容要交給哪一個頁面處理。#可省略參數:#$conf["itemNameFontColor"]="";#可省略預設爲 "#000000"(黑色),爲要刪除物件提示名稱文字的字型顏色,格式範圍爲 #000000~#FFFFFF。#$conf["dbAddress"]=$dbAddress;#資料庫的位置.#$conf["dbName"]=$dbName;#連線到資料庫的名稱.#$conf["dtName"]="";#目標資料所屬資料表名稱.#$conf["dbAccount"]=$dbAccount;#連線到資料庫的帳號名稱.#$conf["dbPassword"]=$dbPassword;#連線到資料庫的帳號密碼.#$conf["indexColumnName"]="id";#用於識別要移除資料的索引鍵欄位名稱,預設為"id".#$conf["indexColumnValue"]="";#用於識別要移除資料的索引鍵欄位數值內容。#$conf["columnForComment"]=array();#陣列字串,為要從資料庫取出作為要除物件的提示文字的資料表欄位名稱陣列。#$conf["commentsName"]=array();#陣列字串,為要從資料庫取出作為要除物件的提示文字的資料表欄位名的顯示名稱,預設跟 $conf["columnForComment"] 一樣.#$conf["cancleActionDisplayMethod"]="";#可省略,預設爲"_top",爲按下取消按鈕後,交給的處理的頁面要怎麼顯現,類型爲字串,可能值有 "_top" "_self" "_blank" "_blank"#$conf["cancleButtonStyle"]="";#可省略,爲取消鈕的css樣式類別名稱,預設為"__qbpwcf_button".#$conf["cancleButtonDisplayName"]="";#可省略,預設爲"取消",爲取消鈕的顯示名稱。#$conf["cancleSendingVarName"]=array("");#爲按下取消按鈕後要傳送的數值名稱#$conf["cancleSendingVarValue"]=array("");#爲按下取消按鈕後要傳送的數值內容#$conf["removeActionDisplayMethod"]="";#可省略預設爲"_top",爲處理移除內容的頁面要如何顯現,類型爲字串,可能值有 "_top" "_self" "_blank" "_blank"#$conf["removeButtonStyle"]="";#可省略,爲移除按鈕的css樣式類別名稱,,預設為"__qbpwcf_button".#$conf["removeButtonDisplayName"]="";#可省略,預設爲"確認移除",爲移除按鈕的顯示文字內容#$conf["removeSendingVarName"]=array("");#爲按下移除按鈕後要傳送的數值名稱#$conf["removeSendingVarValue"]=array("");#爲按下移除按鈕後要傳送的數值內容#參考資料:#無.#備註:#建議參數 $conf["indexColumnName"] 與 $conf["indexColumnValue"] 的形態為字串陣列,以便擁有更多限制條件取得需要的資料.*/public static function removeConfirm(&$conf){#初始化要回傳的內容$result=array();#初始化要回傳的語法$result["content"]="";#記錄當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數:#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("itemName","cancleActionPage","removeActionPage");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string");#可省略參數:#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array();$conf["variableCheck::checkArguments"]["skipableVariableName"][]="dbAddress";$conf["variableCheck::checkArguments"]["skipableVariableName"][]="dbName";$conf["variableCheck::checkArguments"]["skipableVariableName"][]="dbAccount";$conf["variableCheck::checkArguments"]["skipableVariableName"][]="dbPassword";$conf["variableCheck::checkArguments"]["skipableVariableName"][]="dtName";$conf["variableCheck::checkArguments"]["skipableVariableName"][]="indexColumnName";$conf["variableCheck::checkArguments"]["skipableVariableName"][]="indexColumnValue";$conf["variableCheck::checkArguments"]["skipableVariableName"][]="columnForComment";$conf["variableCheck::checkArguments"]["skipableVariableName"][]="commentsName";$conf["variableCheck::checkArguments"]["skipableVariableName"][]="itemNameFontColor";$conf["variableCheck::checkArguments"]["skipableVariableName"][]="cancleButtonDisplayName";$conf["variableCheck::checkArguments"]["skipableVariableName"][]="cancleActionDisplayMethod";$conf["variableCheck::checkArguments"]["skipableVariableName"][]="cancleButtonStyle";$conf["variableCheck::checkArguments"]["skipableVariableName"][]="cancleSendingVarName";$conf["variableCheck::checkArguments"]["skipableVariableName"][]="cancleSendingVarValue";$conf["variableCheck::checkArguments"]["skipableVariableName"][]="removeButtonDisplayName";$conf["variableCheck::checkArguments"]["skipableVariableName"][]="removeActionDisplayMethod";$conf["variableCheck::checkArguments"]["skipableVariableName"][]="removeButtonStyle";$conf["variableCheck::checkArguments"]["skipableVariableName"][]="removeSendingVarName";$conf["variableCheck::checkArguments"]["skipableVariableName"][]="removeSendingVarValue";#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array();$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";$conf["variableCheck::checkArguments"]["skipableVariableType"][]="array";$conf["variableCheck::checkArguments"]["skipableVariableType"][]="array";$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";$conf["variableCheck::checkArguments"]["skipableVariableType"][]="array";$conf["variableCheck::checkArguments"]["skipableVariableType"][]="array";$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";$conf["variableCheck::checkArguments"]["skipableVariableType"][]="array";$conf["variableCheck::checkArguments"]["skipableVariableType"][]="array";#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array();$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="id";$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="\$conf[\"columnForComment\"]";$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="#000000";$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="取消";$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="_top";$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="__qbpwcf_button";$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="確認移除";$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="_top";$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="__qbpwcf_button";$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查出錯if($checkResult["status"]=="false"){#設置執行錯誤$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行錯誤$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#取消移除的按鈕#函式說明:#一個簡單的按鈕,按了可以到指定的頁面,同時也可以傳送多個隱藏的變數#回傳的結果#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列#$result["function"],當前執行的函數名稱.#$result["content"],語法內容#必填參數:$conf["form::sendHugeDataButton"]["buttonDisplayValue"]=$conf["cancleButtonDisplayName"];#按鈕上要顯示的文字#可省略參數:$conf["form::sendHugeDataButton"]["buttonStyleName"]=$conf["cancleButtonStyle"];#按鈕的css樣式應該爲何,若省略的話預設會採用 __simpleButtonLinkDefaultButtonCssStyle 的樣式,其設定為"width:100%;height:50;font-size:30;text-align:center;#如果 $conf["cancleSendingVarName"] 有存在if(isset($conf["cancleSendingVarName"])){$conf["form::sendHugeDataButton"]["hiddenVarName"]=$conf["cancleSendingVarName"];#要傳送的隱藏變數名稱,與 $conf["hiddenVarContent"] 相對應。}#if end#如果 $conf["cancleSendingVarValue"] 有設定if(isset($conf["cancleSendingVarValue"])){$conf["form::sendHugeDataButton"]["hiddenVarContent"]=$conf["cancleSendingVarValue"];#要傳誦的隱藏變數內容,與 $conf["hiddenVarName"] 相對應。}#if end#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".$conf["form::sendHugeDataButton"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設爲"false".#$conf["form::sendHugeDataButton"]["method"]=;#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。#$conf["formName"]="";#該表單的名稱$conf["form::sendHugeDataButton"]["actionPage"]=$conf["cancleActionPage"];#按鈕按了之後要到哪個地方?若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面。#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。#可以是"document.forms.formName.submit()"(傳送名爲testForm的表單內容).$conf["form::sendHugeDataButton"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設爲"false"#$conf["tableStart"]="true";#爲是否要表格開始,"true"表示"是",預設為"false".#$conf["tableClass"]="__withoutBorder";#爲表格要採用的css樣式名稱,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder".#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".#$conf["trClass"]="__withoutBorder";#列開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder"#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false"#$conf["tdClass"]="__withoutBorder";#行開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder"#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".$conf["form::sendHugeDataButton"]["displayTarget"]=$conf["cancleActionDisplayMethod"];#頁面的呈現方法,可以是開新視窗(_blank)、在目前頁面、頁框裏面(_self)、在父頁面(_parent)、最上層頁面(_top),預設為"_top"。#$conf["tableEnd"]="true";#爲是否要表格結束,"true"表示"是",預設為"false".$cancleButton=form::sendHugeDataButton($conf["form::sendHugeDataButton"]);unset($conf["form::sendHugeDataButton"]);#如果取消按鈕建立失敗if($cancleButton["status"]==="false"){#設置執行錯誤$result["status"]="false";#設置錯誤訊息$result["error"]=$cancleButton;#回傳結果return $result;}#if end#串接取消按鈕的語法$conf["table.printColumn"]["tdContent"][]=$cancleButton["content"];#創建提示文字的css樣式#函式說明:#創建 css 樣式#回傳結果:#$result["css"],css設定內容#$result["error"],函式錯誤訊息,若爲""則表示沒有錯誤#必填參數:$conf["css.createCssStyle"]["cssStyleName"]="__removeConfiremStrCssStyle";#為該 css 樣式的名稱,不能以數字開頭。$conf["css.createCssStyle"]["attributes"]=array("text-align","font-size","color");#為屬性名稱,須為陣列值$conf["css.createCssStyle"]["content"]=array("center","30px",$conf["itemNameFontColor"]);#為屬性值,須為陣列值$css=css::createCssStyle($conf["css.createCssStyle"]);unset($conf["css.createCssStyle"]);#如果css樣式建立失敗if($css["status"]=="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$css;#回傳結果return $result;}#if end#傳接css語法$result["content"]=$result["content"].$css["content"];#確認移除的文字#函式說明:#<span>區塊,裡面可以指定css的class樣式,可以指定提示文字.#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.#$result["functin"],字串,當前函數的名稱.#$result["error"],陣列,錯訊訊息.#$result["content"],字串,含有<span>標籤的內容.#必填參數:#$conf["contentArray"],字串陣列,要放入的內容陣列.$conf["css::spanSection"]["contentArray"]=array("您確定要移除該 「".$conf["itemName"]."」 嗎?");#可省略參數#$conf["class"],字串,div區段要套用的css樣式.$conf["css::spanSection"]["class"]="__removeConfiremStrCssStyle";#$conf["title"],陣列,滑鼠移到上面時要顯示的內容,每個元素代表一列內容#$conf["title"]=array();$spanSection=css::divSection($conf["css::spanSection"]);unset($conf["css::spanSection"]);#如果 spanSection 建立失敗if($spanSection["status"]=="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$spanSection;#回傳結果return $result;}#if end#串接提示訊息$conf["table.printColumn"]["tdContent"][]=$spanSection["content"];#如果 $conf["indexColumnValue"] 有設定if(isset($conf["indexColumnValue"]) && isset($conf["dbName"]) && isset($conf["dbAddress"]) && isset($conf["dbAccount"]) && isset($conf["dtName"])){#如果 $conf["columnForComment"] 有設定if(isset($conf["columnForComment"])){#函式說明:#<span>區塊,裡面可以指定css的class樣式,可以指定提示文字.#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.#$result["functin"],字串,當前函數的名稱.#$result["error"],陣列,錯訊訊息.#$result["content"],字串,含有<span>標籤的內容.#必填參數:#$conf["contentArray"],字串陣列,要放入的內容陣列.$conf["css::spanSection"]["contentArray"]=array("相關資訊如下所示:");#可省略參數#$conf["class"],字串,div區段要套用的css樣式.$conf["css::spanSection"]["class"]="__removeConfiremStrCssStyle";#$conf["title"],陣列,滑鼠移到上面時要顯示的內容,每個元素代表一列內容#$conf["title"]=array();$spanSection=css::divSection($conf["css::spanSection"]);unset($conf["css::spanSection"]);#如果 spanSection 建立失敗if($spanSection["status"]=="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$spanSection;#回傳結果return $result;}#if end#串接提示訊息$conf["table.printColumn"]["tdContent"][]=$spanSection["content"];#取得特定資料的指定欄位資料#函式說明:#一次取得資料庫、表的資料#回傳的結果#$result["status"],執行結果"true"為成功;"false"為執行失敗。#$result["error"],錯誤訊息陣列。#$result["dataColumnName"],抓取的資料欄位名稱陣列.#$result["dataColumnName"][$i]代表第$i+1個欄位名稱#$result["dataContent"],爲資料的內容。#$result["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]#$dataSetNum 爲第$dataSetNum+1筆資料#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱#$result["dataCount"],爲取得的資料筆數。#$result["sql"],執行的sql字串.#必填參數:$conf["db.fastGetDbData"]["dbAddress"]=$conf["dbAddress"];#爲dbServer的位置。$conf["db.fastGetDbData"]["dbAccount"]=$conf["dbAccount"];#爲登入dbServer的帳號。$conf["db.fastGetDbData"]["dbName"]=$conf["dbName"];#爲要存取的資料庫名稱$conf["db.fastGetDbData"]["tableName"]=$conf["dtName"];#爲要存取的資料表名稱$conf["db.fastGetDbData"]["columnYouWant"]=$conf["columnForComment"];#你想要的欄位!,若設為「array("*")」則代表全部欄位.#可省略參數:#如果 $conf["dbPassword"] 有設定if(isset($conf["dbPassword"])){$conf["db.fastGetDbData"]["dbPassword"]=$conf["dbPassword"];#爲要存取dbServer的密碼}#if end$conf["db.fastGetDbData"]["WhereColumnName"]=array($conf["indexColumnName"]);#用於判斷語句的欄位項目陣列。$conf["db.fastGetDbData"]["WhereColumnValue"]=array($conf["indexColumnValue"]);#用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。#$conf["WhereColumnCombine"]=array("");#用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。#$conf["WhereColumnOperator"]=array("");#用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。#$conf["WhereColumnAndOr"]=array("");#用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。#$conf["orderItem"]="";#爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。#$conf["ascORdesc"]="";#爲要低增還是遞減排序,asc爲遞增;desc爲遞減。#$conf["numberStart"]="0";#為從第幾筆開始讀取,預設為0,代筆第一筆。#$conf["numLimit"]="30";#為要取幾筆資料,可以省略,省略則表示不限制數目。#$conf["groupBy"]=array("");#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。$getDbDataResult=db::fastGetDbData($conf["db.fastGetDbData"]);unset($conf["db.fastGetDbData"]);#如果 查詢要刪除的資料失敗if($getDbDataResult["status"]=="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$getDbDataResult;#回傳結果return $result;}#if end#如果資料不足一筆if($getDbDataResult["dataCount"]==0){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"][]="查不到要刪除的資料";#回傳結果return $result;}#if end#有幾個欄位就執行幾次for($i=0;$i<count($conf["columnForComment"]);$i++){#函式說明:#可以輸入文字的區塊#回傳結果:#$result,語法#必填參數:$conf["form.inputTextArea"]["name"]="readOnly-".$i;#爲文字輸入框的名稱,供接收端辨識用。$conf["form.inputTextArea"]["readOnly"]="true";#爲是否要爲唯讀,如果爲"true",則爲唯讀。反之則爲"false"。#可省略參數:#$conf["cols"]="";#爲文字輸入框的欄位數(寬),預設爲按照瀏覽器設定值。#$conf["rows"]="";#爲文字輸入框的列數(高),預設爲按照瀏覽器設定值。#$conf["maxInputLength"]="";#爲文字輸入的長度限制,預設無限制。$conf["form.inputTextArea"]["defaultText"]=$getDbDataResult["dataContent"][$conf["columnForComment"][$i]][0];#爲文字輸入框裏面的預設文字內容,預設是空的。#$conf["class"]=;#爲要套用的css樣式。如果沒有指定 ,則採用預設的css樣式,其屬性爲 "width:100%","height:120px","font-size:30px"#$conf["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。#$conf["jsAction"]="";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。#$conf["comment"],字串,輸入方框上面要放哪些註解文字.$conf["form.inputTextArea"]["comment"]=$conf["commentsName"][$i];#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。$columnData=form::inputTextArea($conf["form.inputTextArea"]);unset($conf["form.inputTextArea"]);#如果 inputTextArea 建立失敗if($columnData["status"]=="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$columnData;#回傳結果return $result;}#if end#接上描述資訊$conf["table.printColumn"]["tdContent"][]=$columnData["content"];}#for end}#if end}#if end#確認移除的按鈕#函式說明:#一個簡單的按鈕,按了可以到指定的頁面,同時也可以傳送多個隱藏的變數#回傳的結果#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列#$result["function"],當前執行的函數名稱.#$result["content"],語法內容#必填參數:$conf["form::sendHugeDataButton"]["buttonDisplayValue"]=$conf["removeButtonDisplayName"];#按鈕上要顯示的文字#可省略參數:$conf["form::sendHugeDataButton"]["buttonStyleName"]=$conf["removeButtonStyle"];#按鈕的css樣式應該爲何,若省略的話預設會採用 __simpleButtonLinkDefaultButtonCssStyle 的樣式,其設定為"width:100%;height:50;font-size:30;text-align:center;#如果 $conf["removeSendingVarName"] 有存在if(isset($conf["removeSendingVarName"])){$conf["form::sendHugeDataButton"]["hiddenVarName"]=$conf["removeSendingVarName"];#要傳送的隱藏變數名稱,與 $conf["hiddenVarContent"] 相對應。}#if end#如果 $conf["removeSendingVarValue"] 有設定if(isset($conf["removeSendingVarValue"])){$conf["form::sendHugeDataButton"]["hiddenVarContent"]=$conf["removeSendingVarValue"];#要傳誦的隱藏變數內容,與 $conf["hiddenVarName"] 相對應。}#if end#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".$conf["form::sendHugeDataButton"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設爲"false".#$conf["form::sendHugeDataButton"]["method"]=;#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。#$conf["formName"]="";#該表單的名稱$conf["form::sendHugeDataButton"]["actionPage"]=$conf["removeActionPage"];#按鈕按了之後要到哪個地方?若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面。#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。#可以是"document.forms.formName.submit()"(傳送名爲testForm的表單內容).$conf["form::sendHugeDataButton"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設爲"false"#$conf["tableStart"]="true";#爲是否要表格開始,"true"表示"是",預設為"false".#$conf["tableClass"]="__withoutBorder";#爲表格要採用的css樣式名稱,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder".#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".#$conf["trClass"]="__withoutBorder";#列開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder"#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false"#$conf["tdClass"]="__withoutBorder";#行開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder"#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".$conf["form::sendHugeDataButton"]["displayTarget"]=$conf["removeActionDisplayMethod"];#頁面的呈現方法,可以是開新視窗(_blank)、在目前頁面、頁框裏面(_self)、在父頁面(_parent)、最上層頁面(_top),預設為"_top"。#$conf["tableEnd"]="true";#爲是否要表格結束,"true"表示"是",預設為"false".$confirmButton=form::sendHugeDataButton($conf["form::sendHugeDataButton"]);unset($conf["form::sendHugeDataButton"]);#如果取消按鈕建立失敗if($confirmButton["status"]=="false"){#設置執行錯誤$result["status"]="false";#設置錯誤訊息$result["error"]=$confirmButton;#回傳結果return $result;}#if end#串接確認移除按鈕的語法$conf["table.printColumn"]["tdContent"][]=$confirmButton["content"];#函式說明:#建立欄的元素,以及指定裏面要放什麼內容#回傳的變數:#$result["content"],建立欄元素的語法#$result["status"],"true"代表執行成功;"false"代表執行失敗。#$result["error"],錯誤訊息陣列#必填參數:$conf["table.printColumn"]["trClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式$conf["table.printColumn"]["tdClass"]="__withoutBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式#列裏面要放的元素是?如果要空一列則可以輸array(" ")#$conf["table.printColumn"]["tdContent"][]="";#可省略參數:$conf["table.printColumn"]["tableStartClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式$conf["table.printColumn"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。$conf["table.printColumn"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。#$conf["formStart"]="true";#是否要有表單的開始#$conf["formName"]="";#該表單的名稱#$conf["formAction"]="";#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置#$conf["formTarget"]="_self";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["formEnd"]="true";#是否要有表單的結束$conf["table.printColumn"]["spaceBlockAferPerElement"]="true";#是否每個欄元素(除了最後一個元素)後面都要空一列。"true"代表要空一列.預設是不空一列.$fullTable=table::printColumn($conf["table.printColumn"]);unset($conf["table.printColumn"]);#如果 表格建立失敗if($fullTable["status"]=="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$fullTable;#回傳結果return $result;}#if end#串接整個表格$result["content"]=$result["content"].$fullTable["content"];#設置執行正常$result["status"]="true";#回傳結果return $result;}#function removeConfirm end/*#函式說明:#確認執行的視窗#回傳結果:#$result,確認執行的視窗語法#必填參數:$conf["actionName"]="";#要執行的動作$conf["itemName"]="";#爲要執行的物件提示名稱,格式爲字串。$conf["cancleActionPage"]="";#爲按下取消按鈕後,要交給那個頁面處理。$conf["confirmActionPage"]="";#爲移除按鈕傳送的內容要交給哪一個頁面處理。#可省略參數:#$conf["actionFontCss"]="";#可省略,爲動作提示的字型css樣式,預設為"__actionFontCssStyle"#$conf["itemNameFontCss"]="";#可省略預,爲物件提示的字型css樣式,預設為"__itemNameFontCssStyle"#$conf["cancleActionDisplayMethod"]="";#可省略,預設爲"_self",爲按下取消按鈕後,交給的處理的頁面要怎麼顯現,類型爲字串,可能值有 "_top" "_self" "_blank" "_blank"#$conf["cancleButtonStyle"]="";#可省略,爲取消鈕的css樣式類別名稱。#$conf["cancleRequestMethod"],字串,取消要求的表單要用什麼方式傳送,預設為"post",也可以為"get".#$conf["cancleRequestMethod"]="get";#$conf["cancleButtonDisplayName"]="";#可省略,預設爲"取消",爲取消鈕的顯示名稱。#$conf["cancleSendingVarName"]=array("");#爲按下取消按鈕後要傳送的數值名稱#$conf["cancleSendingVarValue"]=array("");#爲按下取消按鈕後要傳送的數值內容#$conf["confirmActionDisplayMethod"]="";#可省略預設爲"_self",爲處理移除內容的頁面要如何顯現,類型爲字串,可能值有 "_top" "_self" "_blank" "_blank"#$conf["confirmButtonStyle"]="";#可省略,爲移除按鈕的css樣式類別名稱。#$conf["confirmRequestMethod"],字串,確認要求的表單要用什麼方式傳送,預設為"post",也可以為"get".#$conf["confirmRequestMethod"]="get";#$conf["confirmButtonDisplayName"]="";#可省略,預設爲"確認移除",爲移除按鈕的顯示文字內容#$conf["confirmSendingVarName"]=array("");#爲按下移除按鈕後要傳送的數值名稱#$conf["confirmSendingVarValue"]=array("");#爲按下移除按鈕後要傳送的數值內容#參考資料:#無.#備註:#要執行動作的物件提示名稱,如果可以擺方多個資訊將會更方便。*/public static function customConfirm(&$conf){#初始化要回傳的內容$result=array();#初始化要回傳的語法$result["content"]="";#記錄當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("actionName","itemName","cancleActionPage","confirmActionPage");#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string","string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。#$conf["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("actionFontCss","itemNameFontCss","cancleActionDisplayMethod","cancleRequestMethod","confirmRequestMethod");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string");#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("__qbpwcf_actionFontCssStyle","__qbpwcf_itemNameFontCssStyle","_self","post","post");#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查不通過if($checkResult["passed"]=="fasle"){#設置錯誤$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果有指定 $conf["actionFontCss"]if(isset($conf["actionFontCss"])){#套用其css樣式$conf["actionName"]="<span class=".$conf["actionFontCss"].">".$conf["actionName"]."</span>";}#if end#如果有指定 $conf["itemNameFontCss"]if(isset($conf["itemNameFontCss"])){#套用其css樣式$conf["itemName"]="<span class=".$conf["itemNameFontCss"].">".$conf["itemName"]."</span>";}#if end#函式說明:#表格形式的文字描述:#回傳結果:#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.#$result["error"],函式錯誤訊息陣列.#$result["content"],表格形式文字描述的語法.#$result["function"],當前執行的函式名稱.#必填參數:$conf["table"]["text"]["outputString"]="您確定要 「".$conf["actionName"]."」 「".$conf["itemName"]."」 嗎?";#要印出來的文字#可省略參數:$conf["table"]["text"]["tableStart"]="true";#是否要表格開始<table>,"true"代表是。$conf["table"]["text"]["tableClass"]="__withoutBorder";#為表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。$conf["table"]["text"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。$conf["table"]["text"]["trClass"]="__textCssType";#爲tr的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。$conf["table"]["text"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始$conf["table"]["text"]["tdClass"]="__withoutBorder";#該 td 要套用套用的 css 樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。$conf["table"]["text"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束$conf["table"]["text"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。$conf["table"]["text"]["tableEnd"]="true";#是否要表格結束</table>,"true"代表是。$message=table::text($conf["table"]["text"]);unset($conf["table"]);#如果表格文字建立失敗if($message["status"]=="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$message;#回傳結果return $result;}#if end#如果 $conf["cancleButtonDisplayName"] 沒有設定if(!isset($conf["cancleButtonDisplayName"])){$conf["cancleButtonDisplayName"]="取消";}#if end#函式說明:#一個簡單的按鈕,按了可以到指定的頁面。同時也可以傳送多個隱藏的變數#回傳的結果#$result,語法內容#必填參數:$conf["form"]["sendHugeDataButton"]["actionPage"]=$conf["cancleActionPage"];#按鈕按了之後要到哪個地方?若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面。$conf["form"]["sendHugeDataButton"]["buttonDisplayValue"]=$conf["cancleButtonDisplayName"];#按鈕上要顯示的文字#可省略參數:#如果有設置 $conf["cancleButtonStyle"]if(isset($conf["cancleButtonStyle"])){$conf["form"]["sendHugeDataButton"]["buttonStyleName"]=$conf["cancleButtonStyle"];#按鈕的css樣式應該爲何,若省略的話預設會採用 __simpleButtonLinkDefaultButtonCssStyle 的樣式#其屬性爲 "width","height","font-size","text-align"#其屬性值爲 "300" , "50" , "30" , "center"#備註:# __simpleButtonLinkDefaultButtonCssStyle,爲預設的按鈕css樣式,請勿使用相同類別名稱的css樣式,以免衝突。}#if end#如果 $conf["cancleSendingVarName"] 有設定if(isset($conf["cancleSendingVarName"])){$conf["form"]["sendHugeDataButton"]["hiddenVarName"]=$conf["cancleSendingVarName"];#要傳送的隱藏變數名稱,與 $conf["hiddenVarContent"] 相對應。}#if end#如果 $conf["cancleSendingVarValue"] 有設定if(isset($conf["cancleSendingVarValue"])){$conf["form"]["sendHugeDataButton"]["hiddenVarContent"]=$conf["cancleSendingVarValue"];#要傳誦的隱藏變數內容,與 $conf["hiddenVarName"] 相對應。}#if end$conf["form"]["sendHugeDataButton"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設爲"false".$conf["form"]["sendHugeDataButton"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設爲"false"#$conf["form"]["sendHugeDataButton"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。#$conf["form"]["sendHugeDataButton"]["tableClass"]="__withoutBorder";#爲表格要採用的css樣式名稱,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式#$conf["form"]["sendHugeDataButton"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。#$conf["form"]["sendHugeDataButton"]["trClass"]="__withoutBorder";#列開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式#$conf["form"]["sendHugeDataButton"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始#$conf["form"]["sendHugeDataButton"]["tdClass"]="__withoutBorder";#行開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式#$conf["form"]["sendHugeDataButton"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束#$conf["form"]["sendHugeDataButton"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。$conf["form"]["sendHugeDataButton"]["method"]=$conf["cancleRequestMethod"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。#如果 $conf["confirmActionDisplayMethod"] 有設定if(isset($conf["confirmActionDisplayMethod"])){$conf["form"]["sendHugeDataButton"]["displayTarget"]=$conf["confirmActionDisplayMethod"];#頁面的呈現方法,可以是開新視窗(_blank)、在目前頁面、頁框裏面(_self)、在父頁面(_parent)、最上層頁面(_top)。}#if end#$conf["form"]["sendHugeDataButton"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。$cancle=form::sendHugeDataButton($conf["form"]["sendHugeDataButton"]);unset($conf["form"]["sendHugeDataButton"]);#如果取消的按鈕建立失敗if($cancle["status"]=="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$cancle;#回傳結果return $result;}#if end#如果 $conf["confirmButtonDisplayName"] 沒有設定if(!isset($conf["confirmButtonDisplayName"])){$conf["confirmButtonDisplayName"]="確認";}#if end#函式說明:#一個簡單的按鈕,按了可以到指定的頁面。同時也可以傳送多個隱藏的變數#回傳的結果#$result,語法內容#必填參數:$conf["form"]["sendHugeDataButton"]["actionPage"]=$conf["confirmActionPage"];#按鈕按了之後要到哪個地方?若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面。$conf["form"]["sendHugeDataButton"]["buttonDisplayValue"]=$conf["confirmButtonDisplayName"];#按鈕上要顯示的文字#可省略參數:#如果 $conf["confirmButtonStyle"] 存在if(isset($conf["confirmButtonStyle"])){$conf["form"]["sendHugeDataButton"]["buttonStyleName"]=$conf["confirmButtonStyle"];#按鈕的css樣式應該爲何,若省略的話預設會採用 __simpleButtonLinkDefaultButtonCssStyle 的樣式#其屬性爲 "width","height","font-size","text-align"#其屬性值爲 "300" , "50" , "30" , "center"#備註:# __simpleButtonLinkDefaultButtonCssStyle,爲預設的按鈕css樣式,請勿使用相同類別名稱的css樣式,以免衝突。}#if end#如果 $conf["confirmSendingVarName"] 有設定if(isset($conf["confirmSendingVarName"])){$conf["form"]["sendHugeDataButton"]["hiddenVarName"]=$conf["confirmSendingVarName"];#要傳送的隱藏變數名稱,與 $conf["hiddenVarContent"] 相對應。}#if end#如果 $conf["confirmSendingVarValue"] 有設定if(isset($conf["confirmSendingVarValue"])){$conf["form"]["sendHugeDataButton"]["hiddenVarContent"]=$conf["confirmSendingVarValue"];#要傳誦的隱藏變數內容,與 $conf["hiddenVarName"] 相對應。}#if end$conf["form"]["sendHugeDataButton"]["method"]=$conf["confirmRequestMethod"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。$conf["form"]["sendHugeDataButton"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設爲"false".$conf["form"]["sendHugeDataButton"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設爲"false"#$conf["form"]["sendHugeDataButton"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。#$conf["form"]["sendHugeDataButton"]["tableClass"]="__withoutBorder";#爲表格要採用的css樣式名稱,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式#$conf["form"]["sendHugeDataButton"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。#$conf["form"]["sendHugeDataButton"]["trClass"]="__withoutBorder";#列開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式#$conf["form"]["sendHugeDataButton"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始#$conf["form"]["sendHugeDataButton"]["tdClass"]="__withoutBorder";#行開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式#$conf["form"]["sendHugeDataButton"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束#$conf["form"]["sendHugeDataButton"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。#如果 $conf["confirmActionDisplayMethod"] 有設定if(isset($conf["confirmActionDisplayMethod"])){$conf["form"]["sendHugeDataButton"]["displayTarget"]=$conf["confirmActionDisplayMethod"];#頁面的呈現方法,可以是開新視窗(_blank)、在目前頁面、頁框裏面(_self)、在父頁面(_parent)、最上層頁面(_top)。}#if end#$conf["form"]["sendHugeDataButton"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。$confirm=form::sendHugeDataButton($conf["form"]["sendHugeDataButton"]);unset($conf["form"]["sendHugeDataButton"]);#如果確認的按鈕建立失敗if($confirm["status"]=="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$confirm;#回傳結果return $result;}#if end#建立一欄表格#函式說明:#建立欄的元素,以及指定裏面要放什麼內容#回傳的變數:#$result["content"],建立欄元素的語法#$result["status"],"true"代表執行成功;"false"代表執行失敗。#$result["error"],錯誤訊息陣列#必填參數:$conf["table::printColumn"]["trClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式$conf["table::printColumn"]["tdClass"]="__withoutBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式$conf["table::printColumn"]["tdContent"]=array($cancle["content"],$message["content"],$confirm["content"]);#列裏面要放的元素是?如果要空一列則可以輸array(" ")#可省略參數:$conf["table::printColumn"]["tableStartClass"]="__withoutBorder";#列的樣式,預設為"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式$conf["table::printColumn"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是",預設為"false".$conf["table::printColumn"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是",預設為"false".#$conf["formStart"]="true";#是否要有表單的開始,預設為"false".#$conf["formName"]="";#該表單的名稱#$conf["formAction"]="";#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置#$conf["formTarget"]="_self";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["formEnd"]="true";#是否要有表單的結束,預設為"false".$conf["spaceBlockAferPerElement"]="true";#是否每個欄元素(除了最後一個元素)後面都要空一列。"true"代表要空一列.預設是不空一列.$printColumn=table::printColumn($conf["table::printColumn"]);unset($conf["table::printColumn"]);#如果建立一欄表格失敗if($printColumn["status"]=="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$printColumn;#回傳結果return $result;}#if end#取得一欄表格的語法$result["content"]=$result["content"].$printColumn["content"];#設置執行正常$result["status"]="true";#回傳結果return $result;}#function customConfirm end/*#函式說明:#上傳檔案的表單#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["content"],上傳檔案的語法.#必填參數:#$conf["formFileName"],字串,該檔案上傳時的表單名稱。$conf["formFileName"]="";#可省略參數:#$conf["acceptType"],字串,限定檔案的類型為"video/*","audio/*","image/*",預設不限定.#$conf["acceptType"]="";#$conf["class"],字串,該上傳表單所要套用的css樣式,若省略則採用預設的css樣式"__qbpwcf_inputFileCssStyle",其屬性爲 width:100% font-size:30px#$conf["class"]="";#$conf["id"],字串,爲該上傳表單的id,預設跟$conf["formFileName"]一樣.#$conf["id"]="";#$conf["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".#$conf["required"]="true";#$conf["comment"],字串,輔助說明的文字,會出現在檔案上傳的上一行.#$conf["comment"]="";#$conf["formStart"],字串,爲是否要以<form>開頭,"true"表示"是",也可以看成表單的開始,預設為"false".#$conf["formStart"]="true";#$conf["formAction"],字串,表單遞交的目的地,若$conf["formStart"]為"true",則該參數不能省略,預設為"false".#$conf["formAction"]="";#$conf["formName"],字串,爲該表單的名稱#$conf["formName"]="";#$conf["formMethod"],字串,爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。#$conf["formMethod"]="";#$conf["formTarget"],字串,為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["formTarget"]="";#$conf["formEnd"],字串,爲是否要以<form>結尾,"true"表示"是",也可以看成表單的結束,預設為"false".#$conf["formEnd"]="true";#參考資料:#http://www.w3schools.com/tags/tag_input.asp#備註:#無.*/public static function inputFile(&$conf){#初始化要回傳的變數$result=array();#設置當前執行的函式$result["function"]=__FUNCTION__;#初始化表單開始的語法$result["content"]="";#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("formFileName");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。#$conf["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("acceptType","class","id","comment","formStart","formAction","formName","formMethod","formTarget","formEnd","required");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string","string","string","string","string");#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,"__qbpwcf_inputFileCssStyle","\$conf[\"formFileName\"]",null,"false",null,null,"post","_self","false","false");#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查參數失敗if($checkResult["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查參數不通過if($checkResult["passed"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果 $conf["formStart"] 等於 "true"if($conf["formStart"]=="true"){#函式說明:#表單開始#回傳結果:#$result,表單開始的語法#必填參數:$conf["form"]["start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容#可省略參數:#如果 $conf["formName"] 有設置if(isset($conf["formName"])){#則設定其數值$conf["form"]["start"]["name"]=$conf["formName"];#爲該表單的名稱}#if end#設定 method 參數$conf["form"]["start"]["method"]=$conf["formMethod"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。#設定 "formTarget" 參數$conf["form"]["start"]["target"]=$conf["formTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["form"]["start"]["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是;#$conf["form"]["start"]["tableClass"]=$conf["tableClass"];#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。$formStart=form::start($conf["form"]["start"]);unset($conf["form"]["start"]);#串接表單開始$result["content"]=$result["content"].$formStart["content"];}#if end#過濾 $conf["formFileName"] 避免錯誤#函式說明:#處理字串避免網頁出錯#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["content"],爲處理好的字串.#$result["error"],錯誤訊息陣列.#必填參數:$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["formFileName"];#爲要處理的字串#可省略的參數:$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);unset($conf["stringProcess::correctCharacter"]);#debug#var_dump($correctCharacter);#如果過濾字串失敗if($correctCharacter["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$correctCharacter;#回傳結果return $result;}#if end#置換過濾好了的$conf["name"]$conf["formFileName"]=$correctCharacter["content"];#過濾 $conf["id"] 避免錯誤#函式說明:#處理字串避免網頁出錯#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["content"],爲處理好的字串.#$result["error"],錯誤訊息陣列.#必填參數:$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["id"];#爲要處理的字串#可省略的參數:$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);unset($conf["stringProcess::correctCharacter"]);#debug#var_dump($correctCharacter);#如果過濾字串失敗if($correctCharacter["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$correctCharacter;#回傳結果return $result;}#if end#置換過濾好了的$conf["id"]$conf["id"]=$correctCharacter["content"];#設定id$conf["id"]=" id=".$conf["id"]." ";#設定 css 樣式$conf["class"]=" class=".$conf["class"]." ";#如果 $conf["comment"] 有設置if(isset($conf["comment"])){#放置說明文字$result["content"]=$result["content"]."<span ".$conf["class"]." >".$conf["comment"]."</span><br>";}#if end#如果有設置 $conf["acceptType"]if(isset($conf["acceptType"])){#設置 "accept" 屬性$conf["acceptType"]=" accept=".$conf["acceptType"]." ";}#if end#反之else{#設置為 ""$conf["acceptType"]="";}#else end#如果 $conf["required"] 為 "true"if($conf["required"]=="true"){#設置 "required" 屬性$conf["required"]="required";}#if end#反之else{#設置為 ""$conf["required"]="";}#else end#放置上傳檔案表單的語法$result["content"]=$result["content"]."<input type = file ".$conf["class"]." name = ".$conf["formFileName"]." ".$conf["id"]." ".$conf["acceptType"]." ".$conf["required"]." >";#如果 $conf["formEnd"] 等於 "true"if($conf["formEnd"]=="true"){$conf["form"]["end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。$formEnd=form::end($conf["form"]["end"]);unset($conf["form"]["end"]);#如果表單結束失敗if($formEnd["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$formEnd;#回傳結果return $result;}#if end#串接表單結束$result["content"]=$result["content"].$formEnd["content"];}#if end#設置執行正常$result["status"]="true";#回傳語法return $result;}#function inputFile end/*#函式說明:#可以瀏覽要上傳的檔案#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["content"],上傳檔案的語法.#必填參數:#$conf["formFileName"],字串,該上傳檔案的表單名稱.$conf["formFileName"]="";#可省略參數:#$conf["maxFileSize"],字串,檔案的最大限制,單位是位元組(byte)。1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設是10240000(10MB)#$conf["maxFileSize"]="10240000";#$conf["browseButtonClass"],字串,瀏覽檔案的按鈕樣式,預設為"__qbpwcf_inputFileCssStyle".#$conf["browseButtonClass"]="__inputFileCssStyle";#$conf["acceptType"],字串,限定檔案的類型為"video/*","audio/*","image/*",預設不限定.#$conf["acceptType"]="";#$conf["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".#$conf["required"]="true";#$conf["trStart"],字串,爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設為"false".#$conf["trStart"]="true";#$conf["trClass"],字串,列的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式,預設為"__withoutBorder".#$conf["trClass"]="__withoutBorder";#$conf["tdStart"],字串,爲是否要以<td>開頭,"true"表示"是",也可以看成列裏面的元素開始,預設為"false".#$conf["tdStart"]="false";#$conf["tdClass"],字串,行的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式,預設為"__withoutBorder".#$conf["tdClass"]="__withoutBorder";#$conf["tdEnd"],字串,爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設為"false".#$conf["tdEnd"]="true";#$conf["trEnd"],字串,爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設為"false".#$conf["trEnd"]="true";#$conf["formStart"],字串,是否為表單的開始,"true"為是,預設為"false".#$conf["formStart"]="true";#$conf["formName"],字串,表單的名稱#$conf["formName"]="";#$conf["formAction"],字串,表單的目標,若有設置$conf["formStart"]為"true",則預設為php檔案自己#$conf["formAction"]="";#$conf["formTarget"],字串,表單要呈現回應的位置,預設為"_self".#$conf["formTarget"]="_self";#$conf["formEnd"],字串,是否為表單的結束,"true"為是,預設為"false".#$conf["formEnd"]="true";#$conf["comment"],字串,該上傳檔案的註解,預設不顯示.#$conf["comment"]="";#參考資料:#無.#備註:#無.*/public static function uploadOneFile(&$conf){#初始化要回傳的變數$result=array();#設置當前執行的函式$result["function"]=__FUNCTION__;#初始化表單開始的語法$result["content"]="";#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("formFileName");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。#$conf["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("maxFileSize","browseButtonClass","trStart","trClass","tdStart","tdClass","tdEnd","trEnd","formStart","formAction","formTarget","formEnd","comment","formName","acceptType","required");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string");#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("10240000","__qbpwcf_inputFileCssStyle","false","withoutBorder","false","withoutBorder","false","false","false",null,"_self","false",null,null,null,"false");#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查參數失敗if($checkResult["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查參數不通過if($checkResult["passed"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$checkResult;#回傳結果return $result;}#if end#建立沒有框線的表單css樣式#函式說明:#創建 css 樣式#必填參數:$conf_createCssStyle["cssStyleName"]="__withoutBorderUploadOneFileCssStyle";#為該 css 樣式的名稱,不能以數字開頭。$conf_createCssStyle["attributes"]=array("width","font-size","border","border-style");#為屬性名稱,須為陣列值$conf_createCssStyle["content"]=array("100%","30px","0px","solid");#為屬性值,須為陣列值$css=css::createCssStyle($conf_createCssStyle);unset($conf_createCssStyle);#若創建css樣式失敗if($css["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$css;#回傳結果return $result;}#if end#串接css語法$result["content"]=$result["content"].$css["content"];#建立有框線的表單css樣式#函式說明:#創建 css 樣式#必填參數:$conf_createCssStyle["cssStyleName"]="__withBorderUploadOneFileCssStyle";#為該 css 樣式的名稱,不能以數字開頭。$conf_createCssStyle["attributes"]=array("width","font-size","border","border-style");#為屬性名稱,須為陣列值$conf_createCssStyle["content"]=array("100%","30px","1px","solid");#為屬性值,須為陣列值$css=css::createCssStyle($conf_createCssStyle);unset($conf_createCssStyle);#若創建css樣式失敗if($css["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$css;#回傳結果return $result;}#if end#串接css語法$result["content"]=$result["content"].$css["content"];#如果 $conf["trStart"] 等於 "true"if($conf["trStart"]=="true"){#套用指定的css樣式$conf["table"]["trStart"]["class"]=$conf["trClass"];#函式說明:#列開始#回傳結果:#$result,列開始的語法#必填寫的參數:#$conf["table"]["trStart"]["class"]="";#該 tr 要套用套用的 css 樣式若爲 "" 則會採用預設的css樣式 __defaultTrCsssStyle,其屬性爲 border:1px solid blue$trStart=table::trStart($conf["table"]["trStart"]);unset($conf["table"]["trStart"]);#如果列歐開始結束if($trStart["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$trStart;#回傳結果return $result;}#if end#串接列開始$result["content"]=$result["content"].$trStart["content"];}#if end#如果 $conf["tdStart"] 等於 "true"if($conf["tdStart"]=="true"){#套用指定的css樣式$conf["table"]["tdStart"]["class"]=$conf["tdClass"];#函式說明:#列開始#回傳結果:#$result,列開始的語法#必填寫的參數:#$conf["table"]["tdStart"]["class"]="";#該 td 要套用套用的 css 樣式若爲 "" 則會採用預設的css樣式 __defaultTrCsssStyle,其屬性爲 border:1px solid blue$tdStart=table::tdStart($conf["table"]["tdStart"]);unset($conf["table"]["tdStart"]);#如果欄開始結束if($tdStart["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$tdStart;#回傳結果return $result;}#if end#串接欄開始$result["content"]=$result["content"].$tdStart["content"];}#if end#如果 $conf["formStart"] 為 "true"if($conf["formStart"]=="true"){#函式說明:#表單開始#回傳結果:#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$resutl["function"],當前執行的函式名稱.#$result["content"],表單開始的語法.#必填參數:$conf["form::start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容#可省略參數:#$conf["legend"]="";#顯示表單的標題#如果 $conf["formName"] 有設置if(isset($conf["formName"])){$conf["form::start"]["name"]=$conf["formName"];#爲該表單的名稱}#if end#$conf["method"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。$conf["form::start"]["target"]=$conf["formTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是,"false"為否,預設為"false".#$conf["tableClass"]="";#表格要套用的css樣式,預設爲"__withoutBorder"無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。#$conf["showFieldsetBorder"]="false";#是否要顯示表單區域的框線,預設為"false"不顯示,"true"代表要顯示.#參考資料:#http://www.w3schools.com/html/html_forms.asp#http://www.w3schools.com/tags/tag_fieldset.asp$formStart=form::start($conf["form::start"]);unset($conf["form::start"]);#如果表單開始失敗if($formStart["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$formStart;#回傳結果return $result;}#if end#串接表單的開始$result["content"]=$result["content"].$formStart["content"];}#if end#設定上傳到檔案最大大小限制,單位爲byte$conf_inputHidden["name"]="max_file_size";$conf_inputHidden["value"]=$conf["maxFileSize"];$hiddenVar=form::inputHidden($conf_inputHidden);unset($conf_inputHidden);#清空變數避免出錯#建立隱藏的表單失敗if($hiddenVar["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$hiddenVar;#回傳結果return $result;}#if end#串接檔案大小的限制$result["content"]=$result["content"].$hiddenVar["content"];#函式說明:#上傳檔案的表單#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["content"],上傳檔案的語法.#必填參數:#$conf["formFileName"],字串,該檔案上傳時的表單名稱。$conf["form::inputFile"]["formFileName"]=$conf["formFileName"];#可省略參數:#如果已有設置 $conf["acceptType"]if(isset($conf["acceptType"])){#$conf["form::inputFile"]["acceptType"],字串,限定檔案的類型為"video/*","audio/*","image/*",預設不限定.$conf["form::inputFile"]["acceptType"]=$conf["acceptType"];}#if end#$conf["form::inputFile"]["class"],字串,該上傳表單所要套用的css樣式,若省略則採用預設的css樣式"__inputFileCssStyle",其屬性爲 width:100% font-size:30px$conf["form::inputFile"]["class"]=$conf["browseButtonClass"];#$conf["id"],字串,爲該上傳表單的id,預設跟$conf["formFileName"]一樣.#$conf["id"]="";#如果有設置 $conf["required"]if(isset($conf["required"])){#$conf["form::inputFile"]["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".$conf["form::inputFile"]["required"]=$conf["required"];}#if end#有設置註解if(isset($conf["comment"])){#$conf["form::inputFile"]["comment"],字串,輔助說明的文字,會出現在檔案上傳的上一行.$conf["form::inputFile"]["comment"]=$conf["comment"];}#if end#$conf["form::inputFile"]["formStart"],字串,爲是否要以<form>開頭,"true"表示"是",也可以看成表單的開始,預設為"false".#$conf["form::inputFile"]["formStart"]=$conf["formStart"];#$conf["form::inputFile"]["formAction"],字串,表單遞交的目的地,若$conf["formStart"]為"true",則該參數不能省略,預設為"false".#$conf["form::inputFile"]["formAction"]=$conf["formAction"];#$conf["form::inputFile"]["formName"],字串,爲該表單的名稱#$conf["form::inputFile"]["formName"]=$conf["formName"];#$conf["form::inputFile"]["formMethod"],字串,爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。#$conf["form::inputFile"]["formMethod"]="";#$conf["form::inputFile"]["formTarget"],字串,為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["form::inputFile"]["formTarget"]=$conf["formTarget"];#$conf["form::inputFile"]["formEnd"],字串,爲是否要以<form>結尾,"true"表示"是",也可以看成表單的結束,預設為"false".$conf["form::inputFile"]["formEnd"]=$conf["formEnd"];#參考資料:#http://www.w3schools.com/tags/tag_input.asp$inputFile=form::inputFile($conf["form::inputFile"]);unset($conf["form::inputFile"]);#如果上傳檔案的表單建立失敗if($inputFile["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$inputFile;#回傳結果return $result;}#if end#串接上傳檔案的表單$result["content"]=$result["content"].$inputFile["content"];#如果 $conf["tdEnd"] 等於 "true"if($conf["tdEnd"]=="true"){#串接欄的結束tag$result["content"]=$result["content"]."</td>";}#if end#如果 $conf["trEnd"] 等於 "true"if($conf["trEnd"]=="true"){#串接列的結束tag$result["content"]=$result["content"]."</tr>";}#if end#設置執行正常$result["status"]="true";#回傳結果return $result;}#function uploadOneFile end/*#函式說明:#上傳一個檔案,包含送出鈕與回上頁的按鈕#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["content"],語法.#必填參數:#$conf["formFileName"],字串,該上傳檔案的表單名稱.$conf["formFileName"]="";#$conf["actionPage"],字串,處理表單資訊的頁面.$conf["actionPage"]="";#可省略參數:#$conf["backButtonName"],字串,退回上一頁的按鈕要顯示的名稱,預設爲"回上頁"#$conf["backButtonName"]="回上頁";#$conf["backPage"],字串,返回的按鈕點了之後要到哪個頁面,預設是不使用.#$conf["backPage"]="";#$conf["backTarget"],字串,返回按鈕的顯示區塊.#$conf["backTarget"]="";#$conf["backButtonClass"],字串,回上頁按鈕的css樣式,預設為"__simpleButtonLinkDefaultButtonCssStyle".#$conf["backButtonClass"]="__simpleButtonLinkDefaultButtonCssStyle";#$conf["comment"],字串,該上傳檔案的註解,預設不顯示.#$conf["comment"]="";#$conf["formName"],字串,表單的名稱#$conf["formName"]="";#$conf["formTarget"],字串,表單要呈現回應的位置,預設為"_self".#$conf["formTarget"]="_self";#$conf["acceptType"],字串,限定檔案的類型為"video/*","audio/*","image/*",預設不限定.#$conf["acceptType"]="";#$conf["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".#$conf["required"]="true";#$conf["maxFileSize"],字串,檔案的最大限制,單位是位元組(byte),1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設爲"102400000"(100MB)#$conf["maxFileSize"]="102400000";#$conf["browseButtonClass"],字串,瀏覽要上傳檔案的css樣式,預設為"__qbpwcf_inputFileCssStyle".#$conf["browseButtonClass"]="__inputFileCssStyle";#$conf["submitButtonClass"],字串,上傳按鈕的css樣式,預設為"__simpleButtonLinkDefaultButtonCssStyle".#$conf["submitButtonClass"]="__simpleButtonLinkDefaultButtonCssStyle";#$conf["submitButtonName"],字串,送出鈕要顯示的名稱,預設爲"上傳"#$conf["submitButtonName"]="上傳";#參考資料:#無.#備註:#無.*/public static function uploadOneFileCom(&$conf){#初始化要回傳的變數$result=array();#設置當前執行的函式$result["function"]=__FUNCTION__;#初始化表單開始的語法$result["content"]="";#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("formFileName","actionPage");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。#$conf["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("browseButtonClass","submitButtonClass","backPage","backButtonClass","maxFileSize","submitButtonName","backButtonName","comment","formTarget","acceptType","required","formName","backTarget");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string","string","string","string","string","string","string");#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("__qbpwcf_inputFileCssStyle","__qbpwcf_button",null,"__qbpwcf_button","102400000","上傳","回上頁",null,"_self",null,"false",null,"_self");#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查參數失敗if($checkResult["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查參數不通過if($checkResult["passed"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果$conf["backPage"]有存在,則放置回上頁的按鈕if(isset($conf["backPage"])){#函式說明:#放置按鈕#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["content"],按鈕語法.#必填參數:$conf["form::button"]["buttonDisplayValue"]=$conf["backButtonName"];#爲按鈕上顯示的文字。#可省略參數:$conf["form::button"]["buttonStyleName"]=$conf["backButtonClass"];#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __simpleButtonLinkDefaultButtonCssStyle 。#其屬性爲 "width","height","font-size","text-align"#其屬性值爲 "100%" , "50" , "30" , "center"#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。#"document.forms.formName.submit()"爲傳送名爲testForm的表單內容#"window.print()"爲使用瀏覽器內建工具列印當前網頁#$conf["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".#$conf["tableStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"false"。#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",亦即沒有框線的樣式;"__withBorder"則爲有框線的樣式#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".#$conf["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是,預設爲"false"。$conf["form::button"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".$conf["form::button"]["action"]=$conf["backPage"];#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用$conf["form::button"]["target"]=$conf["backTarget"];#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用$conf["form::button"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".#參考資料:#http://stackoverflow.com/questions/3014649/how-to-disable-html-button-using-javascript$prePageButton=form::button($conf["form::button"]);unset($conf["form::button"]);#如果回上頁的按鈕建立失敗if($prePageButton["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$prePageButton;#回傳結果return $result;}#if end#放置回上頁的按鈕$conf["table::printColumn"]["tdContent"][]=$prePageButton["content"];}#if end#上傳檔案的表單#函式說明:#可以瀏覽要上傳的檔案#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["content"],上傳檔案的語法.#必填參數:#$conf["formFileName"],字串,該上傳檔案的表單名稱.$conf["form::uploadOneFile"]["formFileName"]=$conf["formFileName"];#可省略參數:#$conf["form::uploadOneFile"]["maxFileSize"],字串,檔案的最大限制,單位是位元組(byte)。1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設是10240000(10MB)$conf["form::uploadOneFile"]["maxFileSize"]=$conf["maxFileSize"];#$conf["browseButtonClass"],字串,瀏覽檔案的按鈕樣式,預設為"__inputFileCssStyle".$conf["form::uploadOneFile"]["browseButtonClass"]=$conf["browseButtonClass"];#如果有設定 $conf["acceptType"]if(isset($conf["acceptType"])){#$conf["form::uploadOneFile"][["acceptType"],字串,限定檔案的類型為"video/*","audio/*","image/*",預設不限定.$conf["form::uploadOneFile"]["acceptType"]=$conf["acceptType"];}#if end#$conf["form::uploadOneFile"]["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".$conf["form::uploadOneFile"]["required"]=$conf["required"];#$conf["trStart"],字串,爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設為"false".#$conf["trStart"]="true";#$conf["trClass"],字串,列的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式,預設為"__withoutBorder".#$conf["trClass"]="__withoutBorder";#$conf["tdStart"],字串,爲是否要以<td>開頭,"true"表示"是",也可以看成列裏面的元素開始,預設為"false".#$conf["tdStart"]="false";#$conf["tdClass"],字串,行的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式,預設為"__withoutBorder".#$conf["tdClass"]="__withoutBorder";#$conf["tdEnd"],字串,爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設為"false".#$conf["tdEnd"]="true";#$conf["trEnd"],字串,爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設為"false".#$conf["trEnd"]="true";#$conf["formStart"],字串,是否為表單的開始,"true"為是,預設為"false".$conf["form::uploadOneFile"]["formStart"]="true";#如果有設置 $conf["formName"]if(isset($conf["formName"])){#$conf["formName"],字串,表單的名稱$conf["form::uploadOneFile"]["formName"]=$conf["formName"];}#if end#$conf["formAction"],字串,表單的目標,若有設置$conf["formStart"]為"true",則預設為php檔案自己$conf["form::uploadOneFile"]["formAction"]=$conf["actionPage"];#$conf["form::uploadOneFile"]["formTarget"],字串,表單要呈現回應的位置,預設為"_self".$conf["form::uploadOneFile"]["formTarget"]=$conf["formTarget"];#$conf["formEnd"],字串,是否為表單的結束,"true"為是,預設為"false".#$conf["form::uploadOneFile"]["formEnd"]="false";#如果 $conf["comment"] 有設定if(isset($conf["comment"])){#$conf["form::uploadOneFile"]["comment"],字串,該上傳檔案的註解,預設不顯示.$conf["form::uploadOneFile"]["comment"]=$conf["comment"];}#if end$uploadOneFile=form::uploadOneFile($conf["form::uploadOneFile"]);unset($conf["form::uploadOneFile"]);#如果建立上傳的表單失敗if($uploadOneFile["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$uploadOneFile;#回傳結果return $result;}#if end#放置上傳檔案的表單$conf["table::printColumn"]["tdContent"][]=$uploadOneFile["content"];#上傳的按鈕#函式說明:#放置按鈕#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["content"],按鈕語法.#必填參數:$conf["form::button"]["buttonDisplayValue"]=$conf["submitButtonName"];#爲按鈕上顯示的文字。#可省略參數:$conf["form::button"]["buttonStyleName"]=$conf["submitButtonClass"];#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __simpleButtonLinkDefaultButtonCssStyle 。#其屬性爲 "width","height","font-size","text-align"#其屬性值爲 "100%" , "50" , "30" , "center"#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。#"document.forms.formName.submit()"爲傳送名爲testForm的表單內容#"window.print()"爲使用瀏覽器內建工具列印當前網頁#$conf["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".#$conf["tableStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"false"。#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",亦即沒有框線的樣式;"__withBorder"則爲有框線的樣式#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".#$conf["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是,預設爲"false"。#$conf["form::button"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".#$conf["form::button"]["action"]=$conf["backPage"];#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用#$conf["target"]="";#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用$conf["form::button"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".#參考資料:#http://stackoverflow.com/questions/3014649/how-to-disable-html-button-using-javascript$submitButton=form::button($conf["form::button"]);unset($conf["form::button"]);#如果回上頁的按鈕建立失敗if($submitButton["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$submitButton;#回傳結果return $result;}#if end#放置上傳的按鈕$conf["table::printColumn"]["tdContent"][]=$submitButton["content"];#建立一欄表格#函式說明:#建立欄的元素,以及指定裏面要放什麼內容#回傳的變數:#$result["content"],建立欄元素的語法#$result["status"],"true"代表執行成功;"false"代表執行失敗。#$result["error"],錯誤訊息陣列#必填參數:$conf["table::printColumn"]["trClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式$conf["table::printColumn"]["tdClass"]="__withoutBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式#$conf["table::printColumn"]["tdContent"]=array();#列裏面要放的元素是?如果要空一列則可以輸array(" ")#可省略參數:#$conf["table::printColumn"]["formData"],字串,$conf["tdContent"]裡面要放的元素是否含有表單,"true"代表有,"false"代表沒有,預設為"false".$conf["table::printColumn"]["formData"]="true";$conf["table::printColumn"]["tableStartClass"]="__withoutBorder";#列的樣式,預設為"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式$conf["table::printColumn"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是",預設為"false".$conf["table::printColumn"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是",預設為"false".#$conf["formStart"]="true";#是否要有表單的開始,預設為"false".#$conf["formName"]="";#該表單的名稱#$conf["formAction"]="";#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置#$conf["formTarget"]="_self";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。#$conf["formEnd"]="true";#是否要有表單的結束,預設為"false".#$conf["table::printColumn"]["spaceBlockAferPerElement"]="true";#是否每個欄元素(除了最後一個元素)後面都要空一列。"true"代表要空一列.預設是不空一列.$printColumn=table::printColumn($conf["table::printColumn"]);unset($conf["table::printColumn"]);#串接一欄表格$result["content"]=$result["content"].$printColumn["content"];#設置執行正常$result["status"]="true";#回傳結果return $result;}#function uploadOneFileCom end/*#函式說明:#檢測接收的檔案是否符合條件#回傳的內容:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["passed"],檢查是否都通過.#$result["fileNameCheck"],若爲"true"則代表檔案名稱正確,"false"檔案名稱不正確.#$result["fileSizeCheck"],若爲"true"則代表檔案大小正確。#$result["fileTypeCheck"],若爲"true"則代表檔案類型正確。#必填參數:$conf["formFileName"]="";#爲該檔案上傳時候的表單名稱#可省略參數:#$conf["uploadedFileName"]="";#爲檔案上傳時的檔案名稱,省略則跳過此部分驗證#$conf["uploadedFileSize"]="";#爲檔案上傳時的檔案大小,省略則跳過此部分驗證#$conf["uploadedFileType"]=array("");#爲檔案上傳時的檔案型別,需爲陣列型別,省略則跳過此部分驗證#參考資料:#無.#備註:#無.*/public static function simpleFileAuthentication(&$conf){#初始化要回傳的變數$result=array();#設置當前執行的函式$result["function"]=__FUNCTION__;#初始化表單開始的語法$result["content"]="";#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("formFileName");#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("uploadedFileName","uploadedFileSize","uploadedFileType");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","array");#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null,null);#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果 $checkArguments["status"] 等於 "false"if($checkArguments["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#如果 $checkArguments["passed"] 等於 "false"if($checkArguments["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#預設為檢查通過$result["passed"]="true";#檢查上傳的檔案表單名稱是否正確if(!isset($_FILES[$conf["formFileName"]])){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"][]="未接收到名為 ".$conf["formFileName"]." 的表單變數";#回傳結果return $result;}#if end#如果$conf["uploadedFileName"]有設定if(isset($conf["uploadedFileName"])){#如果 $_FILES[$conf["formFileName"]]["name"] 有設定if(isset($_FILES[$conf["formFileName"]]["name"])){#則驗證檔案名稱if($_FILES[$conf["formFileName"]]["name"]==$conf["uploadedFileName"]){#$result["fileNameCheck"]設爲"true"$result["fileNameCheck"]="true";}#if end#若檔案名稱驗證失敗else{#$result["fileNameCheck"]設爲"false"$result["fileNameCheck"]="false";#設置驗證失敗$result["passed"]="false";}#if end}#if end}#if end#如果$conf["uploadedFileSize"]有設定if(isset($conf["uploadedFileSize"])) {#如果 $_FILES[$conf["formFileName"]]["name"] 有設定if(isset($_FILES[$conf["formFileName"]]["name"])){#則驗證檔案大小if($_FILES[$conf["formFileName"]]["size"]==$conf["uploadedFileSize"]){#$result["fileSizeCheck"]設爲"true"$result["fileSizeCheck"]="true";}#if end#反之檔案大小不正確else{#$result["fileSizeCheck"]設爲"false"$result["fileSizeCheck"]="false";#設置驗證失敗$result["passed"]="false";}#else end}#if end}#if end#如果有設定$conf["uploadedFileType"]則檢查檔案形態是否符合規定if(isset($conf["uploadedFileType"])){#如果 $_FILES[$conf["formFileName"]]["name"] 有設定if(isset($_FILES[$conf["formFileName"]]["name"])){#取得可以通過驗證的檔案類型數量$fileTypeCount=count($conf["uploadedFileType"]);#檔案類型只要是以下其中一種即可for($i=0;$i<$fileTypeCount;$i++){#中間的幾種,若有符合的if($_FILES[$conf["formFileName"]]['type']==$conf["uploadedFileType"][$i]){#符合檔案形態則設爲"true"$result["fileTypeCheck"]="true";#挑出迴圈break;}#if end#反之代表else{#不符合檔案形態則設爲"false"$result["fileTypeCheck"]="false";#設置驗證失敗$result["passed"]="false";}#else end}#for end}#if end}#if end#如果 $result["status"] 沒有設置if(!isset($result["status"])){#代表執行到這邊代表執行正常$result["status"]="true";}#if end#回傳結果return $result;}#function simpleFileAuthentication end/*#函式說明:#處理一個已上傳的檔案,用作驗證#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["passed"],驗證成功為"true"失敗則為false".#$result["fileNameCheck"],若爲"true"則代表檔案名稱正確,"false"檔案名稱不正確.#$result["fileSizeCheck"],若爲"true"則代表檔案大小正確。#$result["fileTypeCheck"],若爲"true"則代表檔案類型正確。#必填參數:$conf["formFileName"]="";#該上傳檔案的表單名稱$conf["uploadFileName"]="";#如果上傳的檔案名稱等於 $conf["uploadFileName"] 則通過第一階段驗證$conf["uploadFileSize"]="";#如果上傳的檔案大小等於 $conf["uploadFileSize"] 則通過第二階段驗證$conf["uploadedFileType"]="";#如果上傳的檔案類型等於 $conf["uploadedFileType"] 則通過第三階段驗證$conf["password"]="";#供驗證用的內容。#用戶段會取得的變數內容:#$_SESSION["password"],用來做檢查,是否通過認證的session變數,若php設定檔沒有自動啓用session的話,此行前面必須要有 session_start();#可省略參數:#$conf["passAction"]="";#如果檔案驗證成功,轉址到?沒設定則不轉址#$conf["failedAction"]="";#如果檔案驗正不通過則,轉址到?沒設定則不轉址#參考資料:#無.#備註:#無.*/public static function responseOneFileForAuthentication($conf){#初始化要回傳的變數$result=array();#設置當前執行的函式$result["function"]=__FUNCTION__;#初始化表單開始的語法$result["content"]="";#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("formFileName","uploadedFileName","uploadedFileSize","uploadedFileType");#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string","array");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("passAction","failedAction");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null);#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果 $checkArguments["status"] 等於 "false"if($checkArguments["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#如果 $checkArguments["passed"] 等於 "false"if($checkArguments["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#取得驗證的結果#函式說明:#檢測接收的檔案是否符合條件#回傳的內容:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["passed"],檢查是否都通過.#$result["fileNameCheck"],若爲"true"則代表檔案名稱正確,"false"檔案名稱不正確.#$result["fileSizeCheck"],若爲"true"則代表檔案大小正確。#$result["fileTypeCheck"],若爲"true"則代表檔案類型正確。#必填參數:$conf["form::simpleFileAuthentication"]["formFileName"]=$conf["formFileName"];#爲該檔案上傳時候的表單名稱#可省略參數:$conf["form::simpleFileAuthentication"]["uploadedFileName"]=$conf["uploadFileName"];#爲檔案上傳時的檔案名稱,省略則跳過此部分驗證$conf["form::simpleFileAuthentication"]["uploadedFileSize"]=$conf["uploadedFileSize"];#爲檔案上傳時的檔案大小,省略則跳過此部分驗證$conf["form::simpleFileAuthentication"]["uploadedFileType"]=$conf["uploadedFileType"];#爲檔案上傳時的檔案型別,需爲陣列型別,省略則跳過此部分驗證$simpleFileAuthentication=form::simpleFileAuthentication($conf["form::simpleFileAuthentication"]);unset($conf["form::simpleFileAuthentication"]);#如果驗證出錯if($simpleFileAuthentication["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$simpleFileAuthentication;#回傳結果return $result;}#if end#如果驗證不通過if($simpleFileAuthentication["passed"]=="false"){#設置執行正常$result["status"]="true";#設置驗證不通過$result["passed"]="false";#設置檢查結果資訊$result["fileNameCheck"]=$simpleFileAuthentication["fileNameCheck"];$result["fileSizeCheck"]=$simpleFileAuthentication["fileNameCheck"];$result["fileTypeCheck"]=$simpleFileAuthentication["fileNameCheck"];#如果 $conf["failedAction"] 有設定if(isset($conf["failedAction"])){#轉址到 $conf["failedAction"]$conf["header"]["headerLocation"]["headerLocation"]=$conf["failedAction"];header::redirectionNow($conf["header"]["headerLocation"]);unset($conf["header"]["headerLocation"]);}#if end#回傳結果return $result;}#if end#如果 $authenticalResult["passed"] 等於 "true"if($authenticalResult["passed"]=="true"){#給予通行碼$_SESSION["password"]=$conf["password"];#如果 $conf["passAction"] 有設定if(isset($conf["passAction"])){#轉址到 $conf["passAction"]$conf["header"]["headerLocation"]["headerLocation"]=$conf["passAction"];header::redirectionNow($conf["header"]["headerLocation"]);unset($conf["header"]["headerLocation"]);}#if end#設置驗證通過$result["passed"]="true";}#if end#設置執行正常$result["status"]="true";#回傳結果return $result;}#function responseOneFileForAuthentication end/*#函式說明:#處理上傳到暫存目錄的檔案,可以移動到指定的位置,並指定檔案的名稱。並且可以指定刪除舊有的檔案,然後將新檔案的相對位置寫入到資料庫裏面。#回傳的變數:#$result["status"],整體上傳有無成功。"true"代表完整成功 "false"代表有過程有錯誤#$result["error"],錯誤訊息陣列,$result["error"][0] 為"沒有接收到上傳的檔案",則代表沒有上傳檔案.#$result["warning"],警告訊息陣列#$result["ServerFileName"],檔案名稱#$result["ServerFileType"],檔案類型#$result["ServerFileSize"],檔案大小#$result["fileRelativePosition"],檔案的相對位置,包含檔案名稱與附檔名。#必填參數:#$conf["formFileName"],字串,為上傳檔案時表單傳送時的名稱$conf["formFileName"]="";#$conf["fileArgu"],字串,__FILE__的內容$conf["fileArgu"]=__FILE__;#可省略參數:#$conf["uploadDirUserDefine"],字串,為存放上傳檔案的目錄,如果沒設定則會自行建立依照系統時間的年月日十分秒來替資料夾命名,並將上傳的檔案存在裏面。#$conf["uploadDirUserDefine"]="";#$conf["ServerFilenameUserDefine"],字串,為存放在伺服器上的檔案名稱,如果沒設定則依照台灣時間的年月日時分秒命名#$conf["ServerFilenameUserDefine"]="";#$conf["NoFileExtension"],字串,若為 "true" 則表 指定了檔案名稱後,不用再加上檔案型的副檔名,預設為"false".#$conf["NoFileExtension"]="true";#$conf["limitPage"],字串陣列,限制只能從哪些網頁檔案過來。#$conf["limitPage"]=array("");#$conf["taskName"],字串,爲該上傳作業的名稱,若沒設定,則預設爲"上傳作業"。#$conf["taskName"]="";#$conf["eraseOldFile"],字串,如果為"true"的話會移除同名的舊檔案,其值爲檔案的相對位置,預設為"false",不移除同名的檔案,並透過編號保留新的檔案.#$conf["eraseOldFile"]="";#$conf["dbProcess"],字串,如果爲"true",則會進行資料表資料更新的動作,亦即要設定 $conf["updatingMysqlServerAddress"] $conf["updatingMysqlAccount"] $conf["updatingDataBaseName"] $conf["updatingDataTableName"] $conf["updatingConditionDataTableColumnName"] $conf["updatingConditionDataTableColumnValue"] $conf["updatingTargetDataTableColumnName"] $conf["updatingTargetDataTableColumnValue"] 的內容,預設為"false".#$conf["dbProcess"]="true";#$conf["updatingMysqlServerAddress"],字串,資料庫位於網路上的哪個位置.#$conf["updatingMysqlServerAddress"]=$dbAddress;#$conf["updatingMysqlAccount"],字串,連線時要使用的帳號,省略時代表不用密碼進行連線.#$conf["updatingMysqlAccount"]=$dbAccount;#$conf["updatingMysqlPassword"],字串,連線時要使用的密碼.#$conf["updatingMysqlPassword"]=$dbPassword;#$conf["updatingDataBaseName"],字串,要更新的目標資料所屬資料庫名稱.#$conf["updatingDataBaseName"]=$dbName;#$conf["updatingDataTableName"],字串,要更新的目標資料位於哪個資料表.#$conf["updatingDataTableName"]="";#$conf["updatingConditionDataTableColumnName"],字串陣列,要用哪些欄位來識別要更新哪一筆資料,預設為array("id").#$conf["updatingConditionDataTableColumnName"]=array("id");#$conf["updatingConditionDataTableColumnValue"],字串陣列,該條件欄位內容的數值要爲多少,才是我們要修改的那筆資料。#$conf["updatingConditionDataTableColumnValue"]=array("");#$conf["updatingTargetDataTableColumnName"],字串陣列,要更新的資料欄位有?#$conf["updatingTargetDataTableColumnName"]=array("");#$conf["updatingTargetDataTableColumnValue"],字串陣列,目標資料欄位要改成什麼樣的數值,如果其元素含有"filePosition",則會替換成新檔案的相對位置#$conf["updatingTargetDataTableColumnValue"]=array("");#參考資料:#file_exist()的用法#http://php.net/manual/en/function.file-exists.php#備註:#無.*/public static function processUploadedFile($conf){#初始化要回傳的內容$result=array();#設置當前執行的函數$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck.checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("formFileName","fileArgu");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string","string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";#可省略參數:#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("uploadDirUserDefine","ServerFilenameUserDefine","NoFileExtension","limitPage","taskName","eraseOldFile","dbProcess","updatingMysqlServerAddress","updatingMysqlAccount","updatingMysqlPassword","updatingDataBaseName","updatingDataTableName","updatingConditionDataTableColumnName","updatingConditionDataTableColumnValue","updatingTargetDataTableColumnName","updatingTargetDataTableColumnValue");#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string","string","array","string","string","string","string","string","string","string","string","array","array","array","array");#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array(null,null,"false",null,"上傳作業","false","false",null,null,null,null,null,array("id"),null,null,null);$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);unset($conf["variableCheck.checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#過濾 $conf["formFileName"] 避免錯誤#函式說明:#處理字串避免網頁出錯#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["content"],爲處理好的字串.#$result["error"],錯誤訊息陣列.#必填參數:$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["formFileName"];#爲要處理的字串#可省略的參數:$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);unset($conf["stringProcess::correctCharacter"]);#如果過濾字串失敗if($correctCharacter["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$correctCharacter;#回傳結果return $result;}#if end#置換成處理過後的 $conf["formFileName"]$conf["formFileName"]=$correctCharacter["content"];#如果檔案的表單變數存在if(isset($_FILES[$conf["formFileName"]])){#如果原始檔案名稱爲空的if($_FILES[$conf["formFileName"]]["name"]==""){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"][]="沒有接收到上傳的檔案";#回傳結果return $result;}#if end}#if end#如果檔案的表單變數不存在else{#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"][]="沒有接收到上傳的檔案";#回傳結果return $result;}#else end#取得系統時間#函式說明:#回傳西元的目前時間,格式為2010年07月24日15時30分33秒#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["content"],西元的目前時間.#必填參數:$conf["time::getFullDateAndTime"]["timeZone"]="Asia/Taipei";#時區代號,可以設定的時區列表:http://www.php.net/manual/en/timezones.php#ex:"Asia/Taipei"#可省略參數:$conf["time::getFullDateAndTime"]["showSecond"]="true";#若爲"true"則會顯示秒數,預設為"true".#參考資料:#date函數用法=>http://php.net/manual/en/function.date.php.$getFullDateAndTime=time::getFullDateAndTime($conf["time::getFullDateAndTime"]);unset($conf["time::getFullDateAndTime"]);#如果取得取得時間失敗if($getFullDateAndTime["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$getFullDateAndTime;#回傳結果return $result;}#if end#取得格林威治時間+八小時$timeTw=$getFullDateAndTime["content"];#如果$conf["uploadDirUserDefine"]有設定if(isset($conf["uploadDirUserDefine"])){#則套用存放上傳檔案的目錄$uploadDir=$conf["uploadDirUserDefine"] ;}#if end#否則存放的資料夾名稱爲臺灣的時間else{$uploadDir=$timeTw;#建立特定資料夾#函式說明:#建立資料夾#回傳結果:#$result,true爲建立成功,false爲建立失敗#必填參數:$conf["fileAccess"]["createNewFolder"]["dirPositionAndName"]=$uploadDir;#新建的位置與名稱#可省略參數:#$conf["dirPermission"]="";新建資料夾的權限設定,預設爲0777,亦即所有人皆可以讀、寫、存取#參考資料:#http:#php.net/manual/en/function.mkdir.php#範本:# mkdir("/path/to/my/dir", 0700);$createFolder=fileAccess::createNewFolder($conf["fileAccess"]["createNewFolder"]);unset($conf["fileAccess"]["createNewFolder"]);#如果 $createFolder 等於 "false"if($createFolder["status"]==="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$createFolder;#回傳結果return $result;}#if end}#else end#如果$conf["uploadDirUserDefine"]有設定if(isset($conf["ServerFilenameUserDefine"])){#給予伺服器檔案的名稱$ServerFilename=$conf["ServerFilenameUserDefine"];}#if end#否則檔案名稱指定為臺灣時間else{$ServerFilename=$timeTw;}#else end#原始檔案名稱$fileOrginalName=$_FILES[$conf["formFileName"]]["name"];#初始化儲存檔案副檔名的變數$FileExtension="";#檔案的附檔名爲上傳的檔案名稱最後一個小數點後面的內容。#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess::spiltString"]["stringIn"]=$fileOrginalName;#要處理的字串。$conf["stringProcess::spiltString"]["spiltSymbol"]=".";#爲以哪個符號作爲分割#備註:#建議新增如果透過" "分割後的內容含有""的元素,將其移除,並將後面有內容的元素補上,key也重新排序。$stringProcessedResult=stringProcess::spiltString($conf["stringProcess::spiltString"]);unset($conf["stringProcess::spiltString"]);#如果分割字串失敗if($stringProcessedResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$stringProcessedResult;#回傳結果return $result;}#if end#如果分割後的段數只有1段if($stringProcessedResult["dataCounts"]<2){#設置警告訊息$result["warning"][]="上傳的檔案沒有副檔名";#設置副檔名為"unknow"$FileExtension=".unknow";}#if end#反之代表有副檔名else{#將第一個小數點後的內容視為副檔名#檔案名稱分成幾段就執行其減1幾次for($i=1;$i<$stringProcessedResult["dataCounts"];$i++){#串接副檔名$FileExtension=$FileExtension.".".$stringProcessedResult["dataArray"][$i];}#for end}#else end#將檔案的類型傳遞到變數$FileType = $_FILES[$conf["formFileName"]]["type"];/*#由於隨着瀏覽器不同,其檔案類型的名稱也會不同,所以我們就不從檔案類型去類推其副檔名爲何。#取得原始檔案副檔名的陣列,目前僅適用於firefox#照片類別if($FileType=="image/png"){$FileExtension = "png";}else if($FileType=="image/jpeg"){$FileExtension = "jpg";}else if($FileType=="image/gif"){$FileExtension = "gif";}#聲音類別else if($FileType=="audio/x-ms-wma"){$FileExtension = "wma";}else if($FileType=="audio/mpeg"){$FileExtension = "mp3";}else if($FileType=="video/ogg"){$FileExtension = "ogg";}#影片類別else if($FileType=="video/x-ms-wmv"){$FileExtension = "wmv";}else if($FileType=="video/x-msvideo"){$FileExtension = "avi";}else if($FileType=="video/ogg"){$FileExtension = "ogv";}else if($FileType=="video/webm"){$FileExtension = "webm";}#純文字類別else if($FileType=="text/plain"){$FileExtension = "txt";}#壓縮檔類別else if($FileType=="application/x-tar"){$FileExtension = "tar";}else if($FileType=="application/x-7z-compressed"){$FileExtension = "7z";}else if($FileType=="application/zip"){$FileExtension = "zip";}#2元碼檔案else if($FileType=="application/octet-stream"){$FileExtension = "exe";}#如果不是以上的類別else{#則賦予 "unknow" 這個副檔名$FileExtension = "unknow";}*/#將原始檔案的大小單位換算成KB$storeFileSizeKb = (($_FILES[$conf["formFileName"]]["size"])/1024);#將原始檔案的大小(KB)小數點全部捨棄,$storeFileSizeKb = round($storeFileSizeKb,0);#將上傳檔案的錯誤代碼傳遞到變數 $file_error$FileError = $_FILES[$conf["formFileName"]]["error"];#如果上傳的檔案是空的if(!isset($_FILES[$conf["formFileName"]]['tmp_name'])){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"][]="找不到暫存的已上傳檔案";#回傳結果return $result;}#if end#如果 $NoFileExtension 有設定if(isset($conf["NoFileExtension"])){#如果 $NoFileExtension 等於 true,if($conf["NoFileExtension"]=="true"){#則副檔名爲""。$FileExtension="";}#if end}#if end#檢查目標資料夾是否存在#函式說明:檢查多個檔案與資料夾是否存在.#回傳的結果:#$result["varName"][$i],爲第$i個資料夾或檔案的名稱。#$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。#必填參數:$conf["fileAccess"]["checkMutiFileExist"]["fileArray"]=array($uploadDir);#要檢查書否存在的檔案有哪些,須爲一維陣列數值。$conf["fileAccess"]["checkMutiFileExist"]["fileArgu"]=$conf["fileArgu"];#參考資料來源:#http://php.net/manual/en/function.file-exists.php#http://php.net/manual/en/control-structures.foreach.php$checkResult=fileAccess::checkMultiFileExist($conf["fileAccess"]["checkMutiFileExist"]);unset($conf["fileAccess"]["checkMutiFileExist"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果 目標資料夾 不存在if($checkResult["varExist"][0]=="false"){#建立特定資料夾#函式說明:#建立資料夾#回傳結果:#$result,true爲建立成功,false爲建立失敗#必填參數:$conf["fileAccess"]["createNewFolder"]["dirPositionAndName"]=$uploadDir;#新建的位置與名稱#可省略參數:#$conf["dirPermission"]="";新建資料夾的權限設定,預設爲0777,亦即所有人皆可以讀、寫、存取#參考資料:#http:#php.net/manual/en/function.mkdir.php#範本:# mkdir("/path/to/my/dir", 0700);$createFolder=fileAccess::createNewFolder($conf["fileAccess"]["createNewFolder"]);unset($conf["fileAccess"]["createNewFolder"]);#如果 $createFolder 等於 "false"if($createFolder=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"][]="建立資料夾失敗";#回傳結果return $result;}#if end}#if end#如果要移除同名的檔案if($conf["eraseOldFile"]=="true"){#檢查指定的上傳檔案是否已經存在#如果有同名的檔案存在#函式說明:檢查多個檔案與資料夾是否存在.#回傳的結果:#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$resutl["function"],當前執行的函式名稱.#$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.#$result["varName"][$i],爲第$i個資料夾或檔案的名稱。#$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。#必填參數:$conf["fileAccess::checkMultiFileExist"]["fileArray"]=array($uploadDir."/".$ServerFilename.$FileExtension);#要檢查書否存在的檔案有哪些,須爲一維陣列數值。$conf["fileAccess::checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];#參考資料來源:#http://php.net/manual/en/function.file-exists.php#http://php.net/manual/en/control-structures.foreach.php$checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);unset($conf["fileAccess::checkMultiFileExist"]);#如果檢查失敗if($checkMultiFileExist["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkMultiFileExist;#回傳結果return $result;}#if end#如果指定的上傳檔案名稱已經存在if($checkMultiFileExist["varExist"][0]=="true"){#移除舊的同名檔案#函式說明:#移除檔案#回傳結果:#$result["status"],"true"代表移除成功,"false"代表移除失敗.#$result["error"],錯誤訊息陣列#$result["warning"],警告訊息陣列#$result["function"],當前執行的函數名稱#必填參數:$conf["form::delFile"]["fileAddress"]=$uploadDir."/".$ServerFilename.$FileExtension;#要移除檔案的位置#可省略參數:#$conf["commentsArray"],字串陣列,提示的文字描述,$conf["commentsArray"][$i]代表第($+1)行的描述.#$conf["commentsArray"]=array("");$delFile=fileAccess::delFile($conf["form::delFile"]);unset($conf["form::delFile"]);#如果移除檔案失敗if($delFile["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$delFile;#回傳結果return $result;}#if end}#if end}#if end#反之沒有要移除同名的既有檔案else{#檢查是否有同名的檔案#檢查加上編號的上傳檔案名稱是否已經存在#檢查指定的上傳檔案是否已經存在#如果有同名的檔案存在#函式說明:檢查多個檔案與資料夾是否存在.#回傳的結果:#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$resutl["function"],當前執行的函式名稱.#$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.#$result["varName"][$i],爲第$i個資料夾或檔案的名稱。#$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。#必填參數:$conf["fileAccess::checkMultiFileExist"]["fileArray"]=array($uploadDir."/".$ServerFilename.$FileExtension);#要檢查書否存在的檔案有哪些,須爲一維陣列數值。$conf["fileAccess::checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];#參考資料來源:#http://php.net/manual/en/function.file-exists.php#http://php.net/manual/en/control-structures.foreach.php$checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);unset($conf["fileAccess::checkMultiFileExist"]);#如果檢查失敗if($checkMultiFileExist["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkMultiFileExist;#回傳結果return $result;}#if end#如果指定的上傳檔案名稱存在if($checkMultiFileExist["varExist"][0]=="true"){#無窮迴圈for($i=1;$i>0;$i++){#將上傳檔案的名稱加上編號$ServerFilename=$ServerFilename."(".$i.")";#檢查加上編號的上傳檔案名稱是否已經存在#檢查指定的上傳檔案是否已經存在#如果有同名的檔案存在#函式說明:檢查多個檔案與資料夾是否存在.#回傳的結果:#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$resutl["function"],當前執行的函式名稱.#$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.#$result["varName"][$i],爲第$i個資料夾或檔案的名稱。#$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。#必填參數:$conf["fileAccess::checkMultiFileExist"]["fileArray"]=array($uploadDir."/".$ServerFilename.$FileExtension);#要檢查書否存在的檔案有哪些,須爲一維陣列數值。$conf["fileAccess::checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];#參考資料來源:#http://php.net/manual/en/function.file-exists.php#http://php.net/manual/en/control-structures.foreach.php$checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);unset($conf["fileAccess::checkMultiFileExist"]);#如果檢查失敗if($checkMultiFileExist["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkMultiFileExist;#回傳結果return $result;}#if end#如果指定的上傳檔案名稱不存在if($checkMultiFileExist["varExist"][0]=="false"){#跳出迴圈break;}#if end}#for end}#if end}#else end#移動暫存檔案到指定的位置if(move_uploaded_file($_FILES[$conf["formFileName"]]["tmp_name"],$uploadDir."/".$ServerFilename.$FileExtension)){#函式說明:#呼叫shell執行系統命令,並取得回傳的內容.#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$result["function"],當前執行的函數名稱.#$result["argu"],使用的參數.#$result["cmd"],執行的指令內容.#$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.#$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.#$result["tmpFileOutput"],儲存輸出的暫存檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.#$result["running"],是否還在執行.#$result["pid"],pid.#$result["statusCode"],執行結束後的代碼.#$result["escape"],陣列,儲存出新排序過且已經escape過的指令(key為"cmd")與參數(key為"argu").#必填參數:#$conf["command"],字串,要執行的指令.$conf["external::callShell"]["command"]="chmod";#$conf["fileArgu"],字串,變數__FILE__的內容.$conf["external::callShell"]["fileArgu"]=__FILE__;#可省略參數:#$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.$conf["external::callShell"]["argu"]=array("0770",$uploadDir);#$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").#$conf["arguIsAddr"]=array();#$conf["pre"],陣列,要在本指令前執行的每個指令與參數.#$conf["pre"][$i]["cmd"],字串,要在本指令前執行的第$i+1個指令.#$conf["pre"][$i]["param"],陣列字串,要在本指令前執行的第$i+1個指令的參數.#$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".#$conf["enablePrintDescription"]="true";#$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容加上使用的$conf["argu"]參數.#$conf["printDescription"]="";#$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".如果參數為"< 、<< 、> 、>> 、| 、2>&1"之一則不會過濾.$conf["external::callShell"]["escapeshellarg"]="true";#$conf["thereIsShellVar"],陣列字串,指令搭配的參數"argu",若含有「\'」,則取代為「"」.每個argu參數都要有對應的元素."true"代表要置換.#$conf["thereIsShellVar"]=array();#$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.#$conf["username"]="";#$conf["password"],字串,root的使用者密碼,預設不使用密碼,該參數不適用於apache環境.#$conf["password"]="";#$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".#$conf["useScript"]="";#$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".#$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";#$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.#$conf["inBackGround"]="";#$conf["getErr"],字串,"true"代表將錯誤輸出變成標準輸出,反之"false"為不變動.#$conf["getErr"]="false";#$conf["doNotRun"],字串,"true"代表不執行指令,預設為"false"會執行指令.#$conf["doNotRun"]="false";#參考資料:#exec=>http://php.net/manual/en/function.exec.php#escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php#escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php#備註:#不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.#若使用的 command、argu 參數,含有 ~ 則會被視為字串,若有需要其於 shell 中代表的家目錄位置,可用 fileAccess::tildeToPath 來進行轉換.$changePermission=external::callShell($conf["external::callShell"]);unset($conf["external::callShell"]);#如果 $changePermission["status"] 等於 "false"if($changePermission["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$changePermission;#回傳結果return $result;}#if end#函式說明:#呼叫shell執行系統命令,並取得回傳的內容.#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$result["function"],當前執行的函數名稱.#$result["argu"],使用的參數.#$result["cmd"],執行的指令內容.#$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.#$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.#$result["tmpFileOutput"],儲存輸出的暫存檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.#$result["running"],是否還在執行.#$result["pid"],pid.#$result["statusCode"],執行結束後的代碼.#$result["escape"],陣列,儲存出新排序過且已經escape過的指令(key為"cmd")與參數(key為"argu").#必填參數:#$conf["command"],字串,要執行的指令.$conf["external"]["callShell"]["command"]="chmod";#$conf["fileArgu"],字串,變數__FILE__的內容.$conf["external"]["callShell"]["fileArgu"]=__FILE__;#可省略參數:#$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.$conf["external"]["callShell"]["argu"]=array("0777",$uploadDir."/".$ServerFilename.$FileExtension);#$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").#$conf["arguIsAddr"]=array();#$conf["pre"],陣列,要在本指令前執行的每個指令與參數.#$conf["pre"][$i]["cmd"],字串,要在本指令前執行的第$i+1個指令.#$conf["pre"][$i]["param"],陣列字串,要在本指令前執行的第$i+1個指令的參數.#$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".#$conf["enablePrintDescription"]="true";#$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容加上使用的$conf["argu"]參數.#$conf["printDescription"]="";#$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".如果參數為"< 、<< 、> 、>> 、| 、2>&1"之一則不會過濾.$conf["external"]["callShell"]["escapeshellarg"]="true";#$conf["thereIsShellVar"],陣列字串,指令搭配的參數"argu",若含有「\'」,則取代為「"」.每個argu參數都要有對應的元素."true"代表要置換.#$conf["thereIsShellVar"]=array();#$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.#$conf["username"]="";#$conf["password"],字串,root的使用者密碼,預設不使用密碼,該參數不適用於apache環境.#$conf["password"]="";#$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".#$conf["useScript"]="";#$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".#$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";#$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.#$conf["inBackGround"]="";#$conf["getErr"],字串,"true"代表將錯誤輸出變成標準輸出,反之"false"為不變動.#$conf["getErr"]="false";#$conf["doNotRun"],字串,"true"代表不執行指令,預設為"false"會執行指令.#$conf["doNotRun"]="false";#參考資料:#exec=>http://php.net/manual/en/function.exec.php#escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php#escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php#備註:#不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.#若使用的 command、argu 參數,含有 ~ 則會被視為字串,若有需要其於 shell 中代表的家目錄位置,可用 fileAccess::tildeToPath 來進行轉換.$changePermission=external::callShell($conf["external"]["callShell"]);unset($conf["external"]["callShell"]);#如果 $changePermission["status"] 等於 "false"if($changePermission["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$changePermission;#回傳結果return $result;}#if end}#if end#反之檔案移動失敗else{#設置錯誤識別$result["status"]="false";#設置移動檔案失敗的訊息$result["error"][]="移動檔案失敗";#回傳錯誤訊息return $result;}#else end#將指定的檔案名稱與偵測到的副檔名合併在一塊$storeFileName=$ServerFilename.$FileExtension;#如果有要將新檔案的相對位置用修改既有資料的方式寫入到資料表裏面#如果 $dbProcess 等於 "true"if($conf["dbProcess"]=="true"){#將新檔案的相對位置用修改既有資料的方式寫入到資料表裏面#函式說明:#更新資料表裏面的資料#回傳的結果:#$result["status"],爲查詢是否成功,若爲0則成功,若爲1則表示失敗了#$result["error"],錯誤訊息#$result["sql"],執行的sql語法.#必填參數:$conf["db"]["updateDataTableContent"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["updateDataTableContent"]["dbAccount"]=$conf["$dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["updateDataTableContent"]["selectedDataBaseName"]=$conf["dbName"];#要選取的資料庫名稱$conf["db"]["updateDataTableContent"]["tableName"]=$conf["updatingDataTableName"];#要修改的資料表名稱$conf["db"]["updateDataTableContent"]["whereColumn"]=$conf["updatingConditionDataTableColumnName"];#爲用來判斷要更新的哪筆資料的欄位名稱,須爲陣列值$conf["db"]["updateDataTableContent"]["whereValue"]=$conf["updatingConditionDataTableColumnValue"];#為用來判斷是要更新哪筆資料的欄位對應數值,須爲陣列值$conf["db"]["updateDataTableContent"]["tableColumnName"]=$conf["updatingTargetDataTableColumnName"];#資料表項目的名稱陣列$conf["db"]["updateDataTableContent"]["updateDataValue"]=$conf["updatingTargetDataTableColumnValue"];#要更改成對應資料表項目的內容,須為陣列值#如果 $conf["db"]["updateDataTableContent"]["updateDataValue"] 裏面其中一個元素爲 "filePosition" ,則會替換成檔案的新位置。for($i=0;$i<count($conf["updatingTargetDataTableColumnValue"]);$i++){#如果其中一項元素內容爲 "filePosition"if($conf["db"]["updateDataTableContent"]["updateDataValue"][$i]=="filePosition"){#將其更改爲新檔案的位置$conf["db"]["updateDataTableContent"]["updateDataValue"][$i]=$uploadDir."/".$storeFileName;}#if end}#for end#可省略參數:#如果 $conf["dbPassword"] 有設置if(isset($conf["dbPassword"])){$conf["db"]["updateDataTableContent"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end$db["updateDataTableContent"]=db::updateDataTableContent($conf["db"]["updateDataTableContent"]);unset($conf["db"]["updateDataTableContent"]);#如果 $db["updateDataTableContent"]["status"] 等於 "false"if($db["updateDataTableContent"]["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$db["updateDataTableContent"];#回傳結果return $result;}#if end#取得執行的sql語法$result["sql"]=$db["updateDataTableContent"]["sql"];}#if end#將各項結果存進 $result 陣列變數裏面$result["ServerFileName"]=$storeFileName;#檔案名稱$result["ServerFileType"]=$FileType;#檔案類型$result["ServerFileSize"]=$storeFileSizeKb;#檔案大小$result["fileRelativePosition"]=$uploadDir."/".$storeFileName;#檔案的相對位置$result["error"]["uploadErrorCode"]=$FileError;#上傳的錯誤訊息#根據錯誤編號switch($result["error"]["uploadErrorCode"]){#如果編號等於0case 0:#代表沒有錯誤#卸除錯誤識別編號unset($result["error"]);#設置錯誤識別$result["status"]="true";#回傳結果return $result;#跳出switchbreak;#如果編號等於1case 1:#設置錯誤訊息$result["error"][]="檔案大小超出 php.ini 設定檔中的 upload_max_filesize";#設置錯誤識別$result["status"]="false";#回傳結果return $result;#跳出switchbreak;#如果編號等於2case 2:#設置錯誤訊息$result["error"][]="檔案大小超出網頁所限定的 MAX_FILE_SIZE 大小";#設置錯誤識別$result["status"]="false";#回傳結果return $result;#跳出switchbreak;#如果編號等於3case 3:#設置錯誤訊息$result["error"][]="檔案僅上傳成功部份";#設置錯誤識別$result["status"]="false";#回傳結果return $result;#跳出switchbreak;#如果編號等於4case 4:#設置錯誤訊息$result["error"][]="沒有上傳的檔案";#設置錯誤識別$result["status"]="false";#回傳結果return $result;#跳出switchbreak;#如果編號等於6case 6:#設置錯誤訊息$result["error"][]="暫存資料夾遺失";#設置錯誤識別$result["status"]="false";#回傳結果return $result;#跳出switchbreak;#如果編號等於7case 7:#設置錯誤訊息$result["error"][]="檔案寫入硬碟失敗";#設置錯誤識別$result["status"]="false";#回傳結果return $result;#跳出switchbreak;#如果編號等於8case 8:#設置錯誤訊息$result["error"][]="某些擴充套件導致檔案上傳功能不能使用,可用phpinfo()來檢查";#設置錯誤識別$result["status"]="false";#回傳結果return $result;#跳出switchbreak;}#switch end#執行到這邊代表執行正常#將其處理結果設為 "true"$result["status"]="true";#回傳結果return $result;}#function processUploadedFile end/*#函式說明:#處理多個上傳到暫存目錄的檔案,可以移動到指定的位置,並指定檔案的名稱。並且可以指定刪除舊有的檔案,然後將新檔案的相對位置寫入到資料庫裏面。#回傳的變數:#$result["ServerFileName"][$i]#第$i-1個檔案的名稱.#$result["ServerFileType"][$i]#第$i-1個檔案的類型.#$result["ServerFileSize"][$i]#第$i-1個檔案的大小.#$result["status"]#整體上傳有無成功,"true"代表完整成功,"false"代表有過程有錯誤.#$result["error"],錯誤訊息陣列.#$result["fileRelativePosition"][$i]#第$i-1個檔案的相對位置,包含檔案名稱與附檔名。#必填參數:#$conf["formFileName"],為上傳檔案時表單傳送時的名稱陣列.$conf["formFileName"]=array();#可省略參數:#$conf["uploadDirUserDefine"],字串陣列,為存放上傳檔案的目錄,如果沒設定則會自行建立依照系統時間的年月日十分秒來替資料夾命名,並將上傳的檔案存在裏面。#$conf["uploadDirUserDefine"]=array("");#$conf["ServerFilenameUserDefine"],字串陣列,為存放在伺服器上的檔案名稱,如果沒設定則依照台灣時間的年月日時分秒命名#$conf["ServerFilenameUserDefine"]=array("");#$conf["NoFileExtension"],字串陣列,若為 "true" 則表 指定了檔案名稱後,不用再加上檔案型的副檔名,預設皆為為"false".#$conf["NoFileExtension"]=array("true");#$conf["limitPage"],字串陣列,限制只能從哪些網頁檔案過來。#$conf["limitPage"]=array("");#$conf["taskName"],字串,爲該上傳作業的名稱,若沒設定,則預設爲"上傳作業"。#$conf["taskName"]="";#$conf["eraseOldFile"],字串陣列,如果為"true"的話會移除同名的舊檔案,其值爲檔案的相對位置,預設為"false",不移除同名的檔案,並透過編號保留新的檔案.#$conf["eraseOldFile"]=array("");#$conf["dbProcess"],字串,如果爲"true",則會進行資料表資料更新的動作,亦即要設定 $conf["updatingMysqlServerAddress"] $conf["updatingMysqlAccount"] $conf["updatingDataBaseName"] $conf["updatingDataTableName"] $conf["updatingConditionDataTableColumnName"] $conf["updatingConditionDataTableColumnValue"] $conf["updatingTargetDataTableColumnName"] $conf["updatingTargetDataTableColumnValue"] 的內容,預設為"false".#$conf["dbProcess"]="true";#$conf["updatingMysqlServerAddress"],字串,資料庫位於網路上的哪個位置.#$conf["updatingMysqlServerAddress"]=$dbAddress;#$conf["updatingMysqlAccount"],字串,連線時要使用的帳號,省略時代表不用密碼進行連線.#$conf["updatingMysqlAccount"]=$dbAccount;#$conf["updatingMysqlPassword"],字串,連線時要使用的密碼.#$conf["updatingMysqlPassword"]=$dbPassword;#$conf["updatingDataBaseName"],字串,要更新的目標資料所屬資料庫名稱.#$conf["updatingDataBaseName"]=$dbName;#$conf["updatingDataTableName"],字串,要更新的目標資料位於哪個資料表.#$conf["updatingDataTableName"]="";#$conf["updatingConditionDataTableColumnName"],字串陣列,要用哪些欄位來識別要更新哪一筆資料,預設為array("id").#$conf["updatingConditionDataTableColumnName"]=array("id");#$conf["updatingConditionDataTableColumnValue"],字串陣列,該條件欄位內容的數值要爲多少,才是我們要修改的那筆資料。#$conf["updatingConditionDataTableColumnValue"]=array("");#$conf["updatingTargetDataTableColumnName"],字串陣列,要更新的資料欄位有?#$conf["updatingTargetDataTableColumnName"]=array("");#$conf["updatingTargetDataTableColumnValue"],字串陣列,目標資料欄位要改成什麼樣的數值,如果其元素含有"filePosition",則會替換成新檔案的相對位置#$conf["updatingTargetDataTableColumnValue"]=array("");#參考資料:#file_exist()的用法#http://php.net/manual/en/function.file-exists.php#備註:#無.*/public static function processMultiUploadedFile($conf){#初始化要回傳的內容$result=array();#設置當前執行的函數$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck.checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("formFileName");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("array");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";#可省略參數:#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("uploadDirUserDefine","ServerFilenameUserDefine","NoFileExtension","limitPage","taskName","eraseOldFile","dbProcess","updatingMysqlServerAddress","updatingMysqlAccount","updatingMysqlPassword","updatingDataBaseName","updatingDataTableName","updatingConditionDataTableColumnName","updatingConditionDataTableColumnValue","updatingTargetDataTableColumnName","updatingTargetDataTableColumnValue");#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("array","array","array","array","string","array","array","string","string","string","string","string","array","array","array","array");#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array(null,null,null,null,"上傳作業",null,"false",null,null,null,null,null,array("id"),null,null,null);#$conf["variableCheck.checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.$conf["variableCheck.checkArguments"]["arrayCountEqualCheck"][]=array("uploadDirUserDefine","ServerFilenameUserDefine","NoFileExtension","eraseOldFile");$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);unset($conf["variableCheck.checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果 count($conf["formFileName"]) 為 0if(count($conf["formFileName"])==0){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"][]="陣列變數 \"formFileName\" 裡面必須要有元素";#回傳結果return $result;}#if end#有幾個要接收的檔案就執行幾次for($i=0;$i<count($conf["formFileName"]);$i++){#如果 $conf["formFileName"][$i] 不存在if(!isset($conf["formFileName"][$i])){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"][]="表單檔案變數名稱有缺";#回傳結果return $result;}#if end#函式說明:#處理上傳到暫存目錄的檔案,可以移動到指定的位置,並指定檔案的名稱。並且可以指定刪除舊有的檔案,然後將新檔案的相對位置寫入到資料庫裏面。#回傳的變數:#$result["status"],整體上傳有無成功。"true"代表完整成功 "false"代表有過程有錯誤#$result["error"],錯誤訊息陣列,$result["error"][0] 為"沒有接收到上傳的檔案",則代表沒有上傳檔案.#$result["warning"],警告訊息陣列#$result["ServerFileName"],檔案名稱#$result["ServerFileType"],檔案類型#$result["ServerFileSize"],檔案大小#$result["fileRelativePosition"],檔案的相對位置,包含檔案名稱與附檔名。#必填參數:#$conf["form::processUploadedFile"]["formFileName"],字串,為上傳檔案時表單傳送時的名稱$conf["form::processUploadedFile"]["formFileName"]=$conf["formFileName"][$i];#可省略參數:#如果 $conf["uploadDirUserDefine"] 存在if(isset($conf["uploadDirUserDefine"])){#如果 $conf["uploadDirUserDefine"][$i] 有設置if(isset($conf["uploadDirUserDefine"][$i])){#$conf["form::processUploadedFile"]["uploadDirUserDefine"],字串,為存放上傳檔案的目錄,如果沒設定則會自行建立依照系統時間的年月日十分秒來替資料夾命名,並將上傳的檔案存在裏面。$conf["form::processUploadedFile"]["uploadDirUserDefine"]=$conf["uploadDirUserDefine"][$i];}#if end}#if end#如果 $conf["ServerFilenameUserDefine"] 有設置if(isset($conf["ServerFilenameUserDefine"])){#如果 $conf["ServerFilenameUserDefine"][$i] 有設置if(isset($conf["ServerFilenameUserDefine"][$i])){#$conf["form::processUploadedFile"]["ServerFilenameUserDefine"],字串,為存放在伺服器上的檔案名稱,如果沒設定則依照台灣時間的年月日時分秒命名$conf["form::processUploadedFile"]["ServerFilenameUserDefine"]=$conf["ServerFilenameUserDefine"][$i];}#if end}#if end#如果 $conf["NoFileExtension"] 有設置if(isset($conf["NoFileExtension"])){#如果 $conf["NoFileExtension"][$i] 有設置if(isset($conf["NoFileExtension"][$i])){#$conf["form::processUploadedFile"]["NoFileExtension"],字串,若為 "true" 則表 指定了檔案名稱後,不用再加上檔案型的副檔名,預設為"false".$conf["form::processUploadedFile"]["NoFileExtension"]="true";}#if end}#if end#如果 $conf["limitPage"] 有設置if(isset($conf["limitPage"])){#$conf["form::processUploadedFile"]["limitPage"],字串陣列,限制只能從哪些網頁檔案過來。$conf["form::processUploadedFile"]["limitPage"]=$conf["limitPage"];}#if end#如果 $conf["taskName"] 有設置if(isset($conf["taskName"])){#$conf["form::processUploadedFile"]["taskName"],字串,爲該上傳作業的名稱,若沒設定,則預設爲"上傳作業"。$conf["form::processUploadedFile"]["taskName"]=$conf["taskName"];}#if end#如果 $conf["eraseOldFile"] 有設置if(isset($conf["eraseOldFile"])){#如果 $conf["eraseOldFile"][$i] 有設置if(isset($conf["eraseOldFile"][$i])){#$conf["form::processUploadedFile"]["eraseOldFile"],字串,如果為"true"的話會移除同名的舊檔案,其值爲檔案的相對位置,預設為"false",不移除同名的檔案,並透過編號保留新的檔案.$conf["form::processUploadedFile"]["eraseOldFile"]=$conf["eraseOldFile"][$i];}#if end}#if end#$conf["form::processUploadedFile"]["dbProcess"],字串,如果爲"true",則會進行資料表資料更新的動作,亦即要設定 $conf["updatingMysqlServerAddress"] $conf["updatingMysqlAccount"] $conf["updatingDataBaseName"] $conf["updatingDataTableName"] $conf["updatingConditionDataTableColumnName"] $conf["updatingConditionDataTableColumnValue"] $conf["updatingTargetDataTableColumnName"] $conf["updatingTargetDataTableColumnValue"] 的內容,預設為"false".$conf["form::processUploadedFile"]["dbProcess"]=$conf["dbProcess"];#如果 $conf["updatingMysqlServerAddress"] 有設定if(isset($conf["updatingMysqlServerAddress"])){#$conf["form::processUploadedFile"]["updatingMysqlServerAddress"],字串,資料庫位於網路上的哪個位置.$conf["form::processUploadedFile"]["updatingMysqlServerAddress"]=$conf["updatingMysqlServerAddress"];}#if end#如果 $conf["updatingMysqlAccount"] 有設定if(isset($conf["updatingMysqlAccount"])){#$conf["form::processUploadedFile"]["updatingMysqlAccount"],字串,連線時要使用的帳號,省略時代表不用密碼進行連線.$conf["form::processUploadedFile"]["updatingMysqlAccount"]=$conf["updatingMysqlAccount"];}#if end#如果 $conf["updatingMysqlPassword"] 有設定if(isset($conf["updatingMysqlPassword"])){#$conf["form::processUploadedFile"]["updatingMysqlPassword"],字串,連線時要使用的密碼.$conf["form::processUploadedFile"]["updatingMysqlPassword"]=$conf["updatingMysqlPassword"];}#if end#如果 $conf["updatingDataBaseName"] 有設置if(isset($conf["updatingDataBaseName"])){#$conf["form::processUploadedFile"]["updatingDataBaseName"],字串,要更新的目標資料所屬資料庫名稱.$conf["form::processUploadedFile"]["updatingDataBaseName"]=$dbName;}#if end#如果 $conf["updatingDataTableName"] 有設置if(isset($conf["updatingDataTableName"])){#$conf["form::processUploadedFile"]["updatingDataTableName"],字串,要更新的目標資料位於哪個資料表.$conf["form::processUploadedFile"]["updatingDataTableName"]=$conf["updatingDataTableName"];}#if end#如果 $conf["updatingConditionDataTableColumnName"] 有設置if(isset($conf["updatingConditionDataTableColumnName"])){#$conf["form::processUploadedFile"]["updatingConditionDataTableColumnName"],字串陣列,要用哪些欄位來識別要更新哪一筆資料,預設為array("id").$conf["form::processUploadedFile"]["updatingConditionDataTableColumnName"]=$conf["updatingConditionDataTableColumnName"];}#if end#如果 $conf["updatingConditionDataTableColumnValue"] 有設置if(isset($conf["updatingConditionDataTableColumnValue"])){#$conf["form::processUploadedFile"]["updatingConditionDataTableColumnValue"],字串陣列,該條件欄位內容的數值要爲多少,才是我們要修改的那筆資料。$conf["form::processUploadedFile"]["updatingConditionDataTableColumnValue"]=$conf["updatingConditionDataTableColumnValue"];}#if end#如果 $conf["updatingTargetDataTableColumnName"] 有設置if(isset($conf["updatingTargetDataTableColumnName"])){#$conf["form::processUploadedFile"]["updatingTargetDataTableColumnName"],字串陣列,要更新的資料欄位有?$conf["form::processUploadedFile"]["updatingTargetDataTableColumnName"]=$conf["updatingTargetDataTableColumnName"];}#if end#如果 $conf["updatingTargetDataTableColumnValue"] 有設置if(isset($conf["updatingTargetDataTableColumnValue"])){#$conf["form::processUploadedFile"]["updatingTargetDataTableColumnValue"],字串陣列,目標資料欄位要改成什麼樣的數值,如果其元素含有"filePosition",則會替換成新檔案的相對位置$conf["form::processUploadedFile"]["updatingTargetDataTableColumnValue"]=$conf["updatingTargetDataTableColumnValue"];}#if end#參考資料:#file_exist()的用法#http://php.net/manual/en/function.file-exists.php$processUploadedFile=form::processUploadedFile($conf["form::processUploadedFile"]);unset($conf["form::processUploadedFile"]);#如果 form::processUploadedFile 執行失敗if($processUploadedFile["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$processUploadedFile;#回傳結果return $result;}#if end#取得回傳的結果#$result["ServerFileName"][$i],第$i-1個檔案的名稱.$result["ServerFileName"][$i]=$processUploadedFile["ServerFileName"];#$result["ServerFileType"][$i],第$i-1個檔案的類型.$result["ServerFileType"][$i]=$processUploadedFile["ServerFileType"];#$result["ServerFileSize"][$i],第$i-1個檔案的大小.$result["ServerFileSize"][$i]=$processUploadedFile["ServerFileSize"];#$result["fileRelativePosition"][$i],第$i-1個檔案的相對位置,包含檔案名稱與附檔名。$result["fileRelativePosition"][$i]=$processUploadedFile["fileRelativePosition"];}#for end#設置執行正常$result["status"]="true";#回傳結果return $result;}#function processMultiUploadedFile/*#函式說明:#上傳多個檔案#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["content"],上傳檔案的語法.#必填參數:#$conf["formFileName"],字串陣列,每個要上傳檔案的表單名稱.$conf["formFileName"]=array("");#可省略參數:#$conf["maxFileSize"],字串陣列,各個檔案的最大限制,單位是位元組(byte)。1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設是10240000(10MB)#$conf["maxFileSize"]=array("10240000");#$conf["browseButtonClass"],字串陣列,瀏覽檔案的按鈕樣式,預設為"__qbpwcf_inputFileCssStyle".#$conf["browseButtonClass"]=array("__inputFileCssStyle");#$conf["acceptType"],字串陣列,限定各個檔案的類型為"video/*","audio/*","image/*",預設不限定.#$conf["acceptType"]=array("");#$conf["required"],字串陣列,各個欄位是否必填,"true"為必填,"false"為可留空,預設為"false".#$conf["required"]=array("true");#$conf["comment"],字串陣列,各個上傳檔案的註解,預設不顯示.#$conf["comment"]=array("");#$conf["formStart"],字串,是否為表單的開始,"true"為是,預設為"false".#$conf["formStart"]="true";#$conf["formName"],字串,表單的名稱#$conf["formName"]="";#$conf["formAction"],字串,表單的目標,若有設置$conf["formStart"]為"true",則預設為php檔案自己#$conf["formAction"]="";#$conf["formTarget"],字串,表單要呈現回應的位置,預設為"_self".#$conf["formTarget"]="_self";#參考資料:#無.#備註:#無.*/public static function uploadMultiFile(&$conf){#初始化要回傳的變數$result=array();#設置當前執行的函式$result["function"]=__FUNCTION__;#初始化表單開始的語法$result["content"]="";#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("formFileName");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。#$conf["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("maxFileSize","browseButtonClass","formStart","formAction","formTarget","comment","formName","acceptType","required");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array","array","string","string","string","array","string","array","array");#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null,"false",null,"_self",null,null,null,null);#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查參數失敗if($checkResult["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查參數不通過if($checkResult["passed"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果 $conf["formStart"] 跟 $conf["formAction"] 皆有設置if(isset($conf["formStart"]) && isset($conf["formAction"])){#函式說明:#表單開始#回傳結果:#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$resutl["function"],當前執行的函式名稱.#$result["content"],表單開始的語法.#必填參數:$conf["form::start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容#可省略參數:#$conf["legend"]="";#顯示表單的標題#如果 $conf["formName"] 有設置if(isset($conf["formName"])){$conf["form::start"]["name"]=$conf["formName"];#爲該表單的名稱}#if end#$conf["form::start"]["method"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。#如果 $conf["formTarget"] 有設置if(isset($conf["formTarget"])){$conf["form::start"]["target"]=$conf["formTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。}#if end#$conf["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是,"false"為否,預設為"false".#$conf["tableClass"]="";#表格要套用的css樣式,預設爲"__withoutBorder"無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。#$conf["showFieldsetBorder"]="false";#是否要顯示表單區域的框線,預設為"false"不顯示,"true"代表要顯示.#參考資料:#http://www.w3schools.com/html/html_forms.asp#http://www.w3schools.com/tags/tag_fieldset.asp$formStart=form::start($conf["form::start"]);unset($conf["form::start"]);#如果表單開始失敗if($formStart["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$formStart;#回傳結果return $result;}#if end#串接表單開始$result["content"]=$result["content"].$formStart["content"];}#if end#陣列 $conf["formFileName"] 中有幾個元素,就執行幾次for($i=0;$i<count($conf["formFileName"]);$i++){#如果 $conf["formFileName"][$i] 不存在if(!isset($conf["formFileName"][$i])){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"][]="表單變數有缺";#回傳結果return $result;}#if end#函式說明:#可以瀏覽要上傳的檔案#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["content"],上傳檔案的語法.#必填參數:#$conf["formFileName"],字串,該上傳檔案的表單名稱.$conf["form::uploadOneFile"]["formFileName"]=$conf["formFileName"][$i];#可省略參數:#如果 $conf["maxFileSize"] 有設置if(isset($conf["form::uploadOneFile"])){#如果 $conf["form::uploadOneFile"][$i] 有設置if(isset($conf["form::uploadOneFile"][$i])){#$conf["form::uploadOneFile"]["maxFileSize"],字串,檔案的最大限制,單位是位元組(byte)。1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設是10240000(10MB)$conf["form::uploadOneFile"]["maxFileSize"]=$conf["maxFileSize"];}#if end}#if end#如果 $conf["browseButtonClass"] 有設置if(isset($conf["browseButtonClass"])){#如果 $conf["browseButtonClass"][$i] 有設置if(isset($conf["browseButtonClass"][$i])){#$conf["form::uploadOneFile"]["browseButtonClass"],字串,瀏覽檔案的按鈕樣式,預設為"__inputFileCssStyle".$conf["form::uploadOneFile"]["browseButtonClass"]="__inputFileCssStyle";}#if end}#if end#如果 $conf["acceptType"] 有設置if(isset($conf["acceptType"])){#如果 $conf["acceptType"][$i] 存在if(isset($conf["acceptType"][$i])){#$conf["form::uploadOneFile"]["acceptType"],字串,限定檔案的類型為"video/*","audio/*","image/*",預設不限定.$conf["form::uploadOneFile"]["acceptType"]=$conf["acceptType"][$i];}#if end}#if end#如果 $conf["required"] 有設置if(isset($conf["required"])){#如果 $conf["required"][$i] 有設置if(isset($conf["required"][$i])){#$conf["form::uploadOneFile"]["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".$conf["form::uploadOneFile"]["required"]=$conf["required"][$i];}#if end}#if end#$conf["trStart"],字串,爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設為"false".#$conf["trStart"]="true";#$conf["trClass"],字串,列的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式,預設為"__withoutBorder".#$conf["trClass"]="__withoutBorder";#$conf["tdStart"],字串,爲是否要以<td>開頭,"true"表示"是",也可以看成列裏面的元素開始,預設為"false".#$conf["tdStart"]="false";#$conf["tdClass"],字串,行的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式,預設為"__withoutBorder".#$conf["tdClass"]="__withoutBorder";#$conf["tdEnd"],字串,爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設為"false".#$conf["tdEnd"]="true";#$conf["trEnd"],字串,爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設為"false".#$conf["trEnd"]="true";#$conf["form::uploadOneFile"]["formStart"],字串,是否為表單的開始,"true"為是,預設為"false".#$conf["form::uploadOneFile"]["formStart"]=$conf["formStart"];#$conf["form::uploadOneFile"]["formName"],字串,表單的名稱#$conf["form::uploadOneFile"]["formName"]=$conf["formName"];#$conf["form::uploadOneFile"]["formAction"],字串,表單的目標,若有設置$conf["formStart"]為"true",則預設為php檔案自己#$conf["form::uploadOneFile"]["formAction"]=$conf["formAction"];#$conf["form::uploadOneFile"]["formTarget"],字串,表單要呈現回應的位置,預設為"_self".#$conf["form::uploadOneFile"]["formTarget"]=$conf["formTarget"];#$conf["form::uploadOneFile"]["formEnd"],字串,是否為表單的結束,"true"為是,預設為"false".#$conf["form::uploadOneFile"]["formEnd"]=$conf["formEnd"];#如果有設定 $conf["comment"]if(isset($conf["comment"])){#如果有設定 $conf["comment"][$i]if(isset($conf["comment"][$i])){#$conf["form::uploadOneFile"]["comment"],字串,該上傳檔案的註解,預設不顯示.$conf["form::uploadOneFile"]["comment"]=$conf["comment"][$i];}#if end}#if end$uploadOneFile=form::uploadOneFile($conf["form::uploadOneFile"]);unset($conf["form::uploadOneFile"]);#如果 form::uploadOneFile 執行失敗if($uploadOneFile["status"]=="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$uploadOneFile;#回傳結果return $result;}#if end#如果不是最後一筆if($i!=count($conf["formFileName"])-1){#取得上傳的語法,結尾空一列.$result["content"]=$result["content"].$uploadOneFile["content"]."<p> </p>";}#if end#反之是最後一筆else{#取得上傳的語法$result["content"]=$result["content"].$uploadOneFile["content"];}#else end}#for end#設置執行正常$result["status"]="true";#回傳結果return $result;}#function uploadMultiFile end/*#函式說明:#上傳多個檔案,包含回上頁跟送出表單的按鈕.#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["content"],上傳檔案的語法.#必填參數:#$conf["formFileName"],字串陣列,該上傳檔案的表單名稱.$conf["formFileName"]=array("");#$conf["actionPage"],字串,處理表單資訊的頁面.$conf["actionPage"]="";#可省略參數:#$conf["backButtonName"],字串,退回上一頁的按鈕要顯示的名稱,預設爲"回上頁"#$conf["backButtonName"]="回上頁";#$conf["backPage"],字串,返回的按鈕點了之後要到哪個頁面,預設是不使用.#$conf["backPage"]="";#$conf["backTarget"],字串,返回按鈕的顯示區塊,可以為"_self"自己這個頁面,"_top"整個畫面,"_blank"新的分頁,"_parent"父頁面,預設為"_self".#$conf["backTarget"]="";#$conf["backButtonClass"],字串,回上頁按鈕的css樣式,預設為"__qbpwcf_button".#$conf["backButtonClass"]="__simpleButtonLinkDefaultButtonCssStyle";#$conf["formName"],字串,表單的名稱#$conf["formName"]="";#$conf["formTarget"],字串,表單要呈現回應的位置,預設為"_self".#$conf["formTarget"]="_self";#$conf["acceptType"],字串陣列,限定各個檔案的類型為"video/*","audio/*","image/*",預設不限定.#$conf["acceptType"]=array("");#$conf["comment"],字串陣列,各個上傳檔案的註解,預設不顯示.#$conf["comment"]=array("");#$conf["required"],字串陣列,各個欄位是否必填,"true"為必填,"false"為可留空,預設為"false".#$conf["required"]=array("true");#$conf["maxFileSize"],字串陣列,各個檔案的最大限制,單位是位元組(byte),1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設爲"102400000"(100MB)#$conf["maxFileSize"]=array("102400000");#$conf["browseButtonClass"],字串陣列,瀏覽要上傳檔案的css樣式,預設為"__qbpwcf_inputFileCssStyle".#$conf["browseButtonClass"]=array("__inputFileCssStyle");#$conf["submitButtonClass"],字串,上傳按鈕的css樣式,預設為"__qbpwcf_button".#$conf["submitButtonClass"]="__simpleButtonLinkDefaultButtonCssStyle";#$conf["submitButtonName"],字串,送出鈕要顯示的名稱,預設爲"上傳"#$conf["submitButtonName"]="上傳";#參考資料:#無.#備註:#無.*/public static function uploadMultiFileCom(&$conf){#初始化要回傳的變數$result=array();#設置當前執行的函式$result["function"]=__FUNCTION__;#初始化表單開始的語法$result["content"]="";#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("formFileName","actionPage");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("backButtonName","backPage","backTarget","backButtonClass","formName","formTarget","acceptType","comment","required","maxFileSize","browseButtonClass","submitButtonClass","submitButtonName");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","array","array","array","array","array","string","string");#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("回上頁",null,"_self","__qbpwcf_button",null,"_self",null,null,null,null,null,"__qbpwcf_button","上傳");#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查參數失敗if($checkResult["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查參數不通過if($checkResult["passed"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$checkResult;#回傳結果return $result;}#if end#函式說明:#上傳多個檔案#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["content"],上傳檔案的語法.#必填參數:#$conf["form::uploadMultiFile"]["formFileName"],字串陣列,每個要上傳檔案的表單名稱.$conf["form::uploadMultiFile"]["formFileName"]=$conf["formFileName"];#可省略參數:#如果 $conf["maxFileSize"] 有設置if(isset($conf["maxFileSize"])){#$conf["form::uploadMultiFile"]["maxFileSize"],字串陣列,各個檔案的最大限制,單位是位元組(byte)。1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設是10240000(10MB)$conf["form::uploadMultiFile"]["maxFileSize"]=$conf["maxFileSize"];}#if end#如果有設置 $conf["browseButtonClass"]if(isset($conf["browseButtonClass"])){#$conf["form::uploadMultiFile"]["browseButtonClass"],字串陣列,瀏覽檔案的按鈕樣式,預設為"__inputFileCssStyle".$conf["form::uploadMultiFile"]["browseButtonClass"]=$conf["browseButtonClass"];}#if end#如果有設置 $conf["acceptType"]if(isset($conf["acceptType"])){#$conf["form::uploadMultiFile"]["acceptType"],字串陣列,限定各個檔案的類型為"video/*","audio/*","image/*",預設不限定.$conf["form::uploadMultiFile"]["acceptType"]=$conf["acceptType"];}#if end#如果有設置 $conf["required"]if(isset($conf["required"])){#$conf["form::uploadMultiFile"]["required"],字串陣列,各個欄位是否必填,"true"為必填,"false"為可留空,預設為"false".$conf["form::uploadMultiFile"]["required"]=$conf["required"];}#if end#如果有設置 $conf["comment"]if(isset($conf["comment"])){#$conf["form::uploadMultiFile"]["comment"],字串陣列,各個上傳檔案的註解,預設不顯示.$conf["form::uploadMultiFile"]["comment"]=$conf["comment"];}#if end#$conf["form::uploadMultiFile"]["formStart"],字串,是否為表單的開始,"true"為是,預設為"false".$conf["form::uploadMultiFile"]["formStart"]="true";#如果有設置 $conf["formName"]if(isset($conf["formName"])){#$conf["form::uploadMultiFile"]["formName"],字串,表單的名稱$conf["form::uploadMultiFile"]["formName"]=$conf["formName"];}#if end#$conf["form::uploadMultiFile"]["formAction"],字串,表單的目標,若有設置$conf["formStart"]為"true",則預設為php檔案自己$conf["form::uploadMultiFile"]["formAction"]=$conf["actionPage"];#如果有設置 $conf["formTarget"]if(isset($conf["formTarget"])){#$conf["form::uploadMultiFile"]["formTarget"],字串,表單要呈現回應的位置,預設為"_self".$conf["form::uploadMultiFile"]["formTarget"]=$conf["formTarget"];}#if end$uploadMultiFile=form::uploadMultiFile($conf["form::uploadMultiFile"]);unset($conf["form::uploadMultiFile"]);#如果執行 form::uploadMultiFile 失敗if($uploadMultiFile["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$uploadMultiFile;#回傳結果return $result;}#if end#串接多個上傳表單的內容$result["content"]=$result["content"].$uploadMultiFile["content"];#建立送出的按鈕#函式說明:#放置按鈕#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["content"],按鈕語法.#必填參數:$conf["form::button"]["buttonDisplayValue"]=$conf["submitButtonName"];#爲按鈕上顯示的文字。#可省略參數:#$conf["buttonStyleName"]="";#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __simpleButtonLinkDefaultButtonCssStyle 。#其屬性爲 "width","height","font-size","text-align"#其屬性值爲 "100%" , "50" , "30" , "center"#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。#"document.forms.formName.submit()"爲傳送名爲testForm的表單內容#"window.print()"爲使用瀏覽器內建工具列印當前網頁#$conf["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".#$conf["tableStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"false"。#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",亦即沒有框線的樣式;"__withBorder"則爲有框線的樣式#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".#$conf["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是,預設爲"false"。#$conf["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".#$conf["action"]="";#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用#$conf["target"]="";#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用$conf["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".#參考資料:#http://stackoverflow.com/questions/3014649/how-to-disable-html-button-using-javascript$button=form::button($conf["form::button"]);unset($conf["form::button"]);#如果建立送出按鈕失敗if($button["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$button;#回傳結果return $result;}#if end#空一列然後串接送出按鈕$result["content"]=$result["content"]."<p> </p>".$button["content"];#設置執行正常$result["status"]="true";#回傳結果return $result;}#function uploadMultiFileCom end/*#函式說明:#將接收到的表單資訊用serialize壓縮成一字串.#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["content"],serialize後的表單資料字串.#必填參數:#無#可省略參數:#$conf["type"],接收的表單傳送方式,可以用的有"post","get","any",預設為 "any".#$conf["type"]="any";#參考資料:#serialize=>http://php.net/manual/en/function.serialize.php#備註:#無.*/public static function serialize(&$conf=array()){#初始化要回傳的結果$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查可省略參數#函式說明:#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。#必填參數:#$conf["checkedVar"],陣列,要檢查的變數陣列名稱為?$conf["heck::checkSkipableVarType"]["checkedVar"]=$conf;#$conf["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.$conf["heck::checkSkipableVarType"]["sikpableVarNameArray"]=array("type");#$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).$argu=&$conf["heck::checkSkipableVarType"];#可省略參數:#$conf["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何,null代表不指定變數形態.$conf["heck::checkSkipableVarType"]["skipableVarTypeArray"]=array("array");#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的變數要初始化為什麼,null代表不指定.$conf["heck::checkSkipableVarType"]["skipableVarDefaultValue"]=array("any");$checkSkipableVarType=variableCheck::checkSkipableVarType($conf["heck::checkSkipableVarType"],$argu);unset($conf["heck::checkSkipableVarType"]);$conf=$argu;#如果檢查參數失敗if($checkSkipableVarType["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$checkSkipableVarType;#回傳結果return $result;}#if end#判斷 $conf["type"]switch($conf["type"]){#如果是 post, POSTcase "post":case "POST":#取得 serialize 後的post表單資料$result["content"]=serialize($_POST);break;#如果是 get, GETcase "get":case "GET":#取得 serialize 後的get表單資料$result["content"]=serialize($_GET);break;#如果是 anycase "any":#取得 serialize 後的表單資料$result["content"]=serialize($_REQUEST);break;default:#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]="參數 \"type\" 僅能為 post,get,any 之一";#回傳結果return $result;}#switch end#設置執行正常$result["status"]="true";#回傳結果return $result;}#function serialize end/*#函式說明:#將接收到的受到serialize壓縮成一字串的表單資訊進行還原#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["error"],錯誤訊息陣列.#$result["content"],serialize後的表單資料字串.#必填參數:#$conf["serial_FD_str"],透過serialize壓縮過的表單資料$conf["serial_FD_str"]="";#可省略參數:#無#參考資料:#serialize=>http://php.net/manual/en/function.serialize.php#備註:#無.*/public static function unserialize(&$conf){#初始化要回傳的結果$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果沒有參數if(func_num_args()==0){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]="函數".$result["function"]."需要參數";#回傳結果return $result;}#if end#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";#回傳結果return $result;}#if end}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck.checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("serial_FD_str");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";#可省略參數:#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="true";#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");#$conf["skipableVariableName"]=array();#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");#$conf["skipableVariableType"]=array();#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.#$conf["skipableVarDefaultValue"]=array("");$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);unset($conf["variableCheck.checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkResult;#回傳結果return $result;}#if end#取得解開的表單資料$result["content"]=unserialize($conf["serial_FD_str"]);#設置執行正常$result["status"]="true";#回傳結果return $result;}#function unserialize end/*#函式說明:#判斷當前php檔的執行是否為ajax的要求.#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["content"],是否為ajax要求,"true"代表是,"false"代表不是.#$result["argu"],使用的參數.#可省略參數:#$conf["useGetVarToRecogniseAjaxRequest"],字串,用來識別是否為ajax要求的get變數名稱,若其值為"true"則代表為ajax要求,反之為"false",判斷好後會將該變數移除.#$conf["useGetVarToRecogniseAjaxRequest"]="is_ajax";#$conf["usePostVarToRecogniseAjaxRequest"],字串,用來識別是否為ajax要求的post變數名稱,若其值為"true"則代表為ajax要求,反之為"false",判斷好後會將該變數移除.#$conf["usePostVarToRecogniseAjaxRequest"]="is_ajax";#參考資料:#無.#備註:#如果client端沒有傳送ajax要求的識別header,則無法識別是ajax要求.*/public static function is_ajax(&$conf=array()){#初始化要回傳的結果$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#取得參數$result["argu"]=$conf;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。#必填參數:#$conf["checkedVar"],陣列,要檢查的變數陣列名稱為?$conf["variableCheck::checkSkipableVarType"]["checkedVar"]=$conf;#$conf["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.$conf["variableCheck::checkSkipableVarType"]["sikpableVarNameArray"]=array("useGetVarToRecogniseAjaxRequest","usePostVarToRecogniseAjaxRequest");#$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).$argu=&$conf;#可省略參數:#$conf["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何,null代表不指定變數形態.$conf["variableCheck::checkSkipableVarType"]["skipableVarTypeArray"]=array("string","string");#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的變數要初始化為什麼,null代表不指定.$conf["variableCheck::checkSkipableVarType"]["skipableVarDefaultValue"]=array(null,null);$checkSkipableVarType=variableCheck::checkSkipableVarType($conf["variableCheck::checkSkipableVarType"],$argu);unset($conf["variableCheck::checkSkipableVarType"]);#如果檢查失敗if($checkSkipableVarType["status"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkSkipableVarType;#回傳結果return $result;}#if end#如果檢查不通過if($checkSkipableVarType["passed"]=="false"){#設置執行不正常$result["status"]="false";#程式停止執行$result["error"]=$checkSkipableVarType;#回傳結果return $result;}#if end#如果存在 $conf["useGetVarToRecogniseAjaxRequest"]if(isset($conf["useGetVarToRecogniseAjaxRequest"])){#如果存在 $_GET[$conf["useGetVarToRecogniseAjaxRequest"]]if(isset($_GET[$conf["useGetVarToRecogniseAjaxRequest"]])){#如果 $_GET[$conf["useGetVarToRecogniseAjaxRequest"]] 為 "true"if($_GET[$conf["useGetVarToRecogniseAjaxRequest"]]==="true"){#設置為ajax要求$result["content"]="true";#移除識別 ajax 要求的 post 變數unset($_GET[$conf["useGetVarToRecogniseAjaxRequest"]]);}#if end}#if end}#if end#反之如果存在 $conf["usePostVarToRecogniseAjaxRequest"]else if(isset($conf["usePostVarToRecogniseAjaxRequest"])){#如果存在 $_POST[$conf["usePostVarToRecogniseAjaxRequest"]]if(isset($_POST[$conf["usePostVarToRecogniseAjaxRequest"]])){#如果 $_POST[$conf["usePostVarToRecogniseAjaxRequest"]] 為 "true"if($_POST[$conf["usePostVarToRecogniseAjaxRequest"]]==="true"){#設置為ajax要求$result["content"]="true";#移除識別 ajax 要求的 post 變數unset($_POST[$conf["usePostVarToRecogniseAjaxRequest"]]);}#if end}#if end}#if end#如果存在 $_SERVER['HTTP_X_REQUESTED_WITH']else if(isset($_SERVER['HTTP_X_REQUESTED_WITH'])){#且其 $_SERVER['HTTP_X_REQUESTED_WITH'] 值為 'xmlhttprequest'if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH'])==='xmlhttprequest'){#設置為ajax要求$result["content"]="true";}#if end}#if end#如果不存在 $result["content"]if(!isset($result["content"])){#設置不為ajax要求$result["content"]="false";}#if end#設置執行正常$result["status"]="true";#回傳結果return $result;}#function is_ajax end/*#函式說明:#水平拉霸#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["content"],js語法.#$result["argu"],使用的參數.#必填參數:#$conf["name"],字串,拉霸的名稱,不可重複,會出錯。$conf["name"]="a";#可省略參數:#$conf["selectedColor"],字串,當前數值於bar上的顏色,預設為"orange".#$conf["selectedColor"]="orange";#$conf["unSelectedColor"],字串,非當前數值於bar上的顏色,預設為#d3d3d3.#$conf["unSelectedColor"]="#d3d3d3";#參考資料:#無.#備註:#會產生 window.qbpwcf.form.bar 物件.若要印出拉霸則可呼叫函式 window.qbpwcf.form.bar.print() 方法.若要存取變更拉霸的設定可呼叫 window.qbpwcf.form.bar.content 取得dom.*/public static function bar(&$conf=array()){#初始化要回傳的結果$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#取得參數$result["argu"]=$conf;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["argu"],設置給予的參數.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填寫的參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可以省略的參數:#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("name");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.#$conf["canNotBeEmpty"]=array();#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.#$conf["canBeEmpty"]=array();#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("selectedColor","unSelectedColor");#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("selectedColor","unSelectedColor");#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("orange","#d3d3d3");#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".#$conf["disallowAllSkipableVarIsEmpty"]="";#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".#$conf["disallowAllSkipableVarIsEmptyArray"]="";#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#若檢查參數失敗if($checkArguments["status"]==="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#若檢查參數不通過if($checkArguments["passed"]==="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#加入 js#函式說明:#將要執行的script語法透過該函式執行(會在程式外層用<script></script>包起來).#回傳結果:#$result["status"],執行是否正常,"true"為正常,"false"為不正常.#$result["error"],錯誤訊息陣列#$result["function"],當前執行的函數名稱#$result["content"],要執行的javaScript語法#必填參數:#$conf["script"],字串,要執行的javaScript語法.$conf["javaScript::toScript"]["script"]="//確認變數存在 - startif(window.qbpwcf===undefined){window.qbpwcf={};}if(window.qbpwcf.form===undefined){window.qbpwcf.form={};}if(window.qbpwcf.form.bar===undefined){window.qbpwcf.form.bar={};}//確認變數 - end//建立 root divrootDiv=document.createElement('div');rootDiv.id='".$conf["name"]."rootDiv';//建立 onoff divonoffDiv=document.createElement('div');onoffDiv.id='".$conf["name"]."onoffDiv';onoffDiv.style.width='200px';//建立 off 的 div tagoffDiv=document.createElement('div');offDiv.id='".$conf["name"]."off';offDiv.innerText='off ';offDiv.style.display='inline';offDiv.style.float='left';//如果點擊了 off 字樣offDiv.addEventListener('click',function(e){//一百次迴圈for(i=0;i<100;i++){//取得該bar partthisBarPart=document.getElementById('".$conf["name"]."bar'+i);//設置為灰色thisBarPart.style.borderColor='".$conf["unSelectedColor"]."';}//for end//取得 bar 數值barVal=document.getElementById('".$conf["name"]."barVal');//設置為 '0%'barVal.innerText='0%';//設置實際數值為 '0'barVal.dataset.val='0';});//放入off的文字onoffDiv.appendChild(offDiv);//建立 on 的 div tagonDiv=document.createElement('div');onDiv.id='".$conf["name"]."on';onDiv.innerText=' on';onDiv.style.display='inline';onDiv.style.float='right';//如果點擊了 on 字樣onDiv.addEventListener('click',function(e){//一百次迴圈for(i=0;i<100;i++){//取得該bar partthisBarPart=document.getElementById('".$conf["name"]."bar'+i);//設置為灰色thisBarPart.style.borderColor='".$conf["unSelectedColor"]."';}//for end//取得 bar 數值barVal=document.getElementById('".$conf["name"]."barVal');//設置為 '0%'barVal.innerText='on';//設置實際數值為 '0'barVal.dataset.value='?';});//放入on的文字onoffDiv.appendChild(onDiv);//建立 on 的 div tagdiv=document.createElement('div');//放入空divrootDiv.appendChild(div);//放入 on off divrootDiv.appendChild(onoffDiv);//100次迴圈for(i=0;i<100;i++){//建立拉霸line=document.createElement('div');//設置拉霸樣式line.id='".$conf["name"]."bar'+i;line.dataset.val=i+1;line.style.borderStyle='solid';line.style.borderColor='".$conf["unSelectedColor"]."';line.style.borderWidth='1px';line.style.borderRadius='1px';line.style.display='inline';//放入拉霸partrootDiv.appendChild(line);//點擊事件line.addEventListener('click',function(e){//一百次迴圈for(j=0;j<100;j++){//取得該bar partthisBarPart=document.getElementById('".$conf["name"]."bar'+j);//設置為灰色thisBarPart.style.borderColor='".$conf["unSelectedColor"]."';}//for end//選取的點設置為橘色e.target.style.borderColor='".$conf["selectedColor"]."';//設置當前顯示的%數document.getElementById('".$conf["name"]."barVal').innerText=(e.target.dataset.val)+'%';//設置當前顯示的%數值,不含單位document.getElementById('".$conf["name"]."barVal').dataset.val=e.target.dataset.val;});//addEventListener end}//for end//建立 div tag,預設為 '?%'valDiv=document.createElement('div');valDiv.id='".$conf["name"]."barVal';valDiv.innerText='?%';valDiv.dataset.val='?';valDiv.style.display='inline';//放入數值顯示rootDiv.appendChild(valDiv);//取得 拉霸的名稱window.qbpwcf.form.bar.name='".$conf["name"]."';//取得 拉霸的語法window.qbpwcf.form.bar.content=rootDiv;//設置印出 拉霸的語法window.qbpwcf.form.bar.print=function(){//放置root divdocument.body.appendChild(window.qbpwcf.form.bar.content);}//function end";#可省略參數:#$conf["onReady"],字串,是否要在網頁完全載入後再執行,"false"為不等載入完就先執行,預設為"true"要等載入完再執行.#$conf["onReady"]="true";#$conf["globalJs"],字串陣列,為要放入<script>標籤的js全域變數.#$conf["globalJs"]=array();#$conf["jsFunciton"],字串陣列,為要放入<script>標籤的js函數.#$conf["jsFunciton"]=array();#參考資料:#http://stackoverflow.com/questions/9899372/pure-javascript-equivalent-to-jquerys-ready-how-to-call-a-function-when-the$toScript=javaScript::toScript($conf["javaScript::toScript"]);$result["scriptWithoutTag"]=$conf["javaScript::toScript"]["script"];unset($conf["javaScript::toScript"]);#加入 js 失敗if($toScript["status"]==="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$toScript;#回傳結果return $result;}#if end#取得js語法$result["content"]=$toScript["content"];#設置執行正常$result["status"]="true";#回傳結果return $result;}#function bar end}#class form end?>