Subversion Repositories php-qbpwcf

Rev

Rev 3 | Rev 66 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3 liveuser 1
<?php
2
 
3
/*
4
 
5
	QBPWCF, Quick Build PHP website Component base on Fedora Linux.
6
    Copyright (C) 2015~2024 Min-Jhin,Chen
7
 
8
    This file is part of QBPWCF.
9
 
10
    QBPWCF is free software: you can redistribute it and/or modify
11
    it under the terms of the GNU General Public License as published by
12
    the Free Software Foundation, either version 3 of the License, or
13
    (at your option) any later version.
14
 
15
    QBPWCF is distributed in the hope that it will be useful,
16
    but WITHOUT ANY WARRANTY; without even the implied warranty of
17
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
    GNU General Public License for more details.
19
 
20
    You should have received a copy of the GNU General Public License
21
    along with QBPWCF.  If not, see <http://www.gnu.org/licenses/>.
22
 
23
*/
24
namespace qbpwcf;
25
 
26
/*
27
類別說明:
28
form表單應用的類別.
29
備註:
30
無.
31
*/
32
class form{
33
 
34
	/*
35
	#函式說明:
36
	#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
37
	#回傳結果:
38
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
39
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
40
	#$result["function"],當前執行的函式名稱.
41
	#必填參數:
42
	#$method,物件,為物件實體或類別名稱,會自動置入該參數.
43
	#$arguments,陣列,為呼叫方法時所用的參數.
44
	#可省略參數:
45
	#無.
46
	#參考資料:
47
	#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
48
	#備註:
49
	#無.
50
	*/
51
	public function __call($method,$arguments){
52
 
53
		#取得當前執行的函式
54
		$result["function"]=__FUNCTION__;
55
 
56
		#設置執行不正常
57
		$result["status"]="false";
58
 
59
		#設置執行錯誤
60
		$result["error"][]=__NAMESPACE__ ."/".$method."() 不存在!";
61
 
62
		#設置所丟入的參數
63
		$result["error"][]=$arguments;
64
 
65
		#回傳結果
66
		return $result;
67
 
68
		}#function __call end
69
 
70
	/*
71
	#函式說明:
72
	#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
73
	#回傳結果:
74
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
75
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
76
	#$result["function"],當前執行的函式名稱.
77
	#必填參數:
78
	#$method,物件,為物件實體或類別名稱,會自動置入該參數.
79
	#$arguments,陣列,為呼叫方法時所用的參數.
80
	#可省略參數:
81
	#無.
82
	#參考資料:
83
	#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
84
	#備註:
85
	#無.
86
	*/
87
	public static function __callStatic($method,$arguments){
88
 
89
		#取得當前執行的函式
90
		$result["function"]=__FUNCTION__;
91
 
92
		#設置執行不正常
93
		$result["status"]="false";
94
 
95
		#設置執行錯誤
96
		$result["error"][]="欲呼叫的". __NAMESPACE__ ."/".$method."() 不存在!";
97
 
98
		#設置所丟入的參數
99
		$result["error"][]=$arguments;
100
 
101
		#回傳結果
102
		return $result;
103
 
104
		}#function __callStatic end
105
 
106
	/*
107
	#函式說明:
108
	#表單開始
109
	#回傳結果:
110
	#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
111
	#$result["error"],錯誤訊息陣列.
112
	#$resutl["function"],當前執行的函式名稱.
113
	#$result["content"],表單開始的語法.
114
	#必填參數:
115
	#$conf["action"],字串,爲要交給那個檔案處理該表單傳送的內容.
116
	$conf["action"]="";
117
	#可省略參數:
118
	#$conf["legend"]="";#顯示表單的標題
119
	#$conf["name"]="";#爲該表單的名稱,id也跟$conf["name"]一樣.
120
	#$conf["method"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
121
	#$conf["target"]="";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
122
	#$conf["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是,"false"為否,預設為"false".
123
	#$conf["tableClass"]="";#表格要套用的css樣式,預設爲"__withoutBorder"無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
124
	#$conf["showFieldsetBorder"]="false";#是否要顯示表單區域的框線,預設為"false"不顯示,"true"代表要顯示.
125
	#參考資料:
126
	#http://www.w3schools.com/html/html_forms.asp
127
	#http://www.w3schools.com/tags/tag_fieldset.asp
128
	#備註:
129
	#建議增加enctype的參數設定application/json=>https://imququ.com/post/four-ways-to-post-data-in-http.html
130
	*/
131
	public static function start(&$conf){
132
 
133
		#初始化要回傳的變數
134
		$result=array();
135
 
136
		#設置當前執行的函式
137
		$result["function"]=__FUNCTION__;
138
 
139
		#初始化表單開始的語法
140
		$result["content"]="";
141
 
142
		#如果 $conf 不為陣列
143
		if(gettype($conf)!="array"){
144
 
145
			#設置執行失敗
146
			$result["status"]="false";
147
 
148
			#設置執行錯誤訊息
149
			$result["error"][]="\$conf變數須為陣列形態";
150
 
151
			#如果傳入的參數為 null
152
			if($conf==null){
153
 
154
				#設置執行錯誤訊息
155
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
156
 
157
				}#if end
158
 
159
			#回傳結果
160
			return $result;
161
 
162
			}#if end
163
 
164
		#檢查參數
165
		#函式說明:
166
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
167
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
168
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
169
		#$result["function"],當前執行的函式名稱.
170
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
171
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
172
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
173
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
174
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
175
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
176
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
177
		#必填參數:
178
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
179
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
180
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
181
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("action");
182
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
183
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
184
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
185
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
186
		#可省略參數:
187
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
188
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
189
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
190
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("legend","name","method","target","tableStart","tableClass","showFieldsetBorder");
191
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
192
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string");
193
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
194
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null,"post","_top","false","__withoutBorder","false");
195
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
196
		#$conf["arrayCountEqualCheck"][]=array();
197
		#參考資料:
198
		#array_keys=>http://php.net/manual/en/function.array-keys.php
199
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
200
		unset($conf["variableCheck::checkArguments"]);
201
 
202
		#如果 $checkArguments["status"] 等於 "false"
203
		if($checkArguments["status"]=="false"){
204
 
205
			#設置錯誤識別
206
			$result["status"]="false";
207
 
208
			#設置錯誤訊息
209
			$result["error"]=$checkArguments;
210
 
211
			#回傳結果
212
			return $result;
213
 
214
			}#if end
215
 
216
		#如果 $checkArguments["passed"] 等於 "false"
217
		if($checkArguments["passed"]=="false"){
218
 
219
			#設置錯誤識別
220
			$result["status"]="false";
221
 
222
			#設置錯誤訊息
223
			$result["error"]=$checkArguments;
224
 
225
			#回傳結果
226
			return $result;
227
 
228
			}#if end
229
 
230
		#建立表格預設的 css 樣式 "__defaultTbaleCsssStyle"
231
		#函式說明:
232
		#創建 css 樣式
233
		#必填參數:
234
		$conf_createCssStyle["cssStyleName"]="__defaultTbaleCsssStyle";#為該 css 樣式的名稱,不能以數字開頭。
235
		$conf_createCssStyle["attributes"]=array("table-layout","word-break","width","border");#為屬性名稱,須為陣列值
236
		$conf_createCssStyle["content"]=array("fixed","break-all","100%","0px");#為屬性值,須為陣列值
237
		$css=css::createCssStyle($conf_createCssStyle);
238
		unset($conf_createCssStyle);
239
 
240
		#如果建立css樣式失敗
241
		if($css["status"]=="false"){
242
 
243
			#設置錯誤識別
244
			$result["status"]="false";
245
 
246
			#設置錯誤訊息
247
			$result["error"]=$css;
248
 
249
			#回傳結果
250
			return $result;
251
 
252
			}#if end
253
 
254
		#取得表格預設的css語法
255
		$result["content"]=$result["content"].$css["content"];
256
 
257
		#如果 $conf["name"] 存在
258
		if(isset($conf["name"])){
259
 
260
			#如果 $conf["name"] 不為 ""
261
			if($conf["name"]!=""){
262
 
263
				#設定name與id屬性
264
				$conf["name"]=" name=".$conf["name"]." id=".$conf["name"];
265
 
266
				}#if end
267
 
268
			}#if end
269
 
270
		#反之$conf["name"]不存在
271
		else{
272
 
273
			#設為 ""
274
			$conf["name"]="";
275
 
276
			}#esle end
277
 
278
		#判斷其值是否爲"true"
279
		if($conf["tableStart"]=="true"){
280
 
281
			#函式說明:
282
			#表格開始,可以設定表格的厚度和位置
283
			#回傳結果:
284
			#$result,表格開始的語法
285
			#必填寫的參數:
286
 
287
			#如果 $conf["tableClass"] 存在
288
			if(isset($conf["tableClass"])){
289
 
290
				#則套用指定的樣式
291
				$conf["table"]["start"]["class"]=$conf["tableClass"];
292
 
293
				}#if end
294
 
295
			#反之採用預設沒有線條的css樣式
296
			else{
297
 
298
				#則套用的預設的樣式
299
				$conf["table"]["start"]["class"]="__withoutBorder";
300
 
301
				}#else end
302
 
303
			$tableStart=table::start($conf["table"]["start"]);
304
			unset($conf["table"]["start"]);
305
 
306
			#如果表格開始失敗
307
			if($tableStart["status"]=="false"){
308
 
309
				#設置錯誤識別
310
				$result["status"]="false";
311
 
312
				#設置錯誤訊息
313
				$result["error"]=$tableStart;
314
 
315
				#回傳結果
316
				return $result;
317
 
318
				}#if end
319
 
320
			#串接表格開始的語法
321
			$result["content"]=$result["content"].$tableStart["content"];
322
 
323
			}#if end
324
 
325
		#如果有設置 $conf["legend"]
326
		if(isset($conf["legend"])){
327
 
328
			#設置要顯示的表單名稱
329
			$conf["legend"]="<legend>".$conf["legend"]."</legend>";
330
 
331
			}#if end
332
 
333
		#反之
334
		else{
335
 
336
			#設為 ""
337
			$conf["legend"]="";
338
 
339
			}#else end
340
 
341
		#如果 $conf["showFieldsetBorder"] 為 "false"
342
		if($conf["showFieldsetBorder"]=="false"){
343
 
344
			#設置要套用的樣式
345
			$conf["showFieldsetBorder"]=" class=\"__qbpwcf_fieldsetCssStyle\" ";
346
 
347
			}#if end
348
 
349
		#反之設為 ""
350
		else{
351
 
352
			$conf["showFieldsetBorder"]="";
353
 
354
			}#else end
355
 
356
		#設定要印出/回傳的變數內容
357
		$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"];
358
 
359
		#設置執行正常
360
		$result["status"]="true";
361
 
362
		#回傳結果
363
		return $result;
364
 
365
		}#function start end
366
 
367
	/*
368
	#函式說明:
369
	#表單結束
370
	#回傳結果:
371
	#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
372
	#$result["error"],錯誤訊息陣列.
373
	#$resutl["function"],當前執行的函式名稱.
374
	#$result["content"],表單結束的語法.
375
	#必填參數:
376
	#$conf["tableEnd"],字串,爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。
377
	$conf["tableEnd"]="false";
378
	#可省略參數:
379
	#無.
380
	#參考資料:
381
	#無.
382
	#備註:
383
	#無.
384
	*/
385
	public static function end(&$conf){
386
 
387
		#初始化要回傳的變數
388
		$result=array();
389
 
390
		#設置當前執行的函式
391
		$result["function"]=__FUNCTION__;
392
 
393
		#初始化表單開始的語法
394
		$result["content"]="";
395
 
396
		#如果 $conf 不為陣列
397
		if(gettype($conf)!="array"){
398
 
399
			#設置執行失敗
400
			$result["status"]="false";
401
 
402
			#設置執行錯誤訊息
403
			$result["error"][]="\$conf變數須為陣列形態";
404
 
405
			#如果傳入的參數為 null
406
			if($conf==null){
407
 
408
				#設置執行錯誤訊息
409
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
410
 
411
				}#if end
412
 
413
			#回傳結果
414
			return $result;
415
 
416
			}#if end
417
 
418
		#檢查參數
419
		#函式說明:
420
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
421
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
422
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
423
		#$result["function"],當前執行的函式名稱.
424
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
425
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
426
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
427
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
428
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
429
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
430
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
431
		#必填參數:
432
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
433
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
434
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
435
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("tableEnd");
436
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
437
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
438
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
439
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
440
		#可省略參數:
441
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
442
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
443
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
444
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("legend","name","method","target","tableStart","tableClass","showFieldsetBorder");
445
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
446
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string");
447
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
448
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,"","post","_top",null,null,"false");
449
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
450
		#$conf["arrayCountEqualCheck"][]=array();
451
		#參考資料:
452
		#array_keys=>http://php.net/manual/en/function.array-keys.php
453
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
454
		unset($conf["variableCheck::checkArguments"]);
455
 
456
		#如果 $checkArguments["status"] 等於 "false"
457
		if($checkArguments["status"]=="false"){
458
 
459
			#設置錯誤識別
460
			$result["status"]="false";
461
 
462
			#設置錯誤訊息
463
			$result["error"]=$checkArguments;
464
 
465
			#回傳結果
466
			return $result;
467
 
468
			}#if end
469
 
470
		#如果 $checkArguments["passed"] 等於 "false"
471
		if($checkArguments["passed"]=="false"){
472
 
473
			#設置錯誤識別
474
			$result["status"]="false";
475
 
476
			#設置錯誤訊息
477
			$result["error"]=$checkArguments;
478
 
479
			#回傳結果
480
			return $result;
481
 
482
			}#if end
483
 
484
		#儲存表單結束的html
485
		$result["content"]=$result["content"]."</fieldset></form>";
486
 
487
		#判斷其值是否爲"true"
488
		if($conf["tableEnd"]=="true"){
489
 
490
			#儲存表格結尾的標籤
491
			$result["content"]=$result["content"]."</table>";
492
 
493
			}#if end
494
 
495
		#設置執行正常
496
		$result["status"]="true";
497
 
498
		#回傳結果
499
		return $result;
500
 
501
		}#function end end
502
 
503
	/*
504
	#函式說明:
505
	#若有表單透過POST或GET的方式傳送的資料,則將內容回傳,若是用GET的方式傳送則轉址到 $headerLocation
506
	#回傳結果:
507
	#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
508
	#$result["error"],錯誤訊息陣列.
509
	#$resutl["function"],當前執行的函式名稱.
510
	#$result["warning"],警告訊息.
511
	#$result["content"],接收到變數內容,若為null則代表要接收的變數不存在.
512
	#必填參數:
513
	#$conf["inputName"],字串,讀取表單的資料時用來辨別的名稱。
514
	$conf["inputName"]="";
515
	#可省略參數
516
	#$conf["refuseGetMethod"],字串,是否要擋 get 傳值,如果有設置,則不檔GET傳值。
517
	#$conf["refuseGetMethod"]="true";
518
	#$conf["transferLocation"],字串,如果是用GET傳值,則轉址到那個網址,預設爲資安素養網"https://isafe.moe.edu.tw/"
519
	#$conf["transferLocation"]="";
520
	#$conf["correctCharacter"],字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設為"true".
521
	#$conf["correctCharacter"]="false";
522
	#參考資料:
523
	#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php
524
	#備註:
525
	#無.
526
	*/
527
	public static function responseInputData(&$conf){
528
 
529
		#初始化要回傳的變數
530
		$result=array();
531
 
532
		#設置當前執行的函式
533
		$result["function"]=__FUNCTION__;
534
 
535
		#初始化表單開始的語法
536
		$result["content"]="";
537
 
538
		#如果 $conf 不為陣列
539
		if(gettype($conf)!="array"){
540
 
541
			#設置執行失敗
542
			$result["status"]="false";
543
 
544
			#設置執行錯誤訊息
545
			$result["error"][]="\$conf變數須為陣列形態";
546
 
547
			#如果傳入的參數為 null
548
			if($conf==null){
549
 
550
				#設置執行錯誤訊息
551
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
552
 
553
				}#if end
554
 
555
			#回傳結果
556
			return $result;
557
 
558
			}#if end
559
 
560
		#檢查參數
561
		#函式說明:
562
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
563
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
564
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
565
		#$result["function"],當前執行的函式名稱.
566
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
567
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
568
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
569
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
570
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
571
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
572
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
573
		#必填參數:
574
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
575
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
576
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
577
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputName");
578
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
579
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
580
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
581
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
582
		#可省略參數:
583
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
584
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
585
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
586
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("refuseGetMethod","transferLocation","correctCharacter");
587
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
588
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string");
589
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
590
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true","https://isafe.moe.edu.tw/","true");
591
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
592
		#$conf["arrayCountEqualCheck"][]=array();
593
		#參考資料:
594
		#array_keys=>http://php.net/manual/en/function.array-keys.php
595
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
596
		unset($conf["variableCheck::checkArguments"]);
597
 
598
		#如果 $checkArguments["status"] 等於 "false"
599
		if($checkArguments["status"]=="false"){
600
 
601
			#設置錯誤識別
602
			$result["status"]="false";
603
 
604
			#設置錯誤訊息
605
			$result["error"]=$checkArguments;
606
 
607
			#回傳結果
608
			return $result;
609
 
610
			}#if end
611
 
612
		#如果 $checkArguments["passed"] 等於 "false"
613
		if($checkArguments["passed"]=="false"){
614
 
615
			#設置錯誤識別
616
			$result["status"]="false";
617
 
618
			#設置錯誤訊息
619
			$result["error"]=$checkArguments;
620
 
621
			#回傳結果
622
			return $result;
623
 
624
			}#if end
625
 
626
		#如果$conf["security"]不存在,則代表採用預設值要防止get傳值
627
		if($conf["refuseGetMethod"]=="true"){
628
 
629
			#若有表單透過POST傳送的資料
630
			if(isset($_POST[$conf["inputName"]])){
631
 
632
				#如果 $conf["correctCharacter"] 爲 false
633
				if($conf["correctCharacter"]=="false"){
634
 
635
					#如果 $_POST[$conf["inputName"]] 存在
636
					if(isset($_POST[$conf["inputName"]])){
637
 
638
						#設置執行正常
639
						$result["status"]="true";
640
 
641
						#設置抓到的post數值
642
						$result["content"]=$_POST[$conf["inputName"]];
643
 
644
						#回傳結果
645
						return $result;
646
 
647
						}#if end
648
 
649
					}#if end
650
 
651
				#反之 $conf["correctCharacter"] 不爲 false
652
				else{
653
 
654
					#如果 $_POST[$conf["inputName"]] 存在
655
					if(isset($_POST[$conf["inputName"]])){
656
 
657
						#將字串作處理避免錯誤
658
						#函式說明:
659
						#處理字串避免網頁出錯
660
						#回傳結果:
661
						#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
662
						#$result["function"],當前執行的函數.
663
						#$result["content"],爲處理好的字串.
664
						#$result["error"],錯誤訊息陣列.
665
						#必填參數:
666
						$conf["stringProcess::correctCharacter"]["stringIn"]=$_POST[$conf["inputName"]];#爲要處理的字串
667
						#可省略的參數:
668
						#$conf["selectedCharacter"]=array("");#爲被選擇要處理的字串/字元,須爲陣列值。
669
							#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
670
							#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
671
						#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
672
						$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
673
 
674
						#如果處理字串失敗
675
						if($correctCharacter["status"]=="false"){
676
 
677
							#設置錯誤識別
678
							$result["status"]="false";
679
 
680
							#設置錯誤訊息
681
							$result["error"]=$correctCharacter;
682
 
683
							#回傳結果
684
							return $result;
685
 
686
							}#if end
687
 
688
						#設置執行正常
689
						$result["status"]="true";
690
 
691
						#設置抓到的post數值
692
						$result["content"]=$correctCharacter["content"];
693
 
694
						#回傳結果
695
						return $result;
696
 
697
						}#if end
698
 
699
					}#else end
700
 
701
				}#if end
702
 
703
			#若有表單透過GET傳送的資料
704
			if(isset($_GET[$conf["inputName"]])){
705
 
706
				#進行轉址的動作
707
				$conf["header"]["redirectionNow"]["headerLocation"]=$conf["header"]["redirectionNow"]["transferLocation"];
708
				header::redirectionNow($conf["header"]["redirectionNow"]);
709
				unset($conf["header"]["redirectionNow"]);
710
 
711
				}#判斷式結束
712
 
713
			}#判斷式結束
714
 
715
		#如果不使用檔get傳值
716
		else{
717
 
718
			#若有表單透過POST傳送的資料
719
			if(isset($_POST[$conf["inputName"]])){
720
 
721
				#如果 $conf["correctCharacter"] 存在
722
				if(isset($conf["correctCharacter"])){
723
 
724
					#如果 $conf["correctCharacter"] 爲 false
725
					if($conf["correctCharacter"]=="false"){
726
 
727
						#設置執行正常
728
						$result["status"]="true";
729
 
730
						#設置抓到的post數值
731
						$result["content"]=$_POST[$conf["inputName"]];
732
 
733
						#回傳結果
734
						return $result;
735
 
736
						}#if end
737
 
738
					}#if end
739
 
740
				#反之
741
				else{
742
 
743
					#將字串作處理避免錯誤
744
					$correctCharacter_conf["stringIn"]=$_POST[$conf["inputName"]];#爲要處理的字串
745
					$correctCharacter=stringProcess::correctCharacter($correctCharacter_conf);
746
					unset($correctCharacter_conf);
747
 
748
					#如果處理字串失敗
749
					if($correctCharacter["status"]=="false"){
750
 
751
						#設置錯誤識別
752
						$result["status"]="false";
753
 
754
						#設置錯誤訊息
755
						$result["error"]=$correctCharacter;
756
 
757
						#回傳結果
758
						return $result;
759
 
760
						}#if end
761
 
762
					#設置執行正常
763
					$result["status"]="true";
764
 
765
					#設置抓到的post數值
766
					$result["content"]=$correctCharacter["content"];
767
 
768
					#回傳結果
769
					return $result;
770
 
771
					}#else end
772
 
773
				}#if end
774
 
775
			#若有表單透過GET傳送的資料
776
			if(isset($_GET[$conf["inputName"]])){
777
 
778
				#如果 $conf["correctCharacter"] 存在
779
				if(isset($conf["correctCharacter"])){
780
 
781
					#如果 $conf["correctCharacter"] 爲 false
782
					if($conf["correctCharacter"]=="false"){
783
 
784
						#設置執行正常
785
						$result["status"]="true";
786
 
787
						#設置抓到的get數值
788
						$result["content"]=$_GET[$conf["inputName"]];
789
 
790
						#回傳結果
791
						return $result;
792
 
793
						}#判斷式結束
794
 
795
					}#判斷式結束
796
 
797
				#反之
798
				else{
799
 
800
					#將字串作處理避免錯誤
801
					$correctCharacter_conf["stringIn"]=$_GET[$conf["inputName"]];#爲要處理的字串
802
					$correctCharacter=stringProcess::correctCharacter($correctCharacter_conf);
803
					unset($correctCharacter_conf);
804
 
805
					#如果處理字串失敗
806
					if($correctCharacter["status"]=="false"){
807
 
808
						#設置錯誤識別
809
						$result["status"]="false";
810
 
811
						#設置錯誤訊息
812
						$result["error"]=$correctCharacter;
813
 
814
						#回傳結果
815
						return $result;
816
 
817
						}#if end
818
 
819
					#設置執行正常
820
					$result["status"]="true";
821
 
822
					#設置抓到的get數值
823
					$result["content"]=$correctCharacter["content"];
824
 
825
					#回傳結果
826
					return $result;
827
 
828
					}#else end
829
 
830
				}#if end
831
 
832
			}#else end
833
 
834
		#執行到這邊代表要接收的變數不存在
835
		$result["warning"][]="表單變數「".$conf["inputName"]."」不存在";
836
 
837
		#設置執行正常
838
		$result["status"]="true";
839
 
840
		#設置接收到的內容為 null
841
		$result["content"]=null;
842
 
843
		#回傳結果
844
		return $result;
845
 
846
		}#funcion responseInputData end
847
 
848
	/*
849
	#函式說明:
850
	#若有表單透過POST或GET的方式傳送的資料,則將內容回傳,若是用GET的方式傳送則轉址到 $headerLocation
851
	#回傳結果:
852
	#$result["status"],是否執行成功,"true"代表執行成功;"false"代表執行失敗。
853
	#$result["function"],當前執行的函數名稱.
854
	#$result["error"],錯誤訊息。
855
	#$result["reveivedVarName"],接收到的變數名稱
856
	#$result["receivedVarValue"],接收到的變數內容
857
	#$result["HTTP_REFERER"],前一頁的網址,null為不存在的意思.
858
	#必填參數:
859
	#$conf["inputName"],字串,讀取表單的資料時用來辨別的名稱,
860
	$conf["inputName"]="";
861
	#可省略參數:
862
	#$conf["receiveType"],字串,要接收 post/POST 或 get/GET 的變數,預設爲 POST
863
	#$conf["receiveType"]="POST";
864
	#$conf["allowGet"],字串,是否要允許 get 傳值,"true",代表允許;"false" ,代表不允許,預設爲不允許。
865
	#$conf["allowGet"]="true";
866
	#$conf["limitPrePage"],字串陣列,限定前一頁的網址須爲改陣列裏面的其中一個位置,才能接收內容,不符合則轉址。
867
	#$conf["limitPrePage"]=array();
868
	#$conf["transferLocation"],字串,如果是用GET傳值,則轉址到那個網址,預設爲資安素養網"https://isafe.moe.edu.tw/"
869
	#$conf["transferLocation"]="";#
870
	#$conf["correctCharacter"],字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設為"true".
871
	#$conf["correctCharacter"]="false";
872
	#參考資料:
873
	#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php
874
	#備註:
875
	#無.
876
	*/
877
	public static function responseInputDataSecurityEnhance(&$conf){
878
 
879
		#初始化要回傳的變數
880
		$result=array();
881
 
882
		#設置當前執行的函式
883
		$result["function"]=__FUNCTION__;
884
 
885
		#如果 $conf 不為陣列
886
		if(gettype($conf)!="array"){
887
 
888
			#設置執行失敗
889
			$result["status"]="false";
890
 
891
			#設置執行錯誤訊息
892
			$result["error"][]="\$conf變數須為陣列形態";
893
 
894
			#如果傳入的參數為 null
895
			if($conf==null){
896
 
897
				#設置執行錯誤訊息
898
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
899
 
900
				}#if end
901
 
902
			#回傳結果
903
			return $result;
904
 
905
			}#if end
906
 
907
		#檢查參數
908
		#函式說明:
909
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
910
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
911
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
912
		#$result["function"],當前執行的函式名稱.
913
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
914
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
915
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
916
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
917
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
918
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
919
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
920
		#必填參數:
921
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
922
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
923
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
924
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputName");
925
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
926
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
927
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
928
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
929
		#可省略參數:
930
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
931
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
932
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
933
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("receiveType","allowGet","limitPrePage","transferLocation","correctCharacter");
934
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
935
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","array","string","string");
936
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
937
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("POST","false",null,"https://isafe.moe.edu.tw/","true");
938
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
939
		#$conf["arrayCountEqualCheck"][]=array();
940
		#參考資料:
941
		#array_keys=>http://php.net/manual/en/function.array-keys.php
942
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
943
		unset($conf["variableCheck::checkArguments"]);
944
 
945
		#如果 $checkArguments["status"] 等於 "false"
946
		if($checkArguments["status"]=="false"){
947
 
948
			#設置錯誤識別
949
			$result["status"]="false";
950
 
951
			#設置錯誤訊息
952
			$result["error"]=$checkArguments;
953
 
954
			#回傳結果
955
			return $result;
956
 
957
			}#if end
958
 
959
		#如果 $checkArguments["passed"] 等於 "false"
960
		if($checkArguments["passed"]=="false"){
961
 
962
			#設置錯誤識別
963
			$result["status"]="false";
964
 
965
			#設置錯誤訊息
966
			$result["error"]=$checkArguments;
967
 
968
			#回傳結果
969
			return $result;
970
 
971
			}#if end
972
 
973
		#如果 $_SERVER["HTTP_REFERER"] 存在
974
		if(isset($_SERVER["HTTP_REFERER"])){
975
 
976
			#取得前一個網址
977
			$result["HTTP_REFERER"]=basename($_SERVER["HTTP_REFERER"]);
978
 
979
			}#if end
980
 
981
		#反之 $_SERVER["HTTP_REFERER"] 不存在
982
		else{
983
 
984
			#設為 null
985
			$result["HTTP_REFERER"]=null;
986
 
987
			}#else end
988
 
989
		#初始化接收的變數內容
990
		#$result["reveivedVarName"]="";
991
		#$result["receivedVarValue"]="";
992
 
993
		#更正 post 的名稱
994
		if($conf["receiveType"]=="post"){
995
 
996
			$conf["receiveType"]="POST";
997
 
998
			}#if end
999
 
1000
		#更正 get 的名稱
1001
		if($conf["receiveType"]=="get"){
1002
 
1003
			$conf["receiveType"]="GET";
1004
 
1005
			}#if end
1006
 
1007
		#如果是 post 的傳送方式
1008
		if($conf["receiveType"]=="POST"){
1009
 
1010
			#如果不存在要抓取的變數
1011
			if(!isset($_POST[$conf["inputName"]])){
1012
 
1013
				#設置執行狀態爲 "false"
1014
				$result["status"]="false";
1015
 
1016
				#設置錯誤訊息
1017
				$result["error"]="key爲".$conf["inputName"]."的$".$conf["receiveType"]."變數不存在!";
1018
 
1019
				#回傳結果
1020
				return $result;
1021
 
1022
				}#if end
1023
 
1024
			#設置取得的變數內容
1025
			$result["reveivedVarName"]=$conf["inputName"];
1026
			$result["receivedVarValue"]=$_POST[$conf["inputName"]];
1027
 
1028
			}#if end
1029
 
1030
		#如果是 get 的傳送方式
1031
		if($conf["receiveType"]=="GET"){
1032
 
1033
			#如果不存在要抓取的變數
1034
			if(!isset($_GET[$conf["inputName"]])){
1035
 
1036
				#設置執行狀態爲 "false"
1037
				$result["status"]="false";
1038
 
1039
				#設置錯誤訊息
1040
				$result["error"]="key爲".$conf["inputName"]."的$".$receiveType."變數不存在!";
1041
 
1042
				#回傳結果
1043
				return $result;
1044
 
1045
				}#if end
1046
 
1047
			#設置取得的變數內容
1048
			$result["reveivedVarName"]=$conf["inputName"];
1049
			$result["receivedVarValue"]=$_GET[$conf["inputName"]];
1050
 
1051
			}#if end
1052
 
1053
		#如果 $conf["allowGet"] 等於 "fasle"
1054
		if($conf["allowGet"]=="false"){
1055
 
1056
			#如果是用 get 傳送資料
1057
			if(count($_GET)>0){
1058
 
1059
				#設定session變數後,立即轉址
1060
				#必填參數:
1061
				$conf["header"]["redirectionNow"]["headerLocation"]=$conf["transferLocation"];#為要轉址到的地方
1062
					#若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面。
1063
					#全民資安素養網爲 https://isafe.moe.edu.tw/
1064
				#可省略參數:
1065
				#$conf["sessionName"]=array("","","");#可省略,可以指派3維session變數的內容,此處爲該3維session變數的名稱。
1066
				#$conf["sessionValue"]="";#可省略,該3維session變數的內容爲設爲何?
1067
				#參靠資料來源:
1068
				#http://php.net/manual/en/reserved.variables.server.php
1069
				header::redirectionNow($conf["header"]["redirectionNow"]);
1070
				unset($conf["header"]["redirectionNow"]);
1071
 
1072
				}#if end
1073
 
1074
			}#if end
1075
 
1076
		#如果 $conf["limitPrePage"] 有設定
1077
		if(isset($conf["limitPrePage"])){
1078
 
1079
			#如果 $conf["limitPrePage"] 為陣列型別
1080
			if(gettype($conf["limitPrePage"])=="array"){
1081
 
1082
				#檢查 前一拜訪頁的位址 是否在 $conf["limitPrePage"] 陣列裡面
1083
				#函式說明:
1084
				#檢查一個數值是否與陣列裏面的元素相同
1085
				#回傳的結果:
1086
				#$result["status"],"true"表示執行正確,"false"表示執行錯誤.
1087
				#$result["founded"],"true"表示有找到相同的,"false"表示沒有找到相同的.
1088
				#$result["error"],錯誤訊息
1089
				#$result["equalVarName"],相等的變數名稱或key.
1090
				#$result["equalVarValue"],相等的變數數值內容.
1091
				#必填參數:
1092
				$conf["search"]["getEqualVar"]["conditionElement"]=basename($_SERVER["HTTP_REFERER"]);#條件元素,要等於的元素內容.
1093
				$conf["search"]["getEqualVar"]["compareElements"]=$conf["limitPrePage"];#要比對的陣列變數內容.
1094
				$getMatchResult=search::getEqualVar($conf["search"]["getEqualVar"]);
1095
				unset($conf["search"]["getEqualVar"]);
1096
 
1097
				#如果檢查出錯
1098
				if($getMatchResult["status"]=="false"){
1099
 
1100
					#設置錯誤識別
1101
					$result["status"]="false";
1102
 
1103
					#設置錯誤訊息
1104
					$result["error"]=$getMatchResult;
1105
 
1106
					#回傳結果
1107
					return $result;
1108
 
1109
					}#if end
1110
 
1111
				#如果 $getMatchResult["founded"] 等於 "false"
1112
				if($getMatchResult["founded"]=="false"){
1113
 
1114
					#轉址
1115
					#函式說明:
1116
					#設定session變數後,立即轉址.
1117
					#回傳的結果:
1118
					#$result["status"],執行是否成功,"true"代表執行成功,"false"代表執行失敗.
1119
					#$result["error"],錯誤訊息陣列.
1120
					#必填參數:
1121
					#$conf["headerLocation"],為要轉址到的地方,若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面,全民資安素養網爲 https://isafe.moe.edu.tw/.
1122
					$conf["header"]["redirectionNow"]["headerLocation"]=$conf["transferLocation"];
1123
					#可省略的參數:
1124
					#$conf["sessionName"],可省略,可以指派3維session變數的內容,此處爲該3維session變數的名稱.
1125
					#$conf["sessionName"]=array("","","");
1126
					#$conf["sessionValue"],可省略,該3維session變數的內容爲設爲何?
1127
					#$conf["sessionValue"]="";
1128
					#$conf["hostUnderNat"],為伺服器是否為透過NAT轉封包,且有設定轉址."true"為是,"true"的話會將轉址的服務修正,以免轉址到不能連線到的ip.
1129
					#$conf["hostUnderNat"]["protocol"],#要連線到伺服器的通訊協定,"http"與"https"是可以用的選項.
1130
					#$conf["hostUnderNat"]["protocol"]="https";
1131
					#$conf["hostUnderNat"]["localhostIP"],可省略,為伺服器的IP位置.
1132
					#$conf["hostUnderNat"]["localhostIP"]="";
1133
					#參靠資料來源:
1134
					#http://php.net/manual/en/reserved.variables.server.php
1135
					#建議:
1136
					#新增可應用於在虛擬機器下透過NAT上網,且透過轉port的方式也能正確地轉址的辦法.
1137
					header::redirectionNow($conf["header"]["redirectionNow"]);
1138
					unset($conf["header"]["redirectionNow"]);
1139
 
1140
					}#if end
1141
 
1142
				}#if end
1143
 
1144
			#反之代表參數型別有錯
1145
			else{
1146
 
1147
				#設置錯誤識別
1148
				$result["status"]="false";
1149
 
1150
				#設置錯誤訊息
1151
				$result["error"]="\$conf[\"limitPrePage\"]參數須為字串陣列";
1152
 
1153
				#回傳結果
1154
				return $result;
1155
 
1156
				}#else end
1157
 
1158
			}#if end
1159
 
1160
		#如果 $conf["correctCharacter"] 等於 true
1161
		if($conf["correctCharacter"]=="true"){
1162
 
1163
			#函式說明:
1164
			#處理字串避免網頁出錯
1165
			#回傳結果:
1166
			#$result,爲處理好的字串。
1167
			#必填參數:
1168
			$conf["stringProcess"]["correctCharacter"]["stringIn"]=$result["receivedVarValue"];#爲要處理的字串
1169
			#可省略的參數:
1170
			#$conf["selectedCharacter"]=array("");#爲被選擇要處理的字串/字元,須爲陣列值。
1171
				#若不設定則預設爲要將這些字串作替換("<",">",";","=","//","'","$","%","&","|","/*","*/","#")。
1172
			#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
1173
			$correctCharacter=stringProcess::correctCharacter($conf["stringProcess"]["correctCharacter"]);
1174
			unset($conf["stringProcess"]["correctCharacter"]);
1175
 
1176
			#如果修正字串失敗
1177
			if($correctCharacter["status"]=="false"){
1178
 
1179
				#設置錯誤識別
1180
				$result["status"]="false";
1181
 
1182
				#設置錯誤訊息
1183
				$result["error"]=$correctCharacter;
1184
 
1185
				#回傳結果
1186
				return $result;
1187
 
1188
				}#if end
1189
 
1190
			#取得修正後接收到的變數內容
1191
			$result["receivedVarValue"]=$correctCharacter["content"];
1192
 
1193
			}#if end
1194
 
1195
		#設置執行成功狀態
1196
		$result["status"]="true";
1197
 
1198
		#回傳結果
1199
		return $result;
1200
 
1201
		}#function responseInputDataSecurityEnhance end
1202
 
1203
	/*
1204
	#函式說明:
1205
	#可以處理多個透過GET、POST而來的資訊,儲存成變數。
1206
	#回傳結果:
1207
	#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
1208
	#$result["error"],錯誤訊息陣列.
1209
	#$resutl["function"],當前執行的函式名稱.
1210
	#$result["inputDataContent"],所接收的參數陣列。
1211
	#$result["inputDataCount"],總共接收到幾個元素。
1212
	#$result["inputDataKey"],所接收到的參數陣列元素key值。
1213
	#必填參數:
1214
	$conf["method"]="";#傳送過來的資料是用"post/POST"還是"get/GET"?
1215
	#可省略參數:
1216
	#$conf["stopGetMethod"]="true";#若設爲"true",則遇到以get方式傳送過來的數值時,則進行轉址,若為"false"則不轉址,預設為"true".
1217
	#$conf["transferLocation"]="";#遇到get傳值的時候要轉址到的頁面,預設爲資安素養網"https:#isafe.moe.edu.tw/"
1218
	#$conf["ignore"]=array();#如果要接收的變數名稱與該陣列其一元素一樣,則不放進要回傳的變數裏面。
1219
	#$conf["correctCharacter"]="false";#如果爲"false",則不處理可能導致網頁出問題的字串,預設爲要進行處理。
1220
	#參考資料:
1221
	#foreach 的用法 -> http:#php.net/manual/en/control-structures.foreach.php
1222
	#備註:
1223
	#建議改用 responseInputData 實作
1224
	*/
1225
	public static function responseMultiInputData(&$conf){
1226
 
1227
		#初始化要回傳的變數
1228
		$result=array();
1229
 
1230
		#設置當前執行的函式
1231
		$result["function"]=__FUNCTION__;
1232
 
1233
		#如果 $conf 不為陣列
1234
		if(gettype($conf)!="array"){
1235
 
1236
			#設置執行失敗
1237
			$result["status"]="false";
1238
 
1239
			#設置執行錯誤訊息
1240
			$result["error"][]="\$conf變數須為陣列形態";
1241
 
1242
			#如果傳入的參數為 null
1243
			if($conf==null){
1244
 
1245
				#設置執行錯誤訊息
1246
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1247
 
1248
				}#if end
1249
 
1250
			#回傳結果
1251
			return $result;
1252
 
1253
			}#if end
1254
 
1255
		#檢查參數
1256
		#函式說明:
1257
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1258
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1259
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
1260
		#$result["function"],當前執行的函式名稱.
1261
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1262
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1263
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1264
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
1265
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
1266
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
1267
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
1268
		#必填參數:
1269
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1270
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1271
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1272
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("method");
1273
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
1274
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
1275
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1276
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1277
		#可省略參數:
1278
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
1279
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
1280
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1281
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("stopGetMethod","transferLocation","ignore","correctCharacter");
1282
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1283
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","array","string");
1284
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1285
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true","https://isafe.moe.edu.tw/",null,"true");
1286
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1287
		#$conf["arrayCountEqualCheck"][]=array();
1288
		#參考資料:
1289
		#array_keys=>http://php.net/manual/en/function.array-keys.php
1290
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1291
		unset($conf["variableCheck::checkArguments"]);
1292
 
1293
		#如果 $checkArguments["status"] 等於 "false"
1294
		if($checkArguments["status"]=="false"){
1295
 
1296
			#設置錯誤識別
1297
			$result["status"]="false";
1298
 
1299
			#設置錯誤訊息
1300
			$result["error"]=$checkArguments;
1301
 
1302
			#回傳結果
1303
			return $result;
1304
 
1305
			}#if end
1306
 
1307
		#如果 $checkArguments["passed"] 等於 "false"
1308
		if($checkArguments["passed"]=="false"){
1309
 
1310
			#設置錯誤識別
1311
			$result["status"]="false";
1312
 
1313
			#設置錯誤訊息
1314
			$result["error"]=$checkArguments;
1315
 
1316
			#回傳結果
1317
			return $result;
1318
 
1319
			}#if end
1320
 
1321
		#若有表單透過GET傳送的資料
1322
		#$_GET變數有可能有設定,但是是爲!isset,所以改用 !isset 來判斷是否爲空值
1323
		if(!isset($_GET)){
1324
 
1325
			#如果 $conf["stopGetMethod"] 有設定
1326
			if(isset($conf["stopGetMethod"])){
1327
 
1328
				#如果 $conf["stopGetMethod"] 爲 "true"
1329
				if($conf["stopGetMethod"]=="true"){
1330
 
1331
					#如果 $conf["transferLocation"] 有設定
1332
					if(isset($conf["transferLocation"])){
1333
 
1334
						#進行轉址的動作
1335
						$conf["header"]["redirectionNow"]["headerLocation"]=$conf["header"]["redirectionNow"]["transferLocation"];
1336
						header::redirectionNow($conf["header"]["redirectionNow"]);
1337
						unset($conf["header"]["redirectionNow"]);
1338
 
1339
						}#if end
1340
 
1341
					#如果 $conf["transferLocation"] 沒有設定
1342
					else{
1343
 
1344
						#進行預設的轉址位置
1345
						$conf["header"]["redirectionNow"]["headerLocation"]="https:#isafe.moe.edu.tw/";
1346
						header::redirectionNow($conf["header"]["redirectionNow"]);
1347
						unset($conf["header"]["redirectionNow"]);
1348
 
1349
						}#else end
1350
 
1351
					}#if end
1352
 
1353
				}#if end
1354
 
1355
			}#if end
1356
 
1357
		#初始化接收到的變數
1358
		$result["inputDataContent"]=array();
1359
 
1360
		#依據 $conf["method"] 判別
1361
		switch($conf["method"]){
1362
 
1363
			#如果 $conf["method"] 爲 "post"
1364
			case "post":
1365
 
1366
				#改為 "POST"
1367
				$conf["method"]="POST";
1368
 
1369
			#如果 $conf["method"] 爲 "POST"
1370
			case "POST":
1371
 
1372
				#陣列元素名稱的key編號初始值
1373
				$inputDataKeyNum=0;
1374
 
1375
				#將每個透過 POST 方式吃傳送過來的變數,轉存到變數裏面。
1376
				foreach($_POST as $elementKey => $elementValue){
1377
 
1378
					#如果 $conf["correctCharacter"]爲 "true"
1379
					if($conf["correctCharacter"]==="true"){
1380
 
1381
						#檢查是否邀接收的變數名稱是否為要忽略的清單裡面
1382
						#回傳結果:
1383
						#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1384
						#$result["function"],當前執行的函數
1385
						#$result["error"],函式錯誤訊息,若爲""則表示沒有錯誤
1386
						#$result["founded"][$i],若爲0代表沒有相同的元素;反之1代表有相同的元素,$i爲第i+1個參數判斷後的結果。
1387
						#必填參數:
1388
						$conf_checkEquality["inputElement"]=array($elementKey);#爲要進行比對的變數/數值。
1389
						$conf_checkEquality["blackBoxElement"]=$conf["ignore"];#爲用來比對的變數/數值陣列
1390
						$result_checkEquality=search::checkEquality($conf_checkEquality);
1391
						unset($conf_checkEquality);
1392
 
1393
						#如果檢查失敗
1394
						if($result_checkEquality["status"]=="false"){
1395
 
1396
							#設置錯誤識別
1397
							$result["status"]="false";
1398
 
1399
							#設置錯誤訊息
1400
							$result["error"]=$result_checkEquality;
1401
 
1402
							#回傳結果
1403
							return $result;
1404
 
1405
							}#if end
1406
 
1407
						#如果變數的名稱等於要忽略的變數項目之一
1408
						if($result_checkEquality["founded"][0]=="true"){
1409
 
1410
							#略過這個變數的處理
1411
							continue;
1412
 
1413
							}#if end						
1414
 
1415
						#處理字串避免網頁出錯
1416
						#函式說明:
1417
						#處理字串避免網頁出錯
1418
						#回傳結果:
1419
						#$result,爲處理好的字串。
1420
						#必天寫的參數:
1421
						$conf_correctCharacter["stringIn"]=$elementValue;#爲要處理的字串
1422
						#可省略的參數:
1423
						#$conf["selectedCharacter"]=array("");#爲被選擇要處理的字串/字元,須爲陣列值。
1424
							#若不設定則預設爲要將這些字串作替換(" ","<",">",";","=","#","*","'","$","%","&","|")。
1425
						#$conf["changeTo"];#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
1426
						$correctCharacter=stringProcess::correctCharacter($conf_correctCharacter);
1427
						unset($conf_correctCharacter);
1428
 
1429
						#如果矯正接收的變數內容失敗
1430
						if($correctCharacter["status"]=="false"){
1431
 
1432
							#設置錯誤識別
1433
							$result["status"]="false";
1434
 
1435
							#設置錯誤訊息
1436
							$result["error"]=$correctCharacter;
1437
 
1438
							#回傳結果
1439
							return $result;
1440
 
1441
							}#if end
1442
 
1443
						#取得處理的變數字串內容
1444
						$elementValue=$correctCharacter["content"];
1445
 
1446
						}#if end
1447
 
1448
					#如果 $conf["ignore"] 存在
1449
					if(isset($conf["ignore"])){
1450
 
1451
						#檢查是否邀接收的變數名稱是否為要忽略的清單裡面
1452
						#回傳結果:
1453
						#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1454
						#$result["function"],當前執行的函數
1455
						#$result["error"],函式錯誤訊息,若爲""則表示沒有錯誤
1456
						#$result["founded"][$i],若爲0代表沒有相同的元素;反之1代表有相同的元素,$i爲第i+1個參數判斷後的結果。
1457
						#必填參數:
1458
						$conf_checkEquality["inputElement"]=array($elementKey);#爲要進行比對的變數/數值。
1459
						$conf_checkEquality["blackBoxElement"]=$conf["ignore"];#爲用來比對的變數/數值陣列
1460
						$result_checkEquality=search::checkEquality($conf_checkEquality);
1461
						unset($conf_checkEquality);
1462
 
1463
						#如果檢查失敗
1464
						if($result_checkEquality["status"]=="false"){
1465
 
1466
							#設置錯誤識別
1467
							$result["status"]="false";
1468
 
1469
							#設置錯誤訊息
1470
							$result["error"]=$result_checkEquality;
1471
 
1472
							#回傳結果
1473
							return $result;
1474
 
1475
							}#if end
1476
 
1477
						#如果變數的名稱等於要忽略的變數項目之一
1478
						if($result_checkEquality["founded"][0]=="true"){
1479
 
1480
							#略過這個變數的取得
1481
							continue;
1482
 
1483
							}#if end
1484
 
1485
						#如果變數名稱不等於要忽略的變數項目之一
1486
						else{
1487
 
1488
							#將每個透過 POST 方式吃傳送過來的變數,轉存到 $result["inputDataContent"] 陣列變數裏面。
1489
							$result["inputDataContent"][$elementKey]=$elementValue;
1490
 
1491
							#將每個透過 POST 方式傳送過來的變數名稱,轉存到 $result["inputDataKey"] 陣列變數裏面。
1492
							$result["inputDataKey"][$inputDataKeyNum]=$elementKey;
1493
 
1494
							#陣列元素名稱的key加1
1495
							$inputDataKeyNum++;
1496
 
1497
							}#else end
1498
 
1499
						}#if end
1500
 
1501
					#反之不存在要忽略接收的變數
1502
					else{
1503
 
1504
						#將每個透過 POST 方式傳送過來的變數,轉存到 $result["inputDataContent"] 陣列變數裏面。
1505
						$result["inputDataContent"][$elementKey]=$elementValue;
1506
 
1507
						#將每個透過 POST 方式傳送過來的變數名稱,轉存到 $result["inputDataKey"] 陣列變數裏面。
1508
						$result["inputDataKey"][$inputDataKeyNum]=$elementKey;$inputDataKeyNum++;
1509
 
1510
						}#else end
1511
 
1512
					}#foreach end
1513
 
1514
				#取得總共有接收幾個變數
1515
				$result["inputDataCount"]=count($result["inputDataContent"]);
1516
 
1517
				#跳出 switch
1518
				break;
1519
 
1520
			#如果 $conf["method"] 爲 "get"
1521
			case "get":
1522
 
1523
				#改為 "get"
1524
				$conf["method"]="GET";
1525
 
1526
			#如果 $conf["method"] 爲 "GET"
1527
			case "GET":
1528
 
1529
				#陣列元素名稱的key編號初始值
1530
				$inputDataKeyNum=0;
1531
 
1532
				#將每個透過 GET 方式吃傳送過來的變數,轉存到變數裏面。
1533
				foreach($_GET as $elementKey => $elementValue){
1534
 
1535
					#如果 $conf["correctCharacter"] 爲 "true"
1536
					if($conf["correctCharacter"]==="true"){
1537
 
1538
						#處理字串避免網頁出錯
1539
						#函式說明:
1540
						#處理字串避免網頁出錯
1541
						#回傳結果:
1542
						#$result,爲處理好的字串。
1543
						#必天寫的參數:
1544
						$conf_correctCharacter["stringIn"]=$elementValue;#爲要處理的字串
1545
						#可省略的參數:
1546
						#$conf["selectedCharacter"]=array("");#爲被選擇要處理的字串/字元,須爲陣列值。
1547
							#若不設定則預設爲要將這些字串作替換(" ","<",">",";","=","#","*","'","$","%","&","|")。
1548
						#$conf["changeTo"];#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
1549
						$correctCharacter=stringProcess::correctCharacter($conf_correctCharacter);
1550
						unset($conf_correctCharacter);
1551
 
1552
						#如果矯正接收的變數內容失敗
1553
						if($correctCharacter["status"]=="false"){
1554
 
1555
							#設置錯誤識別
1556
							$result["status"]="false";
1557
 
1558
							#設置錯誤訊息
1559
							$result["error"]=$correctCharacter;
1560
 
1561
							#回傳結果
1562
							return $result;
1563
 
1564
							}#if end
1565
 
1566
						#取得處理的變數字串內容
1567
						$elementValue=$correctCharacter["content"];
1568
 
1569
						}#if end
1570
 
1571
					#如果 $conf["ignore"] 存在
1572
					if(isset($conf["ignore"])){
1573
 
1574
						#檢查是否邀接收的變數名稱是否為要忽略的清單裡面
1575
						#回傳結果:
1576
						#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1577
						#$result["function"],當前執行的函數
1578
						#$result["error"],函式錯誤訊息,若爲""則表示沒有錯誤
1579
						#$result["founded"][$i],若爲0代表沒有相同的元素;反之1代表有相同的元素,$i爲第i+1個參數判斷後的結果。
1580
						#必填參數:
1581
						$conf_checkEquality["inputElement"]=array($elementKey);#爲要進行比對的變數/數值。
1582
						$conf_checkEquality["blackBoxElement"]=$conf["ignore"];#爲用來比對的變數/數值陣列
1583
						$result_checkEquality=search::checkEquality($conf_checkEquality);
1584
						unset($conf_checkEquality);
1585
 
1586
						#如果檢查失敗
1587
						if($result_checkEquality["status"]=="false"){
1588
 
1589
							#設置錯誤識別
1590
							$result["status"]="false";
1591
 
1592
							#設置錯誤訊息
1593
							$result["error"]=$result_checkEquality;
1594
 
1595
							#回傳結果
1596
							return $result;
1597
 
1598
							}#if end
1599
 
1600
						#如果變數的名稱等於要忽略的變數項目之一
1601
						if($result_checkEquality["founded"][0]=="true"){
1602
 
1603
							#略過這個變數的取得
1604
							continue;
1605
 
1606
							}#if end
1607
 
1608
						#如果變數名稱不等於要忽略的變數項目之一
1609
						else{
1610
 
1611
							#將每個透過 POST 方式吃傳送過來的變數,轉存到 $result["inputDataContent"] 陣列變數裏面。
1612
							$result["inputDataContent"][$elementKey]=$elementValue;
1613
 
1614
							#將每個透過 POST 方式傳送過來的變數名稱,轉存到 $result["inputDataKey"] 陣列變數裏面。
1615
							$result["inputDataKey"][$inputDataKeyNum]=$elementKey;
1616
 
1617
							#陣列元素名稱的key加1
1618
							$inputDataKeyNum++;
1619
 
1620
							}#else end
1621
 
1622
						}#if end
1623
 
1624
					}#foreach end
1625
 
1626
				#取得總共有接收幾個變數
1627
				$result["inputDataCount"]=count($result["inputDataContent"]);
1628
 
1629
				#跳出 switch
1630
				break;
1631
 
1632
			}#switch end
1633
 
1634
		#執行到這邊代表正常
1635
		$result["status"]="true";
1636
 
1637
		#回傳結果陣列
1638
		return $result;
1639
 
1640
		}#responseMutiInputData function end
1641
 
1642
	/*
1643
	#函式說明:
1644
	#可以處理多個透過GET、POST而來的資訊,儲存成變數,同時限定傳送的方法、來源,來增加安全性,檢查有沒有皆收到必須要接收到的變數,沒有接收到的變數可以指定從session變數中取得.
1645
	#回傳結果:
1646
	#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
1647
	#$result["error"],錯誤訊息陣列.
1648
	#$resutl["function"],當前執行的函式名稱.
1649
	#$result["warning"],警告訊息陣列.
1650
	#$result["passed"],是否有皆收到全部該接收到的變數,若有設定$conf["checkedVarName"]的話,執行正常後會回傳該結果。
1651
	#$result["lostVarName"],沒有皆收到的變數名稱陣列
1652
	#$result["inputDataContent"],所接收的參數陣列.
1653
	#$result["inputDataContent"]["變數名稱"],所接收變數的內容.
1654
	#$result["inputDataCount"],從表單總共接收到幾個元素.
1655
	#$result["HTTP_REFERER"],前一頁的網址,null代表不存在.
1656
	#必填參數:
1657
	#$conf["method"],字串,傳送過來的資料是用"post/POST"還是"get/GET"?
1658
	$conf["method"]="";
1659
	#可省略參數:
1660
	#$conf["allowGet"],字串,是否要允許 get 傳值,"true",代表允許;"false" ,代表不允許,預設爲不允許.
1661
	#$conf["allowGet"]="true";
1662
	#$conf["limitPrePage"],字串陣列,是否要限定前一頁的網址為哪些,才能接收內容,不符合則轉址.
1663
	#$conf["limitPrePage"]=array("");
1664
	#$conf["transferLocation"],字串,遇到get傳值,或前一個頁面不符合要求時要轉址到的頁面,預設爲資安素養網"https://isafe.moe.edu.tw/"
1665
	#$conf["transferLocation"]="";
1666
	#$conf["ignore"]=字串陣列,如果要接收的變數名稱與該陣列其一元素一樣,則不放進要回傳的變數裏面.
1667
	#$conf["ignore"]=array();
1668
	#$conf["correctCharacter"]=,字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設爲要進行處理.
1669
	#$conf["correctCharacter"]="false";
1670
	#$conf["checkedVarName"],字串陣列,為檢查是否有接收到哪些變數.
1671
	#$conf["checkedVarName"]=array();
1672
	#$conf["canBeEmptyString"],字串,用$conf["checkedVarName"]指定接收的變數名稱陣列,若接收到的內容為空字串是否算有接收到內容,預設為"false","true"代表接收到的內容可以為空字串,"false"代表接收到的內容不可以為空字串.
1673
	#$conf["canBeEmptyString"]="false";
1674
	#$conf["sessionNameArray"],陣列,若存在則代表若沒有從表單取得變數,則從session變數中取得內容,每個元素代表每個表單變數對應的session名稱,若不是要改用session方式取得變數內容的變數,請輸入null,數量請跟$conf["checkedVarName"]參數一致.
1675
	#$conf["sessionNameArray"]=array();
30 liveuser 1676
	#$conf["unsetSessionArray"],陣列,與$conf["sessionNameArray"]對應的元素,是否要接收到變數後就卸除,"true"代表要卸除,預設為"false"代表不要卸除.
3 liveuser 1677
	#$conf["unsetSessionArray"]=array();
1678
	#$conf["recaptcha_url"],字串,有內容代表要檢查有無透過recaptcha於特定頁面網址認證過.
1679
	#$conf["recaptcha_url"]="";
1680
	#參考資料:
1681
	#foreach 的用法 -> http://php.net/manual/en/control-structures.foreach.php
1682
	#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php
1683
	#備註:
1684
	#表單變數的名稱若含有「.」,則會變成「-」。
1685
	*/
1686
	public static function responseMultiInputDataSecurityEnhance(&$conf){
1687
 
1688
		#設置回傳變數的初始值
1689
		$result=array();
1690
 
1691
		#設置當前執行的函式
1692
		$result["function"]=__FUNCTION__;
1693
 
1694
		#如果 $conf 不為陣列
1695
		if(gettype($conf)!="array"){
1696
 
1697
			#設置執行失敗
1698
			$result["status"]="false";
1699
 
1700
			#設置執行錯誤訊息
1701
			$result["error"][]="\$conf變數須為陣列形態";
1702
 
1703
			#如果傳入的參數為 null
1704
			if($conf==null){
1705
 
1706
				#設置執行錯誤訊息
1707
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1708
 
1709
				}#if end
1710
 
1711
			#回傳結果
1712
			return $result;
1713
 
1714
			}#if end
1715
 
1716
		#如果 $_SERVER["HTTP_REFERER"] 存在
1717
		if(isset($_SERVER["HTTP_REFERER"])){
1718
 
1719
			#取得前一個網址
1720
			$result["HTTP_REFERER"]=basename($_SERVER["HTTP_REFERER"]);
1721
 
1722
			}#if end
1723
 
1724
		#反之 $_SERVER["HTTP_REFERER"] 不存在
1725
		else{
1726
 
1727
			#設為 null
1728
			$result["HTTP_REFERER"]=null;
1729
 
1730
			}#else end
1731
 
1732
		#檢查參數
1733
		#函式說明:
1734
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1735
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1736
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
1737
		#$result["function"],當前執行的函式名稱.
1738
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1739
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1740
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1741
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
1742
		#必填參數:
1743
		#$conf["variableCheck.checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1744
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
1745
		#$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1746
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"][]="method";
1747
		#$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
1748
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"][]="string";
1749
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1750
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
1751
		#可省略參數:
1752
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
1753
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
1754
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1755
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="allowGet";
1756
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="limitPrePage";
1757
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="transferLocation";
1758
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="ignore";
1759
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="correctCharacter";
1760
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="checkedVarName";
1761
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="canBeEmptyString";
1762
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="sessionNameArray";
1763
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="unsetSessionArray";
1764
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="recaptcha_url";
1765
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1766
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="string";
1767
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";
1768
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="string";
1769
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";
1770
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="string";
1771
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";
1772
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="string";
1773
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";
1774
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="array";
1775
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="string";
1776
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1777
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]="false";
1778
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;
1779
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]="https://isafe.moe.edu.tw/";
1780
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;
1781
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]="true";
1782
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;
1783
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]="false";
1784
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;
1785
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;
1786
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]=null;
1787
		#$conf["variableCheck.checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1788
		$conf["variableCheck.checkArguments"]["arrayCountEqualCheck"][]=array("checkedVarName","sessionNameArray","unsetSessionArray");
1789
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
1790
		unset($conf["variableCheck.checkArguments"]);
1791
 
1792
		#如果檢查失敗
1793
		if($checkResult["status"]=="false"){
1794
 
1795
			#設置錯誤
1796
			$result["status"]="false";
1797
 
1798
			#設置錯誤訊息
1799
			$result["error"]=$checkResult;
1800
 
1801
			#回傳結果
1802
			return $result;
1803
 
1804
			}#if end
1805
 
1806
		#如果檢查不通過
1807
		if($checkResult["passed"]=="false"){
1808
 
1809
			#設置錯誤
1810
			$result["status"]="false";
1811
 
1812
			#設置錯誤訊息
1813
			$result["error"]=$checkResult;
1814
 
1815
			#回傳結果
1816
			return $result;
1817
 
1818
			}#if end
1819
 
1820
		#如果有設置要檢查有無於特定網址取得google recaptcha認證
1821
		if(isset($conf["recaptcha_url"])){
1822
 
1823
			#函式說明:
1824
			#檢查是否擁有透過gl_reCAPTCHA_server授權的session網址記錄.
1825
			#回傳結果:
1826
			#$result["status"],執行正常與否,"false"代表不正常;"true"代表正常.
1827
			#$result["error"],錯誤訊息陣列.
1828
			#$result["function"],函式名稱.
1829
			#$result["passed"],"true"代表通過檢查,"false"代表沒有通過檢查.
1830
			#必填參數:
1831
			#$conf["url"],字串,要有什麼的網址才通過檢查
1832
			$conf["authenticate::gl_reCAPTCH_authCheck"]["url"]=$conf["recaptcha_url"];
1833
			$gl_reCAPTCH_authCheck=authenticate::gl_reCAPTCH_authCheck($conf["authenticate::gl_reCAPTCH_authCheck"]);
1834
			unset($conf["authenticate::gl_reCAPTCH_authCheck"]);
1835
 
1836
			#如果檢驗有無通過 google reCAPTCHA 的記錄 失敗
1837
			if($gl_reCAPTCH_authCheck["status"]==="false"){
1838
 
1839
				#設置錯誤
1840
				$result["status"]="false";
1841
 
1842
				#設置錯誤訊息
1843
				$result["error"]=$gl_reCAPTCH_authCheck;
1844
 
1845
				#回傳結果
1846
				return $result;
1847
 
1848
				}#if end
1849
 
1850
			#如果無通過 google reCAPTCHA 的記錄
1851
			if($gl_reCAPTCH_authCheck["passed"]==="false"){
1852
 
1853
				#設置正常
1854
				$result["status"]="true";
1855
 
1856
				#設置沒通過測試
1857
				$result["passed"]="false";
1858
 
1859
				#設置錯誤訊息
1860
				$result["error"]=$gl_reCAPTCH_authCheck;
1861
 
1862
				#回傳結果
1863
				return $result;
1864
 
1865
				}#if end
1866
 
1867
			}#if end
1868
 
1869
		#如果 $conf["method"] 為 get
1870
		if($conf["method"]=="get"){
1871
 
1872
			#將之轉換為 "GET"
1873
			$conf["method"]="GET";
1874
 
1875
			}#if end
1876
 
1877
		#如果 $conf["method"] 為 post
1878
		if($conf["method"]=="post"){
1879
 
1880
			#將之轉換為 "POST"
1881
			$conf["method"]="POST";
1882
 
1883
			}#if end
1884
 
1885
		#如果不允許 get 要求
1886
		if($conf["allowGet"]=="false"){
1887
 
1888
			#如果有 get 要求存在
1889
			if(count($_GET)>0){
1890
 
1891
				#轉址
1892
				#函式說明:
1893
				#設定session變數後,立即轉址.
1894
				#回傳的結果:
1895
				#$result["status"],執行是否成功,"true"代表執行成功,"false"代表執行失敗.
1896
				#$result["error"],錯誤訊息陣列.
1897
				#必填參數:
1898
				#$conf["headerLocation"],為要轉址到的地方,若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面,全民資安素養網爲 https://isafe.moe.edu.tw/.
1899
				$conf["header"]["redirectionNow"]["headerLocation"]=$conf["transferLocation"];
1900
				#可省略的參數:
1901
				#$conf["sessionName"],可省略,可以指派3維session變數的內容,此處爲該3維session變數的名稱.
1902
				#$conf["sessionName"]=array("","","");
1903
				#$conf["sessionValue"],可省略,該3維session變數的內容爲設爲何?
1904
				#$conf["sessionValue"]="";
1905
				#$conf["hostUnderNat"],為伺服器是否為透過NAT轉封包,且有設定轉址."true"為是,"true"的話會將轉址的服務修正,以免轉址到不能連線到的ip.
1906
				#$conf["hostUnderNat"]["protocol"],#要連線到伺服器的通訊協定,"http"與"https"是可以用的選項.
1907
				#$conf["hostUnderNat"]["protocol"]="https";
1908
				#$conf["hostUnderNat"]["localhostIP"],可省略,為伺服器的IP位置.
1909
				#$conf["hostUnderNat"]["localhostIP"]="";
1910
				#參靠資料來源:
1911
				#http://php.net/manual/en/reserved.variables.server.php
1912
				#建議:
1913
				#新增可應用於在虛擬機器下透過NAT上網,且透過轉port的方式也能正確地轉址的辦法.
1914
				header::redirectionNow($conf["header"]["redirectionNow"]);
1915
				unset($conf["header"]["redirectionNow"]);
1916
 
1917
				#debug
1918
				#echo "<p><p>有$_GET變數<p>";
1919
				#var_dump($_GET);
1920
 
1921
				}#if end
1922
 
1923
			}#if end
1924
 
1925
		#如果 $conf["limitPrePage"] 有設定
1926
		if(isset($conf["limitPrePage"])){
1927
 
1928
			#如果有前一頁瀏覽的網址記錄
1929
			if($result["HTTP_REFERER"]!=null){
1930
 
1931
				#檢查 前一拜訪頁的位址 是否在 $conf["limitPrePage"] 陣列裡面
1932
				#函式說明:
1933
				#檢查一個數值是否與陣列裏面的元素相同
1934
				#回傳的結果:
1935
				#$result["status"],"true"表示執行正確,"false"表示執行錯誤.
1936
				#$result["founded"],"true"表示有找到相同的,"false"表示沒有找到相同的.
1937
				#$result["error"],錯誤訊息
1938
				#$result["equalVarName"],相等的變數名稱或key.
1939
				#$result["equalVarValue"],相等的變數數值內容.
1940
				#必填參數:
1941
				$conf["search"]["getEqualVar"]["conditionElement"]=$result["HTTP_REFERER"];#條件元素,要等於的元素內容.
1942
				$conf["search"]["getEqualVar"]["compareElements"]=$conf["limitPrePage"];#要比對的陣列變數內容.
1943
				$getMatchResult=search::getEqualVar($conf["search"]["getEqualVar"]);
1944
				unset($conf["search"]["getEqualVar"]);
1945
 
1946
				#如果檢查出錯
1947
				if($getMatchResult["status"]=="false"){
1948
 
1949
					#設置錯誤識別
1950
					$result["status"]="false";
1951
 
1952
					#設置錯誤訊息
1953
					$result["error"]=$getMatchResult;
1954
 
1955
					#回傳結果
1956
					return $result;
1957
 
1958
					}#if end
1959
 
1960
				#如果 $getMatchResult["founded"] 等於 "false"
1961
				if($getMatchResult["founded"]==="false"){
1962
 
1963
					#轉址
1964
					#函式說明:
1965
					#設定session變數後,立即轉址.
1966
					#回傳的結果:
1967
					#$result["status"],執行是否成功,"true"代表執行成功,"false"代表執行失敗.
1968
					#$result["error"],錯誤訊息陣列.
1969
					#必填參數:
1970
					#$conf["headerLocation"],為要轉址到的地方,若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面,全民資安素養網爲 https://isafe.moe.edu.tw/.
1971
					$conf["header"]["redirectionNow"]["headerLocation"]=$conf["transferLocation"];
1972
					#可省略的參數:
1973
					#$conf["sessionName"],可省略,可以指派3維session變數的內容,此處爲該3維session變數的名稱.
1974
					#$conf["sessionName"]=array("","","");
1975
					#$conf["sessionValue"],可省略,該3維session變數的內容爲設爲何?
1976
					#$conf["sessionValue"]="";
1977
					#$conf["hostUnderNat"],為伺服器是否為透過NAT轉封包,且有設定轉址."true"為是,"true"的話會將轉址的服務修正,以免轉址到不能連線到的ip.
1978
					#$conf["hostUnderNat"]["protocol"],#要連線到伺服器的通訊協定,"http"與"https"是可以用的選項.
1979
					#$conf["hostUnderNat"]["protocol"]="https";
1980
					#$conf["hostUnderNat"]["localhostIP"],可省略,為伺服器的IP位置.
1981
					#$conf["hostUnderNat"]["localhostIP"]="";
1982
					#參靠資料來源:
1983
					#http://php.net/manual/en/reserved.variables.server.php
1984
					#建議:
1985
					#新增可應用於在虛擬機器下透過NAT上網,且透過轉port的方式也能正確地轉址的辦法.
1986
					header::redirectionNow($conf["header"]["redirectionNow"]);
1987
					unset($conf["header"]["redirectionNow"]);
1988
 
1989
					}#if end
1990
 
1991
				}#if end
1992
 
1993
			#反之沒有記錄前一頁瀏覽的頁面
1994
			else{
1995
 
1996
				#設置警告訊息
1997
				$result["warning"][]="無法取得前一個瀏覽的頁面";
1998
 
1999
				}#else end
2000
 
2001
			}#if end
2002
 
2003
		#依據 $conf["method"] 來分類判斷
2004
		switch($conf["method"]){
2005
 
2006
			#如果 $conf["method"] 為 "GET"
2007
			case "GET":
2008
 
2009
				#抓取每個$_GET變數
2010
				$getVarArray=$_GET;
2011
 
2012
				#如果接收的$_GET變數數量等於0
2013
				if(count($getVarArray)==0){
2014
 
2015
					#設置抓到的表單變數數量為0
2016
					$result["inputDataCount"]=0;
2017
 
2018
					#設置空的 $result["inputDataContent"] 陣列
2019
					$result["inputDataContent"]=array();
2020
 
2021
					}#if end
2022
 
2023
				#反之代表有 get 變數
2024
				else{
2025
 
2026
					#針對每個$_GET變數
2027
					foreach($getVarArray as $getVarKey=>$getVarValue){
2028
 
2029
						#轉存每個$_GET變數
2030
						$result["inputDataContent"][$getVarKey]=$getVarValue;
2031
 
2032
						}#foreach end
2033
 
2034
					}#else end
2035
 
2036
				#中斷
2037
				break;
2038
 
2039
			#如果 $conf["method"] 為 "POST"
2040
			case "POST":
2041
 
2042
				#抓取每個$_POST變數
2043
				$postVarArray=$_POST;
2044
 
2045
				#如果接收的$_POST變數數量等於0
2046
				if(count($postVarArray)==0){
2047
 
2048
					#設置抓到的表單變數數量為0
2049
					$result["inputDataCount"]=0;
2050
 
2051
					#設置空的 $result["inputDataContent"] 陣列
2052
					$result["inputDataContent"]=array();
2053
 
2054
					}#if end
2055
 
2056
				#反之有post變數
2057
				else{
2058
 
2059
					#針對每個$_POST變數
2060
					foreach($postVarArray as $postVarKey=>$postVarValue){
2061
 
2062
						#取得每個$_POST變數
2063
						$result["inputDataContent"][$postVarKey]=$postVarValue;
2064
 
2065
						}#foreach end
2066
 
2067
					}#else end
2068
 
2069
				#中斷
2070
				break;
2071
 
2072
			#如果 $conf["method"] 不為以上數值
2073
			default:
2074
 
2075
				#設置錯誤
2076
				$result["status"]="false";
2077
 
2078
				#設置錯誤訊息
2079
				$result["error"][]="\$conf[\"method\"]須為 \"get\" 、 \"GET\" 、 \"post\" 、 \"POST\" ";
2080
 
2081
				#回傳結果
2082
				return $result;
2083
 
2084
			}#switch end
2085
 
2086
		#如果 $conf["ignore"] 有設置
2087
		if(isset($conf["ignore"])){
2088
 
2089
			#初始化暫存有那些key
2090
			$inputDataKey=array();
2091
 
2092
			#依據 $result["inputDataContent"] 的數目
2093
			foreach($result["inputDataContent"] as $key=>$value){
2094
 
2095
				#儲存key
2096
				$inputDataKey[$key]=$key;
2097
 
2098
				}#foreache end
2099
 
2100
			#函式說明:
2101
			#檢查多個字串裡面是否有多個關鍵字
2102
			#回傳結果:
2103
			#$result["status"],整體來說,執行是否成功,"true"代表執行成功,"false"代表執行失敗。
2104
			#$result["function"],當前執行的函數名稱.
2105
			#$result["foundedFalseKey"],$result[$i]["founded"]結果為"false"的元素key陣列。
2106
			#$result["foundedAll"],是否每個關鍵字都有找到,"true"代表每個都有找到,"false"代表沒有每個都找到.
2107
			#必填參數:
2108
			$conf["search"]["findManyKeyWordsFromManyString"]["keyWords"]=$conf["ignore"];#想要搜尋的關鍵字
2109
			$conf["search"]["findManyKeyWordsFromManyString"]["stringArray"]=$inputDataKey;#要被搜尋的字串內容陣列
2110
			#可省略參數:
2111
			$conf["search"]["findManyKeyWordsFromManyString"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。
2112
			$filted=search::findManyKeyWordsFromManyString($conf["search"]["findManyKeyWordsFromManyString"]);
2113
			unset($conf["search"]["findManyKeyWordsFromManyString"]);
2114
 
2115
			#debug
2116
			#var_dump($filted);
2117
 
2118
			#如果檢查多個字串裡面是否有多個關鍵字失敗
2119
			if($filted["status"]=="false"){
2120
 
2121
				#設置錯誤
2122
				$result["status"]="false";
2123
 
2124
				#設置錯誤訊息
2125
				$result["error"]=$filted;
2126
 
2127
				#回傳結果
2128
				return $result;
2129
 
2130
				}#if end
2131
 
2132
			#如果全部都有找到
2133
			if($filted["foundedAll"]=="true"){
2134
 
2135
				#取得沒被篩選掉的內容
2136
				$result["inputDataContent"]=array();
2137
 
2138
				}#if end
2139
 
2140
			#反之為有些沒有符合
2141
			else{
2142
 
2143
				#另存 $result["inputDataContent"]
2144
				$temp["inputDataContent"]=$result["inputDataContent"];
2145
 
2146
				#移除舊的 $result["inputDataContent"]
2147
				unset($result["inputDataContent"]);
2148
 
2149
				#依據沒被篩選掉的變數key
2150
				foreach($filted["foundedFalseKey"] as $key){
2151
 
2152
					#取得不是要忽略的表單變數
2153
					$result["inputDataContent"][$key]=$temp["inputDataContent"][$key];
2154
 
2155
					}#foreach end
2156
 
2157
				#移除 $temp["inputDataContent"]
2158
				unset($temp["inputDataContent"]);
2159
 
2160
				}#else end
2161
 
2162
			}#if end
2163
 
2164
		#如果 $conf["correctCharacter"] 為 "true" 且 $result["inputDataContent"]元素數量大於0 則代表要過濾字串
2165
		if($conf["correctCharacter"]=="true" && count($result["inputDataContent"])>0 ){
2166
 
2167
			#如果 $result["inputDataContent"] 的元素不為字串就會出錯。
2168
 
2169
			#函式說明:
2170
			#處理多個字串避免網頁出錯
2171
			#回傳結果:
2172
			#$result["status"],"true"代表執行成功,"false"代表執行失敗。
2173
			#$result["error"],錯誤訊息
2174
			#$result["processedStrArray"],處理好的字串陣列
2175
			#必填參數:
2176
			$conf["stringProcess"]["correctMutiStrCharacter"]["stringIn"]=$result["inputDataContent"];#爲要處理的字串陣列
2177
			#可省略的參數:
2178
			#$conf["selectedCharacter"]=array("");#爲被選擇要處理的字串/字元,須爲陣列值。
2179
				#若不設定則預設爲要將這些字串作替換("<",">",";","=","//","'","$","%","&","|","/*","*\/","#")。
2180
				#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
2181
			#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
2182
			$peocessedStrArray=stringProcess::correctMutiStrCharacter($conf["stringProcess"]["correctMutiStrCharacter"]);
2183
			unset($conf["stringProcess"]);
2184
 
2185
			#如果分割失敗
2186
			if($peocessedStrArray["status"]=="false"){
2187
 
2188
				#設置執行不正常
2189
				$result["status"]="false";
2190
 
2191
				#設置執行錯誤訊息
2192
				$result["error"]=$peocessedStrArray;
2193
 
2194
				#回傳結果
2195
				return $result;
2196
 
2197
				}#if end
2198
 
2199
			#取得處理好的字串陣列
2200
			$result["inputDataContent"]=$peocessedStrArray["processedStrArray"];
2201
 
2202
			}#if end
2203
 
2204
		#取得接收到的變數數量
2205
		$result["inputDataCount"]=count($result["inputDataContent"]);
2206
 
2207
		#如果 $conf["checkedVarName"] 有設定
2208
		if(isset($conf["checkedVarName"])){
2209
 
2210
			#初始化沒有接收的變數陣列
2211
			$result["lostVarName"]=array();
2212
 
2213
			#檢查變數是否有皆收到
2214
			#函式說明:
2215
			#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
2216
			#回傳的結果:
2217
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2218
			#$reuslt["error"],執行不正常結束的錯訊息陣列.
2219
			#$result["function"],當前執行的函式名稱.
2220
			#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2221
			#$result["content"][$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2222
			#$result["content"][$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2223
			#$result["content"][$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
2224
			#必填參數:
2225
			$conf["variableCheck.isexistMulti"]["varInput"]=$result["inputDataContent"];#要檢查的陣列變數
2226
			$conf["variableCheck.isexistMulti"]["variableCheck"]=$conf["checkedVarName"];#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
2227
			#可省略參數:
2228
			#$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
2229
			$conf["variableCheck.isexistMulti"]["canBeEmptyString"]=$conf["canBeEmptyString"];#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
2230
			$checkShouldBeExistedVar=variableCheck::isexistMulti($conf["variableCheck.isexistMulti"]);
2231
			#var_dump($conf["variableCheck.isexistMulti"]);
2232
			unset($conf["variableCheck.isexistMulti"]);
2233
 
2234
			#var_dump($checkShouldBeExistedVar);
2235
 
2236
			#如果檢查要接收到的變數失敗
2237
			if($checkShouldBeExistedVar["status"]=="false"){
2238
 
2239
				#設置錯誤
2240
				$result["status"]="false";
2241
 
2242
				#設置錯誤訊息
2243
				$result["error"]=$checkShouldBeExistedVar;
2244
 
2245
				#回傳結果
2246
				return $result;
2247
 
2248
				}#if end
2249
 
2250
			#如果 $checkShouldBeExistedVar["passed"] 等於 "false"
2251
			if($checkShouldBeExistedVar["passed"]=="false"){
2252
 
2253
				#設置沒有抓到全部的變數
2254
				$result["passed"]="false";
2255
 
2256
				#取得是哪些變數是沒有接收到
2257
				foreach($conf["checkedVarName"] as $varName){
2258
 
2259
					#如果該變數沒抓到
2260
					if($checkShouldBeExistedVar["content"][$varName]["varExist"]=="false"){
2261
 
2262
						#取得沒抓到的變數名稱
2263
						$result["lostVarName"][]=$varName;
2264
 
2265
						}#if end
2266
 
2267
					}#for end
2268
 
2269
				}#if end
2270
 
2271
			#反之代表該取得的變數都有抓到
2272
			else{
2273
 
2274
				#設置沒有抓到全部的變數
2275
				$result["passed"]="true";
2276
 
2277
				}#if end
2278
 
2279
			}#if end
2280
 
2281
		#如果 $result["lostVarName"] 存在
2282
		if(isset($result["lostVarName"])){
2283
 
2284
			#如果找不到的變數($result["lostVarName"])數量大於0
2285
			if(count($result["lostVarName"])>0){
2286
 
2287
				#如果 $conf["sessionNameArray"] 有設置
2288
				if(isset($conf["sessionNameArray"])){
2289
 
2290
					#複製遺失的變數名稱陣列
2291
					$copy["lostVarName"]=$result["lostVarName"];
2292
 
2293
					#有幾個遺失的變數就執行幾次
2294
					for($i=0;$i<count($copy["lostVarName"]);$i++){
2295
 
2296
						#尋找 $result["lostVarName"][$i] 在 $conf["checkedVarName"] 中的哪一個,key為何?
2297
						#函式說明:
2298
						#檢查一個數值是否與陣列裏面的元素相同,找到一個相符合的元素後就會停止搜尋.
2299
						#回傳的結果:
2300
						#$result["status"],"true"表示執行正確,"false"表示執行錯誤.
2301
						#$result["founded"],"true"表示有找到相同的,"false"表示沒有找到相同的.
2302
						#$result["error"],錯誤訊息
2303
						#$result["equalVarName"],相等的變數名稱或key.
2304
						#$result["equalVarValue"],相等的變數數值內容.
2305
						#必填參數:
2306
						$conf["search::getEqualVar"]["conditionElement"]=$copy["lostVarName"][$i];#條件元素,要等於的元素內容.
2307
						$conf["search::getEqualVar"]["compareElements"]=$conf["checkedVarName"];#要比對的陣列變數內容.
2308
						$searchResult=search::getEqualVar($conf["search::getEqualVar"]);
2309
						unset($conf["search::getEqualVar"]);
2310
 
2311
						#如果尋找失敗
2312
						if($searchResult["status"]=="false"){
2313
 
2314
							#設置執行失敗
2315
							$result["status"]="false";
2316
 
2317
							#設置執行錯誤
2318
							$result["error"]=$searchResult;
2319
 
2320
							#回傳結果
2321
							return $result;
2322
 
2323
							}#if end
2324
 
2325
						#如果沒有找到對應的變數名稱
2326
						if($searchResult["founded"]=="false"){
2327
 
2328
							#設置執行失敗
2329
							$result["status"]="false";
2330
 
2331
							#設置執行錯誤
2332
							$result["error"]=$searchResult;
2333
 
2334
							#回傳結果
2335
							return $result;
2336
 
2337
							}#if end
2338
 
2339
						#如果該變數是不允許從session取得的
2340
						if($conf["sessionNameArray"][$searchResult["equalVarName"]]==null){
2341
 
2342
							#設置執行失敗
2343
							$result["status"]="false";
2344
 
2345
							#設置執行錯誤
2346
							$result["error"][]="變數".$searchResult["equalVarValue"]."禁止從session中取得";
2347
 
2348
							#回傳結果
2349
							return $result;
2350
 
2351
							}#if end
2352
 
2353
						#取得遺失變數對應的session變數名稱
2354
						$sessionVarName=$conf["sessionNameArray"][$searchResult["equalVarName"]];
2355
 
2356
						#函式說明:
2357
						#取得session變數裡面的數值,然後卸除該session變數
2358
						#回傳結果:
2359
						#$result["status"],執行是否正常,"true"代表正常,"false"代表有誤.
2360
						#$result["error"],錯誤訊息
2361
						#$result["founded"],是否找到session變數,"true"代表找到,"false"代表沒找到.
2362
						#$result["content"],取得的變數內容
2363
						#必填參數:
2364
						$conf["session::getSessionValue"]["sessionVarName"]=$sessionVarName;#要取得內容的session變數名稱
2365
						#可省略參數:
2366
 
2367
						#如果存在是否要卸除session變數的陣列
2368
						if(isset($conf["unsetSessionArray"])){
2369
 
2370
							#設置其是否要卸除
2371
							$conf["unsetSessionVar"]=$conf["unsetSessionArray"][$searchResult["equalVarName"]];#"true"代表要卸除session變數,預設不卸除
2372
 
2373
							}#if end
2374
 
2375
						#參考資料:
2376
						#http://stackoverflow.com/questions/8971261/php-5-4-call-time-pass-by-reference-easy-fix-available
2377
						#可變變數->http://emn178.pixnet.net/blog/post/80119035-php%E6%95%99%E5%AD%B8---%E8%AE%8A%E6%95%B8%28variables%29
2378
						#卸除參考的原始變數->http://stackoverflow.com/questions/6654538/php-function-to-unset-variables-passed-by-reference
2379
						$getSessionValue=session::getSessionValue($conf["session::getSessionValue"]);
2380
						unset($conf["session::getSessionValue"]);
2381
 
2382
						#如果取得 session 變數失敗
2383
						if($getSessionValue["status"]=="false"){
2384
 
2385
							#設置執行失敗
2386
							$result["status"]="false";
2387
 
2388
							#設置執行錯誤
2389
							$result["error"]=$getSessionValue;
2390
 
2391
							#回傳結果
2392
							return $result;
2393
 
2394
							}#if end
2395
 
2396
						#如果 session 變數不存在
2397
						if($getSessionValue["founded"]=="false"){
2398
 
2399
							#設置執行失敗
2400
							$result["status"]="false";
2401
 
2402
							#設置沒有找到所有指定的變數
2403
							$result["passed"]="false";
2404
 
2405
							#設置執行錯誤
2406
							$result["error"]=$getSessionValue;
2407
 
2408
							#回傳結果
2409
							return $result;
2410
 
2411
							}#if end
2412
 
2413
						#將取得的session變數儲存起來
2414
						$result["inputDataContent"][$copy["lostVarName"][$i]]=$getSessionValue["content"];
2415
 
2416
						#從找不到的變數清單裡面移除已經找到的變數
2417
						unset($result["lostVarName"][$i]);
2418
 
2419
						}#for end
2420
 
2421
					#如果沒有遺失的變數
2422
					if(count($result["lostVarName"])==0){
2423
 
2424
						#設置檢查都通過
2425
						$result["passed"]="true";
2426
 
2427
						}#if end
2428
 
2429
					}#if end
2430
 
2431
				}#if end
2432
 
2433
			}#if end
2434
 
2435
		#設置執行成功
2436
		$result["status"]="true";
2437
 
2438
		#回傳結果
2439
		return $result;
2440
 
2441
		}#function responseMutiInputDataSecurityEnhance end
2442
 
2443
	/*
2444
	#函式說明:
2445
	#能夠接收數個指定的變數名稱
2446
	#回傳的結果:
2447
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2448
	#$result["function"],當前執行的函數
2449
	#$result["error"],函式錯誤訊息,若爲""則表示沒有錯誤
2450
	#$result["warning"],警告訊息陣列
2451
	#$result["getedValue"][$elementKey],取得的變數內容,請將「$elementKey」替換成要取得的表單傳送名稱,例如:$result["getedValue"]["account"],如果該變數不存在則其值會等於null.
2452
	#必填參數:
2453
	$conf["receivedVarArray"]=array();#要接收的參數陣列
2454
	#可省略參數:
2455
	#$conf["correctStr"],是否要過濾字串,預設為"true"要過濾,"false"為不要過濾.
2456
	#$conf["correctStr"]="true";
2457
	#參考資料:
2458
	#無.
2459
	#備註:
2460
	#無.
2461
	*/
2462
	public static function receiveCustomMultiData(&$conf){
2463
 
2464
		#初始化要回傳的內容
2465
		$result=array();
2466
 
2467
		#設置當前執行的函數
2468
		$result["function"]=__FUNCTION__;
2469
 
2470
		#如果 $conf 不為陣列
2471
		if(gettype($conf)!="array"){
2472
 
2473
			#設置執行失敗
2474
			$result["status"]="false";
2475
 
2476
			#設置執行錯誤訊息
2477
			$result["error"][]="\$conf變數須為陣列形態";
2478
 
2479
			#如果傳入的參數為 null
2480
			if($conf==null){
2481
 
2482
				#設置執行錯誤訊息
2483
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2484
 
2485
				}#if end
2486
 
2487
			#回傳結果
2488
			return $result;
2489
 
2490
			}#if end
2491
 
2492
		#檢查參數
2493
		#函式說明:
2494
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2495
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2496
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2497
		#$result["function"],當前執行的函式名稱.
2498
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2499
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2500
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2501
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
2502
		#必填參數:
2503
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2504
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
2505
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2506
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("receivedVarArray");
2507
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
2508
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("array");
2509
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2510
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
2511
		#可省略參數:
2512
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
2513
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
2514
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2515
		$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("method","correctStr");
2516
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
2517
		$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string");
2518
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
2519
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array("post","true");
2520
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
2521
		unset($conf["variableCheck.checkArguments"]);
2522
 
2523
		#如果檢查失敗
2524
		if($checkResult["status"]=="false"){
2525
 
2526
			#設置執行不正常
2527
			$result["status"]="false";
2528
 
2529
			#程式停止執行
2530
			$result["error"]=$checkResult;
2531
 
2532
			#回傳結果
2533
			return $result;
2534
 
2535
			}#if end
2536
 
2537
		#如果檢查不通過
2538
		if($checkResult["passed"]=="false"){
2539
 
2540
			#設置執行不正常
2541
			$result["status"]="false";
2542
 
2543
			#程式停止執行
2544
			$result["error"]=$checkResult;
2545
 
2546
			#回傳結果
2547
			return $result;
2548
 
2549
			}#if end
2550
 
2551
		#根據接收的模式來判斷
2552
		switch($conf["method"]){
2553
 
2554
			#如果爲 post/POST
2555
			case "post" || "POST" :
2556
 
2557
				#有幾個變數要接收,就判斷幾次
2558
				for($i=0;$i<count($conf["receivedVarArray"]);$i++){
2559
 
2560
					#將每個post變數視爲$elementKey指到$elementValue
2561
					foreach($_POST as $elementKey => $elementValue){
2562
 
2563
						#如果 $elementKey 等於任何一個 $conf["receivedVarArray"] 裏陣列元素的key
2564
						#函式說明:
2565
						#檢查一個數值是否與陣列裏面的元素相同,如果有相同的則會傳其變數內容。
2566
						#回傳結果:
2567
						#$result["status"],"true"表示執行正確,"false"表示執行錯誤.
2568
						#$result["founded"],"true"表示有找到相同的,"false"表示沒有找到相同的.
2569
						#$result["error"],錯誤訊息
2570
						#$result["function"],當前執行的函數名稱
2571
						#$result["equalVarName"],相等的變數名稱或key.
2572
						#$result["equalVarValue"],相等的變數數值內容.
2573
						#必填參數:
2574
						$conf["search"]["getEqualVar"]["conditionElement"]=$conf["receivedVarArray"][$i];#條件元素,要等於的元素內容。
2575
						$conf["search"]["getEqualVar"]["compareElements"]=array($elementKey);#要比對的陣列變數內容。
2576
						$getEqualVarResult=search::getEqualVar($conf["search"]["getEqualVar"]);
2577
						unset($conf["search"]["getEqualVar"]);
2578
 
2579
						#如果 search::getEqualVar 執行失敗
2580
						if($getEqualVarResult["status"]=="false"){
2581
 
2582
							#設置執行不正常
2583
							$result["status"]="false";
2584
 
2585
							#程式停止執行
2586
							$result["error"]=$getEqualVarResult;
2587
 
2588
							#回傳結果
2589
							return $result;
2590
 
2591
							}#if end
2592
 
2593
						#如果找到對應的變數名稱
2594
						if($getEqualVarResult["founded"]=="true"){
2595
 
2596
							#設定爲要回傳的變數之一
2597
							#$result["getedValue"][$elementKey]=$getEqualVarResult["equalVarName"];
2598
							$result["getedValue"][$elementKey]=$elementValue;
2599
 
2600
							}#if end
2601
 
2602
						}#foreach end
2603
 
2604
					#如果該變數沒有接收到
2605
					if(!isset($result["getedValue"][$conf["receivedVarArray"][$i]])){
2606
 
2607
						#設為 null
2608
						$result["getedValue"][$conf["receivedVarArray"][$i]]=null;
2609
 
2610
						}#if end
2611
 
2612
					}#for end
2613
 
2614
				#挑出 case
2615
				break;
2616
 
2617
			#如果爲 get/GET
2618
			case "get" || "GET" :
2619
 
2620
				#有幾個變數要接收,就判斷幾次
2621
				for($i=0;$i<count($conf["receivedVarArray"]);$i++){
2622
 
2623
					#將每個post變數視爲$elementKey指到$elementValue
2624
					foreach($_GET as $elementKey => $elementValue){
2625
 
2626
						#如果 $elementKey 等於任何一個 $conf["receivedVarArray"] 裏陣列元素的key
2627
						#函式說明:
2628
						#檢查一個數值是否與陣列裏面的元素相同,如果有相同的則會傳其變數內容。
2629
						#$result["status"],"true"表示執行正確,"false"表示執行錯誤.
2630
						#$result["founded"],"true"表示有找到相同的,"false"表示沒有找到相同的.
2631
						#$result["error"],錯誤訊息
2632
						#$result["function"],當前執行的函數名稱
2633
						#$result["equalVarName"],相等的變數名稱或key.
2634
						#$result["equalVarValue"],相等的變數數值內容.
2635
						#必填參數:
2636
						$conf["search"]["getEqualVar"]["conditionElement"]=$conf["receivedVarArray"][$i];#條件元素,要等於的元素內容。
2637
						$conf["search"]["getEqualVar"]["compareElements"]=array($elementKey);#要比對的陣列變數內容。
2638
						$getEqualVarResult=search::getEqualVar($conf["search"]["getEqualVar"]);
2639
						unset($conf["search"]["getEqualVar"]);
2640
 
2641
						#如果 search::getEqualVar 執行失敗
2642
						if($getEqualVarResult["status"]=="false"){
2643
 
2644
							#設置執行不正常
2645
							$result["status"]="false";
2646
 
2647
							#程式停止執行
2648
							$result["error"]=$getEqualVarResult;
2649
 
2650
							#回傳結果
2651
							return $result;
2652
 
2653
							}#if end
2654
 
2655
						#如果找到對應的變數名稱
2656
						if($getEqualVarResult["founded"]=="true"){
2657
 
2658
							#設定爲要回傳的變數之一
2659
							$result["getedValue"][$elementKey]=$elementValue;
2660
 
2661
							}#if end
2662
 
2663
						}#foreach end
2664
 
2665
					#如果該變數沒有接收到
2666
					if(!isset($result["getedValue"][$conf["receivedVarArray"][$i]])){
2667
 
2668
						#設為 null
2669
						$result["getedValue"][$conf["receivedVarArray"][$i]]=null;
2670
 
2671
						}#if end
2672
 
2673
					}#for end
2674
 
2675
				#挑出 case
2676
				break;
2677
 
2678
			#如果不爲以上內容
2679
			default :
2680
 
2681
				#設置執行失敗
2682
				$result["status"]="false";
2683
 
2684
				#設置執行錯誤
2685
				$result["error"][]="不適用的method參數";
2686
 
2687
				#回傳false,表示函式使用有誤
2688
				return $result;
2689
 
2690
			}#switch end
2691
 
2692
		#設置執行正常
2693
		$result["status"]="true";
2694
 
2695
		#回傳結果
2696
		return $result;
2697
 
2698
		}#function receiveCustomMultiData end
2699
 
2700
	/*
2701
	#函式說明:
2702
	#放置按鈕
2703
	#回傳結果:
2704
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2705
	#$result["function"],當前執行的函數.
2706
	#$result["error"],錯誤訊息陣列.
2707
	#$result["content"],按鈕語法.
2708
	#必填參數:
2709
	$conf["buttonDisplayValue"]="";#爲按鈕上顯示的文字。
2710
	#可省略參數:
2711
	#$conf["buttonStyleName"]="";#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __qbpwcf_button 。
2712
	#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式或程式,預設不設定。
2713
		#"document.forms.formName.submit()"爲傳送名爲testForm的表單內容
2714
		#"window.print()"爲使用瀏覽器內建工具列印當前網頁
2715
		#若搭配 javaScript 類別的 confirmWindow 函數的回傳結果,則會有確認視窗的效果.
2716
	#$conf["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。
2717
	#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".
2718
	#$conf["tableStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"false"。
2719
	#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。
2720
	#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
2721
	#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",亦即沒有框線的樣式;"__withBorder"則爲有框線的樣式
2722
	#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".
2723
	#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
2724
	#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
2725
	#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
2726
	#$conf["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是,預設爲"false"。
2727
	#$conf["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".
2728
	#$conf["action"]="";#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用
2729
	#$conf["target"]="";#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用
2730
	#$conf["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".
2731
	#$conf["formId"],字串,表單的id.
2732
	#$conf["formId"]="";
2733
	#$conf["buttonId"],字串,按鈕的id.
2734
	#$conf["buttonId"]="";
2735
	#參考資料:
2736
	#http://stackoverflow.com/questions/3014649/how-to-disable-html-button-using-javascript
2737
	#備註:
2738
	#無.
2739
	*/
2740
	public static function button(&$conf){
2741
 
2742
		#初始化要回傳的內容
2743
		$result=array();
2744
 
2745
		#設置當前執行的函數
2746
		$result["function"]=__FUNCTION__;
2747
 
2748
		#初始化content樣式內容
2749
		$result["content"]="";
2750
 
2751
		#如果 $conf 不為陣列
2752
		if(gettype($conf)!="array"){
2753
 
2754
			#設置執行失敗
2755
			$result["status"]="false";
2756
 
2757
			#設置執行錯誤訊息
2758
			$result["error"][]="\$conf變數須為陣列形態";
2759
 
2760
			#如果傳入的參數為 null
2761
			if($conf==null){
2762
 
2763
				#設置執行錯誤訊息
2764
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2765
 
2766
				}#if end
2767
 
2768
			#回傳結果
2769
			return $result;
2770
 
2771
			}#if end
2772
 
2773
		#檢查參數
2774
		#函式說明:
2775
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2776
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2777
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2778
		#$result["function"],當前執行的函式名稱.
2779
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2780
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2781
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2782
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
2783
		#必填參數:
2784
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2785
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
2786
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2787
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("buttonDisplayValue");
2788
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
2789
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string");
2790
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2791
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
2792
		#可省略參數:
2793
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
2794
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
2795
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2796
		$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("buttonStyleName","buttonActionScriptFunction","buttonBorder","disabled","tableStart","tableClass","trStart","trClass","tdStart","tdClass","tdEnd","trEnd","tableEnd","formStart","action","target","formEnd","formId","buttonId");
2797
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
2798
		$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string");
2799
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
2800
		$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);
2801
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
2802
		unset($conf["variableCheck.checkArguments"]);
2803
 
2804
		#如果檢查失敗
2805
		if($checkResult["status"]=="false"){
2806
 
2807
			#設置執行不正常
2808
			$result["status"]="false";
2809
 
2810
			#程式停止執行
2811
			$result["error"]=$checkResult;
2812
 
2813
			#回傳結果
2814
			return $result;
2815
 
2816
			}#if end
2817
 
2818
		#如果檢查不通過
2819
		if($checkResult["passed"]=="false"){
2820
 
2821
			#設置執行不正常
2822
			$result["status"]="false";
2823
 
2824
			#程式停止執行
2825
			$result["error"]=$checkResult;
2826
 
2827
			#回傳結果
2828
			return $result;
2829
 
2830
			}#if end
2831
 
2832
		#如果要表格開始
2833
		if($conf["tableStart"]=="true"){
2834
 
2835
			#函式說明:
2836
			#表格開始,可以設定表格的厚度和位置
2837
			#回傳結果:
2838
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2839
			#$result["content"],表格開始的語法
2840
			#$result["function"],當前執行的函數
2841
			#$result["error"],函式錯誤訊息
2842
			#必填寫的參數:
2843
			$conf["table::start"]["class"]=$conf["tableClass"];#爲表格的css樣式,若為"",則代表不套用css樣式;若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
2844
			$tableStart=table::start($conf["table::start"]);
2845
			unset($conf["table::start"]);
2846
 
2847
			#如果表開始立失敗
2848
			if($tableStart["status"]=="false"){
2849
 
2850
				#設置執行失敗
2851
				$result["status"]="false";
2852
 
2853
				#設置執行錯誤訊息
2854
				$result["error"]=$tableStart;
2855
 
2856
				#回傳結果
2857
				return $result;
2858
 
2859
				}#if end
2860
 
2861
			#串接表格開始的語法
2862
			$result["content"]=$result["content"].$tableStart["content"];
2863
 
2864
			}#if end
2865
 
2866
		#如果其值爲 true
2867
		if($conf["trStart"]=="true"){
2868
 
2869
			#套用列開始指定的css樣式
2870
			#函式說明:
2871
			#列開始
2872
			#回傳結果:
2873
			#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
2874
			#$result["error"],函式錯誤訊息陣列.
2875
			#$result["content"],列開始的語法.
2876
			#$result["function"],當前執行的函式名稱.
2877
			#必填寫的參數:
2878
			$conf["table"]["trStart"]["class"]=$conf["trClass"];#爲tr的css樣式,若為""則為不套用css樣式;若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
2879
			$trStart=table::trStart($conf["table"]["trStart"]);
2880
			unset($conf["table"]);
2881
 
2882
			#如果列開始失敗
2883
			if($trStart["status"]=="false"){
2884
 
2885
				#設置執行失敗
2886
				$result["status"]="false";
2887
 
2888
				#設置執行錯誤訊息
2889
				$result["error"]=$trStart;
2890
 
2891
				#回傳結果
2892
				return $result;
2893
 
2894
				}#if end
2895
 
2896
			#串接列開始
2897
			$result["content"]=$result["content"].$trStart["content"];
2898
 
2899
			}#if end
2900
 
2901
		#如果$conf["tdStart"]其值爲 "true"
2902
		if($conf["tdStart"]=="true"){
2903
 
2904
			#列開始且套用css樣式.
2905
			#函式說明:
2906
			#行開始
2907
			#回傳結果:
2908
			#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
2909
			#$result["error"],函式錯誤訊息陣列.
2910
			#$result["content"],行開始的語法.
2911
			#$result["function"],當前執行的函式名稱.
2912
			#必填寫的參數:
2913
			$conf["table"]["tdStart"]["class"]=$conf["tdClass"];#該 td 要套用套用的 css 樣式
2914
				#預設的樣式
2915
				#"border-width","border","border-color","border-style","margin-right","margin-left"
2916
				#"100%","1px","#0000FF","solid","auto","auto"
2917
			$tdStart=table::tdStart($conf["table"]["tdStart"]);
2918
			unset($conf["table"]);
2919
 
2920
			#若行開始失敗
2921
			if($tdStart["status"]=="false"){
2922
 
2923
				#設置執行失敗
2924
				$result["status"]="false";
2925
 
2926
				#設置執行錯誤訊息
2927
				$result["error"]=$tdStart;
2928
 
2929
				#回傳結果
2930
				return $result;
2931
 
2932
				}#if end
2933
 
2934
			#串接行開始的語法
2935
			$result["content"]=$result["content"].$tdStart["content"];
2936
 
2937
			}#if end
2938
 
2939
		#如果 $conf["formStart"] 等於 "true"
2940
		if($conf["formStart"]=="true"){
2941
 
2942
			#如果 $conf["action"] 有設定
2943
			if(isset($conf["action"])){
2944
 
2945
				#表單開始
2946
				#函式說明:
2947
				#表單開始
2948
				#回傳結果:
2949
				#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
2950
				#$result["error"],錯誤訊息陣列.
2951
				#$resutl["function"],當前執行的函式名稱.
2952
				#$result["content"],表單開始的語法.
2953
				$conf["form"]["start"]["action"]=$conf["action"];#爲要交給那個檔案處理該表單傳送的內容
2954
				#可省略參數:
2955
				#$conf["name"]="";#爲該表單的名稱
2956
				#$conf["method"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
2957
				$conf["form"]["start"]["target"]=$conf["target"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
2958
				#$conf["form"]["start"]["tableStart"]=$conf["tableStart"];#爲該表單是否要以<table>開始。"true"爲是;
2959
				#$conf["form"]["start"]["tableClass"]=$conf["tableClass"];#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
2960
 
2961
				#如果有設定 $conf["formId"]
2962
				if(isset($conf["formId"])){
2963
 
2964
					#設置表單的名稱與id
2965
					$conf["form"]["start"]["name"]=$conf["formId"];#爲該表單的名稱,id也跟$conf["name"]一樣.
2966
 
2967
					}#if end
2968
 
2969
				$formStart=form::start($conf["form"]["start"]);
2970
				unset($conf["form"]);
2971
 
2972
				#如果表單開始失敗
2973
				if($formStart["status"]=="false"){
2974
 
2975
					#設置執行失敗
2976
					$result["status"]="false";
2977
 
2978
					#設置執行錯誤訊息
2979
					$result["error"]=$formStart;
2980
 
2981
					#回傳結果
2982
					return $result;
2983
 
2984
					}#if end
2985
 
2986
				#串接表單開始的語法
2987
				$result["content"]=$result["content"].$formStart["content"];
2988
 
2989
				}#if end
2990
 
2991
			#反之不存在
2992
			else{
2993
 
2994
				#設置執行失敗
2995
				$result["status"]="false";
2996
 
2997
				#設置錯誤訊息
2998
				$result["status"]="\$conf[\"action\"]參數沒有設置!";
2999
 
3000
				#回傳結果
3001
				return $result;
3002
 
3003
				}#else end
3004
 
3005
			}#if end
3006
 
3007
		#套用按鈕的css樣式
3008
		$conf["buttonStyleName"]=" class = '".$conf["buttonStyleName"]."' ";
3009
 
3010
		#如果$conf["buttonActionScriptFunction"]不存在
3011
		if(!isset($conf["buttonActionScriptFunction"])){
3012
 
3013
			#則預設給與""
3014
			$conf["buttonActionScriptFunction"]="";
3015
 
3016
			}#if end
3017
 
3018
		#反之$conf["buttonActionScriptFunction"]存在
3019
		else{
3020
 
3021
			#則套用設定的javaScript
3022
			$conf["buttonActionScriptFunction"]=" onClick=\"".$conf["buttonActionScriptFunction"]."\"";
3023
 
3024
			}#else end
3025
 
3026
		#如果 $conf["disabled"] 為"true"
3027
		if($conf["disabled"]=="true"){
3028
 
3029
			#設置取消按鈕功能的屬性
3030
			$conf["disabled"]=" disabled=\"disabled\" ";
3031
 
3032
			}#if end
3033
 
3034
		#反之 $conf["disabled"] 不為"true"
3035
		else{
3036
 
3037
			#預設功能要正常
3038
			$conf["disabled"]="";
3039
 
3040
			}#else end
3041
 
3042
		#如果有設置 $conf["buttonId"]
3043
		if(isset($conf["buttonId"])){
3044
 
3045
			#設置按鈕id的語法
3046
			$conf["buttonId"]=" id=\"".$conf["buttonId"]."\"";
3047
 
3048
			}#if end
3049
 
3050
		#反之
3051
		else{
3052
 
3053
			#設為空字串
3054
			$conf["buttonId"]="";
3055
 
3056
			}#else end
3057
 
3058
		#放置按鈕
3059
		$result["content"]=$result["content"]."<input type = submit ".$conf["disabled"]." value = \"".$conf["buttonDisplayValue"]."\" ".$conf["buttonStyleName"]." ".$conf["buttonActionScriptFunction"]." border = ".$conf["buttonBorder"]." ".$conf["buttonId"]." >";
3060
 
3061
		#如果其值爲 true
3062
		if($conf["tdEnd"]=="true"){
3063
 
3064
			#加上 </td>
3065
			$result["content"]=$result["content"]."</td>";
3066
 
3067
			}#if end
3068
 
3069
		#如果其值爲 true
3070
		if($conf["trEnd"]=="true"){
3071
 
3072
			#加上 </tr>
3073
			$result["content"]=$result["content"]."</tr>";
3074
 
3075
			}#if end
3076
 
3077
		#如果 $conf["formEnd"] 等於 true
3078
		if($conf["formEnd"]=="true"){
3079
 
3080
			#說明:
3081
			#表單結束
3082
			#回傳結果:
3083
			#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
3084
			#$result["error"],錯誤訊息陣列.
3085
			#$resutl["function"],當前執行的函式名稱.
3086
			#$result["content"],表單結束的語法.
3087
			#必填寫的參數:
3088
			$conf_end["tableEnd"]=$conf["tableEnd"];#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。
3089
			$formEnd=form::end($conf_end);
3090
			unset($conf_end);
3091
 
3092
			#如果表單結束失敗
3093
			if($formEnd["status"]=="false"){
3094
 
3095
				#設置執行失敗
3096
				$result["status"]="false";
3097
 
3098
				#設置執行錯誤訊息
3099
				$result["error"]=$formEnd;
3100
 
3101
				#回傳結果
3102
				return $result;
3103
 
3104
				}#if end
3105
 
3106
			#串聯表單結束的語法
3107
			$result["content"]=$result["content"].$formEnd["content"];
3108
 
3109
			}#if end
3110
 
3111
		#如果有表格結束
3112
		if($conf["tableEnd"]=="true"){
3113
 
3114
			#函式說明:
3115
			#表格結束
3116
			#回傳結果:
3117
			#表格結束的語法
3118
			$result["content"]=$result["content"].table::end();
3119
 
3120
			}#if end
3121
 
3122
		#執行到這邊代表執行正常
3123
		$result["status"]="true";
3124
 
3125
		#回傳結果
3126
		return $result;
3127
 
3128
		}#function button end
3129
 
3130
	/*
3131
	#函式說明:
3132
	#以圖片代替的表單送出扭
3133
	#回傳結果:
3134
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3135
	#$result["function"],當前執行的函數.
3136
	#$result["error"],錯誤訊息陣列.
3137
	#$result["content"],按鈕語法.
3138
	#必填參數:
3139
	$conf["img"]="";#爲要作爲按鈕的圖片位置。
3140
	#可省略參數:
3141
	#$conf["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".
3142
	#$conf["formAction"]="";#字串,表單要傳送到哪邊
3143
	#$conf["legend"]="";#字串,圖片按鈕的註解.
3144
	#$conf["formMethod"]="";#字串,表單傳送的方式,預設為"post",也可以使用"get".
3145
	#$conf["formTarget"]="";#字串,表單的回應要呈現在哪邊,預設為"_self"(當前頁面、頁框),"_top"為整個頁面,"_parent"為父頁面,"_blank"為開新頁面,也可以為iframe的名稱.
3146
	#$conf["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".
3147
	#$conf["width"]="";#爲按鈕圖片的寬度,若省略,則按照原始圖片的寬度。
3148
	#$conf["height"]="";#爲按鈕圖片的高度,若省略,則按照原始圖片的高度。
3149
	#$conf["class"]="";#爲按鈕圖片要套用的css樣式名稱,若省略,則不套用任何css樣式。
3150
	#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
3151
	#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
3152
	#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
3153
	#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
3154
	#$conf["formId"],字串,表單的id.
3155
	#$conf["formId"]="";
3156
	#$conf["buttonId"],字串,按鈕的id.
3157
	#$conf["buttonId"]="";
3158
	#參考資料:
3159
	#無.
3160
	#備註:
3161
	#使用圖片作為傳送按時,會傳送點擊圖片的x軸與y軸數數值.
3162
	*/
3163
	public static function buttonImg(&$conf){
3164
 
3165
		#初始化要回傳的內容
3166
		$result=array();
3167
 
3168
		#設置當前執行的函數
3169
		$result["function"]=__FUNCTION__;
3170
 
3171
		#初始化content樣式內容
3172
		$result["content"]="";
3173
 
3174
		#如果 $conf 不為陣列
3175
		if(gettype($conf)!="array"){
3176
 
3177
			#設置執行失敗
3178
			$result["status"]="false";
3179
 
3180
			#設置執行錯誤訊息
3181
			$result["error"][]="\$conf變數須為陣列形態";
3182
 
3183
			#如果傳入的參數為 null
3184
			if($conf==null){
3185
 
3186
				#設置執行錯誤訊息
3187
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3188
 
3189
				}#if end
3190
 
3191
			#回傳結果
3192
			return $result;
3193
 
3194
			}#if end
3195
 
3196
		#檢查參數
3197
		#函式說明:
3198
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3199
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3200
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3201
		#$result["function"],當前執行的函式名稱.
3202
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3203
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3204
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3205
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
3206
		#必填參數:
3207
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3208
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
3209
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3210
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("img");
3211
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3212
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string");
3213
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3214
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
3215
		#可省略參數:
3216
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
3217
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
3218
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3219
		$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("formStart","formAction","legend","formMethod","formTarget","formEnd","width","height","class","trStart","tdStart","tdEnd","trEnd","formId","buttonId");
3220
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3221
		$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string","string","string","string","string","string","string","string","string");
3222
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
3223
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array("false",null,null,"post","_self","false",null,null,null,"false","false","false","false",null,null);
3224
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
3225
		unset($conf["variableCheck.checkArguments"]);
3226
 
3227
		#如果檢查失敗
3228
		if($checkResult["status"]=="false"){
3229
 
3230
			#設置執行不正常
3231
			$result["status"]="false";
3232
 
3233
			#程式停止執行
3234
			$result["error"]=$checkResult;
3235
 
3236
			#回傳結果
3237
			return $result;
3238
 
3239
			}#if end
3240
 
3241
		#如果檢查不通過
3242
		if($checkResult["passed"]=="false"){
3243
 
3244
			#設置執行不正常
3245
			$result["status"]="false";
3246
 
3247
			#程式停止執行
3248
			$result["error"]=$checkResult;
3249
 
3250
			#回傳結果
3251
			return $result;
3252
 
3253
			}#if end
3254
 
3255
		#如果其值爲 true
3256
		if($conf["trStart"]=="true"){
3257
 
3258
			$result["content"]=$result["content"]."<tr>";
3259
 
3260
			}#if end
3261
 
3262
		#如果其值爲 true
3263
		if($conf["tdStart"]=="true"){
3264
 
3265
			$result["content"]=$result["content"]."<td>";
3266
 
3267
			}#if end
3268
 
3269
		#如果 $conf["formStart"] 為 "true" 且 $conf["formAction"] 有設置
3270
		if($conf["formStart"]=="true" && isset($conf["formAction"])){
3271
 
3272
			#函式說明:
3273
			#表單開始
3274
			#回傳結果:
3275
			#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
3276
			#$result["error"],錯誤訊息陣列.
3277
			#$resutl["function"],當前執行的函式名稱.
3278
			#$result["content"],表單開始的語法.
3279
			#必填參數:
3280
			$conf["form::start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容
3281
			#可省略參數:
3282
 
3283
			#如果有設定 $conf["legend"]
3284
			if(isset($conf["legend"])){
3285
 
3286
				$conf["form::start"]["legend"]=$conf["legend"];#顯示表單的標題
3287
 
3288
				}#if end
3289
 
3290
			#如果有設置 $conf["formId"]
3291
			if(isset($conf["formId"])){
3292
 
3293
				#設置表單的名稱與id
3294
				$conf["form::start"]["name"]=$conf["formId"];#爲該表單的名稱
3295
 
3296
				}#if end
3297
 
3298
			$conf["form::start"]["method"]=$conf["formMethod"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
3299
			$conf["form::start"]["target"]=$conf["formTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
3300
			#$conf["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是,"false"為否,預設為"false".
3301
			#$conf["tableClass"]="";#表格要套用的css樣式,預設爲"__withoutBorder"無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
3302
			#$conf["showFieldsetBorder"]="false";#是否要顯示表單區域的框線,預設為"false"不顯示,"true"代表要顯示.
3303
			#參考資料:
3304
			#http://www.w3schools.com/html/html_forms.asp
3305
			#http://www.w3schools.com/tags/tag_fieldset.asp
3306
			$formStart=form::start($conf["form::start"]);
3307
			unset($conf["form::start"]);
3308
 
3309
			#如果表單開始失敗
3310
			if($formStart["status"]=="false"){
3311
 
3312
				#設置執行不正常
3313
				$result["status"]="false";
3314
 
3315
				#程式停止執行
3316
				$result["error"]=$formStart;
3317
 
3318
				#回傳結果
3319
				return $result;
3320
 
3321
				}#if end
3322
 
3323
			#串接表單開始
3324
			$result["content"]=$result["content"].$formStart["content"];
3325
 
3326
			}#if end
3327
 
3328
		#如果$conf["class"]沒有設定
3329
		if(!isset($conf["class"])){
3330
 
3331
			#則$conf["class"]就爲空的
3332
			$conf["class"] = "";
3333
 
3334
			}#if end
3335
 
3336
		#如果$conf["class"]有設定
3337
		else{
3338
 
3339
			#則套用css樣式
3340
			$conf["class"] = "class=".$conf["class"];
3341
 
3342
			}#else end
3343
 
3344
		#如果$conf["width"]沒設定
3345
		if(!isset($conf["width"])){
3346
 
3347
			#則$conf["width"]設爲""
3348
			$conf["width"]="";
3349
 
3350
			}#if end
3351
 
3352
		#如果$conf["width"]有設定
3353
		else{
3354
 
3355
			#就按照設定值
3356
			$conf["width"]=" width=".$conf["width"];
3357
 
3358
			}#else end
3359
 
3360
		#如果$conf["height"]沒設定
3361
		if(!isset($conf["height"])){
3362
 
3363
			#則$conf["height"]設爲""
3364
			$conf["height"]="";
3365
 
3366
			}#if end
3367
 
3368
		#$conf["height"]有設定
3369
		else{
3370
 
3371
			#就按照設定值
3372
			$conf["height"]=" height=".$conf["height"];
3373
 
3374
			}#else end
3375
 
3376
		#如果 $conf["buttonId"] 存在
3377
		if(isset($conf["buttonId"])){
3378
 
3379
			#設置按鈕的id
3380
			$conf["buttonId"]=" id=\"".$conf["buttonId"]."\"";
3381
 
3382
			}#if end
3383
 
3384
		#反之
3385
		else{
3386
 
3387
			#設為 ""
3388
			$conf["buttonId"]="";
3389
 
3390
			}#else end
3391
 
3392
		#放置圖片按鈕的樣式
3393
		$result["content"]=$result["content"]."<input type=image src=".$conf["img"]." alt=Submit ".$conf["width"]." ".$conf["height"]." ".$conf["class"]." border = 0 ".$conf["buttonId"]." >";
3394
 
3395
		#如果 $conf["formEnd"] 為 "true"
3396
		if($conf["formEnd"]=="true"){
3397
 
3398
			#函式說明:
3399
			#表單結束
3400
			#回傳結果:
3401
			#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
3402
			#$result["error"],錯誤訊息陣列.
3403
			#$resutl["function"],當前執行的函式名稱.
3404
			#$result["content"],表單結束的語法.
3405
			#必填參數:
3406
			$conf["form::end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。
3407
			$formEnd=form::end($conf["form::end"]);
3408
			unset($conf["form::end"]);
3409
 
3410
			#如果 表單結束 失敗
3411
			if($formEnd["status"]=="false"){
3412
 
3413
				#設置執行不正常
3414
				$result["status"]="false";
3415
 
3416
				#程式停止執行
3417
				$result["error"]=$formEnd;
3418
 
3419
				#回傳結果
3420
				return $result;
3421
 
3422
				}#if end
3423
 
3424
			#串接表單結束
3425
			$result["content"]=$result["content"].$formEnd["content"];
3426
 
3427
			}#if end
3428
 
3429
		#如果其值爲 true
3430
		if($conf["tdEnd"]=="true"){
3431
 
3432
			$result["content"]=$result["content"]."</td>";
3433
 
3434
			}#if end
3435
 
3436
		#如果其值爲 true
3437
		if($conf["trEnd"]=="true"){
3438
 
3439
			$result["content"]=$result["content"]."</tr>";
3440
 
3441
			}#if end
3442
 
3443
		#執行到這邊代表執行正常
3444
		$result["status"]="true";
3445
 
3446
		#回傳結果
3447
		return $result;
3448
 
3449
		}#function buttonImg end
3450
 
3451
	/*
3452
	#函式說明:
3453
	#將表單填寫的狀態還原至預設值的按鈕.
3454
	#回傳的內容:
3455
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3456
	#$result["function"],當前執行的函數.
3457
	#$result["error"],錯誤訊息陣列.
3458
	#$result["content"],按鈕語法.
3459
	#必填參數:
3460
	#$conf["value"],字串,爲清空表單內容的按鈕顯示名稱
3461
	$conf["value"]="reset";
3462
	#可省略參數:
3463
	#$conf["class"],字串,爲要套用的css樣式名稱,預設為__qbpwcf_button."
3464
	#$conf["class"]="";
3465
	#$conf["trStart"],字串,爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設為"false".
3466
	#$conf["trStart"]="true";
3467
	#$conf["tdStart"],字串,爲是否要以<td>開頭,"true"表示"是",可以看成列裏面的元素開始,預設為"false".
3468
	#$conf["tdStart"]="true";
3469
	#$conf["tdEnd"],字串,爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設為"false".
3470
	#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設為"false".
3471
	#$conf["buttonId"],字串,按鈕的id.
3472
	#$conf["buttonId"]="";
3473
	#參考資料:
3474
	#無.
3475
	#備註:
3476
	#無.
3477
	*/
3478
	public static function buttonReset(&$conf){
3479
 
3480
		#初始化要回傳的內容
3481
		$result=array();
3482
 
3483
		#設置當前執行的函數
3484
		$result["function"]=__FUNCTION__;
3485
 
3486
		#初始化content樣式內容
3487
		$result["content"]="";
3488
 
3489
		#如果 $conf 不為陣列
3490
		if(gettype($conf)!="array"){
3491
 
3492
			#設置執行失敗
3493
			$result["status"]="false";
3494
 
3495
			#設置執行錯誤訊息
3496
			$result["error"][]="\$conf變數須為陣列形態";
3497
 
3498
			#如果傳入的參數為 null
3499
			if($conf==null){
3500
 
3501
				#設置執行錯誤訊息
3502
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3503
 
3504
				}#if end
3505
 
3506
			#回傳結果
3507
			return $result;
3508
 
3509
			}#if end
3510
 
3511
		#檢查參數
3512
		#函式說明:
3513
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3514
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3515
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3516
		#$result["function"],當前執行的函式名稱.
3517
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3518
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3519
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3520
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
3521
		#必填參數:
3522
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3523
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
3524
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3525
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("value");
3526
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3527
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string");
3528
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3529
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
3530
		#可省略參數:
3531
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
3532
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
3533
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3534
		$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("class","trStart","tdStart","tdEnd","trEnd","buttonId");
3535
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3536
		$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string");
3537
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
3538
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array("__qbpwcf_button","false","false","false","false",null);
3539
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
3540
		unset($conf["variableCheck.checkArguments"]);
3541
 
3542
		#如果檢查失敗
3543
		if($checkResult["status"]=="false"){
3544
 
3545
			#設置執行不正常
3546
			$result["status"]="false";
3547
 
3548
			#程式停止執行
3549
			$result["error"]=$checkResult;
3550
 
3551
			#回傳結果
3552
			return $result;
3553
 
3554
			}#if end
3555
 
3556
		#如果檢查不通過
3557
		if($checkResult["passed"]=="false"){
3558
 
3559
			#設置執行不正常
3560
			$result["status"]="false";
3561
 
3562
			#程式停止執行
3563
			$result["error"]=$checkResult;
3564
 
3565
			#回傳結果
3566
			return $result;
3567
 
3568
			}#if end
3569
 
3570
		#如果其值爲 true
3571
		if($conf["trStart"]=="true"){
3572
 
3573
			#串接 "<tr>"
3574
			$result["content"]=$result["content"]."<tr>";
3575
 
3576
			}#if end
3577
 
3578
		#如果其值爲 true
3579
		if($conf["tdStart"]=="true"){
3580
 
3581
			#串接 "<td>"
3582
			$result["content"]=$result["content"]."<td>";
3583
 
3584
			}#if end
3585
 
3586
		#如果不使用樣式
3587
		if(!isset($conf["class"])){
3588
 
3589
			#則$class就爲空的
3590
			$conf["class"] = "";
3591
 
3592
			}#if end
3593
 
3594
		#如果有使用class樣式
3595
		else{
3596
 
3597
			#則套用樣式
3598
			$conf["class"] = " class=".$conf["class"];
3599
 
3600
			}#else end
3601
 
3602
		#套用設定值
3603
		$conf["value"]=" value =".$conf["value"];
3604
 
3605
		#如果 $conf["buttonId"] 有設置
3606
		if(isset($conf["buttonId"])){
3607
 
3608
			#設置按鈕id
3609
			$conf["buttonId"]=" id=\"".$conf["buttonId"]."\"";
3610
 
3611
			}#if end
3612
 
3613
		#反之
3614
		else{
3615
 
3616
			#設為 ""
3617
			$conf["buttonId"]="";
3618
 
3619
			}#else end
3620
 
3621
		#放置表單內容清空的按鈕
3622
		$result["content"]=$result["content"]."<input type = reset ".$conf["value"]." ".$conf["class"]." border = 0 ".$conf["buttonId"]." >";
3623
 
3624
		#如果其值爲 true
3625
		if($conf["tdEnd"]=="true"){
3626
 
3627
			#串接 "</td>"
3628
			$result["content"]=$result["content"]."</td>";
3629
 
3630
			}#if end
3631
 
3632
		#如果其值爲 true
3633
		if($conf["trEnd"]=="true"){
3634
 
3635
			#串接 "</tr>"
3636
			$result["content"]=$result["content"]."</tr>";
3637
 
3638
			}#if end
3639
 
3640
		#設置執行正常
3641
		$result["status"]="true";
3642
 
3643
		#回傳語法
3644
		return $result;
3645
 
3646
		}#function buttonReset end
3647
 
3648
	/*
3649
	#函式說明:
3650
	#一個簡單的按鈕,按了可以到指定的頁面,同時也可以傳送多個隱藏的變數
3651
	#回傳的結果
3652
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3653
	#$result["error"],錯誤訊息陣列
3654
	#$result["function"],當前執行的函數名稱.
3655
	#$result["content"],語法內容
3656
	#必填參數:
3657
	#$conf["buttonDisplayValue"],字串,按鈕上要顯示的文字
3658
	$conf["buttonDisplayValue"]="";
3659
	#可省略參數:
3660
	#$conf["buttonStyleName"],字串,按鈕的css樣式應該爲何,若省略的話預設會採用 __qbpwcf_button 的樣式
3661
	#$conf["buttonStyleName"]="";
3662
	#$conf["hiddenVarName"],陣列,要傳送的隱藏變數名稱,與 $conf["hiddenVarContent"] 相對應。
3663
	#$conf["hiddenVarName"]=array();
3664
	#$conf["hiddenVarContent"],陣列,要傳誦的隱藏變數內容,與 $conf["hiddenVarName"] 相對應。
3665
	#$conf["hiddenVarContent"]=array();
3666
	#$conf["disabled"],字串,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".
3667
	#$conf["disabled"]="true";
3668
	#$conf["formStart"],字串,爲是否要表單開始,如果爲"true"則代表要表單開始,預設爲"false".
3669
	#$conf["formStart"]="true";
3670
	#$conf["method"],字串,爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
3671
	#$conf["method"]="";
3672
	#$conf["formName"],字串,該表單的名稱
3673
	#$conf["formName"]="";
3674
	#$conf["buttonId"],字串,按鈕的id
3675
	#$conf["buttonId"]="";
3676
	#$conf["actionPage"],字串,按鈕按了之後要到哪個地方?若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面。
3677
	#$conf["actionPage"]="";
3678
	#$conf["buttonActionScriptFunction"],字串,爲按下按鈕時所要執行的javaScript函式,預設不設定,可以是"document.forms.formName.submit()"(傳送名爲testForm的表單內容).
3679
	#$conf["buttonActionScriptFunction"]="";
3680
	#$conf["formEnd"],字串,爲是否要表單結束,如果爲"true"則代表要表單結束,預設爲"false"
3681
	#$conf["formEnd"]="true";
3682
	#$conf["tableStart"],字串,爲是否要表格開始,"true"表示"是",預設為"false".
3683
	#$conf["tableStart"]="true";
3684
	#$conf["tableClass"],字串,爲表格要採用的css樣式名稱,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder".
3685
	#$conf["tableClass"]="__withoutBorder";
3686
	#$conf["trStart"],字串,爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
3687
	#$conf["trStart"]="true"
3688
	#$conf["trClass"],字串,列開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder"
3689
	#$conf["trClass"]="__withoutBorder";
3690
	#$conf["tdStart"],字串,爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false"
3691
	#$conf["tdStart"]="true";
3692
	#$conf["tdClass"],字串,行開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder"
3693
	#$conf["tdClass"]="__withoutBorder";
3694
	#$conf["tdEnd"],字串,爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
3695
	#$conf["tdEnd"]="true";
3696
	#$conf["trEnd"],字串,爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
3697
	#$conf["trEnd"]="true";
3698
	#$conf["displayTarget"],字串,頁面的呈現方法,可以是開新視窗(_blank)、在目前頁面、頁框裏面(_self)、在父頁面(_parent)、最上層頁面(_top),預設為"_top"。
3699
	#$conf["displayTarget"]="";
3700
	#$conf["tableEnd"],字串,爲是否要表格結束,"true"表示"是",預設為"false".
3701
	#$conf["tableEnd"]="true";
3702
	#參考資料:
3703
	#無.
3704
	#備註:
3705
	#無.
3706
	*/
3707
	public static function sendHugeDataButton(&$conf){
3708
 
3709
		#初始化要回傳的內容
3710
		$result=array();
3711
 
3712
		#設置當前執行的函數
3713
		$result["function"]=__FUNCTION__;
3714
 
3715
		#初始化content樣式內容
3716
		$result["content"]="";
3717
 
3718
		#如果 $conf 不為陣列
3719
		if(gettype($conf)!="array"){
3720
 
3721
			#設置執行失敗
3722
			$result["status"]="false";
3723
 
3724
			#設置執行錯誤訊息
3725
			$result["error"][]="\$conf變數須為陣列形態";
3726
 
3727
			#如果傳入的參數為 null
3728
			if($conf==null){
3729
 
3730
				#設置執行錯誤訊息
3731
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3732
 
3733
				}#if end
3734
 
3735
			#回傳結果
3736
			return $result;
3737
 
3738
			}#if end
3739
 
3740
		#檢查參數
3741
		#函式說明:
3742
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3743
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3744
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3745
		#$result["function"],當前執行的函式名稱.
3746
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3747
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3748
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3749
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
3750
		#必填參數:
3751
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3752
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
3753
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3754
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("buttonDisplayValue");
3755
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3756
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string");
3757
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3758
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
3759
		#可省略參數:
3760
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
3761
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
3762
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3763
		$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");
3764
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3765
		$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");
3766
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
3767
		$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);
3768
		#$conf["variableCheck.checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3769
		$conf["variableCheck.checkArguments"]["arrayCountEqualCheck"][]=array("hiddenVarName","hiddenVarContent");
3770
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
3771
		unset($conf["variableCheck.checkArguments"]);
3772
 
3773
		#如果檢查失敗
3774
		if($checkResult["status"]=="false"){
3775
 
3776
			#設置執行不正常
3777
			$result["status"]="false";
3778
 
3779
			#程式停止執行
3780
			$result["error"]=$checkResult;
3781
 
3782
			#回傳結果
3783
			return $result;
3784
 
3785
			}#if end
3786
 
3787
		#如果檢查不通過
3788
		if($checkResult["passed"]=="false"){
3789
 
3790
			#設置執行不正常
3791
			$result["status"]="false";
3792
 
3793
			#程式停止執行
3794
			$result["error"]=$checkResult;
3795
 
3796
			#回傳結果
3797
			return $result;
3798
 
3799
			}#if end
3800
 
3801
		#如果要表格開始
3802
		if($conf["tableStart"]=="true"){
3803
 
3804
			#函式說明:
3805
			#表格開始,可以設定表格的厚度和位置
3806
			#回傳結果:
3807
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3808
			#$result["content"],表格開始的語法
3809
			#$result["function"],當前執行的函數
3810
			#$result["error"],函式錯誤訊息
3811
			#必填寫的參數:
3812
			$conf["table::start"]["class"]=$conf["tableClass"];#爲表格的css樣式,若為"",則代表不套用css樣式;若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
3813
			$tableStart=table::start($conf["table::start"]);
3814
			unset($conf["table::start"]);
3815
 
3816
			#如果表開始立失敗
3817
			if($tableStart["status"]=="false"){
3818
 
3819
				#設置執行失敗
3820
				$result["status"]="false";
3821
 
3822
				#設置執行錯誤訊息
3823
				$result["error"]=$tableStart;
3824
 
3825
				#回傳結果
3826
				return $result;
3827
 
3828
				}#if end
3829
 
3830
			#串接表格開始的語法
3831
			$result["content"]=$result["content"].$tableStart["content"];
3832
 
3833
			}#if end
3834
 
3835
		#如果 $conf["formStart"] 等於 "true"
3836
		if($conf["formStart"]=="true"){
3837
 
3838
			#如果 $conf["actionPage"] 有設定
3839
			if(isset($conf["actionPage"])){
3840
 
3841
				#表單開始
3842
				#函式說明:
3843
				#表單開始
3844
				#回傳結果:
3845
				#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
3846
				#$result["error"],錯誤訊息陣列.
3847
				#$resutl["function"],當前執行的函式名稱.
3848
				#$result["content"],表單開始的語法.
3849
				$conf["form"]["start"]["action"]=$conf["actionPage"];#爲要交給那個檔案處理該表單傳送的內容
3850
				#可省略參數:
3851
 
3852
				#如果有設定 $conf["formName"]
3853
				if(isset($conf["formName"])){
3854
 
3855
					$conf["form"]["start"]["name"]=$conf["formName"];#爲該表單的名稱
3856
 
3857
					}#if end
3858
 
3859
				$conf["form"]["start"]["method"]=$conf["method"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
3860
				$conf["form"]["start"]["target"]=$conf["displayTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
3861
				#$conf["form"]["start"]["tableStart"]=$conf["tableStart"];#爲該表單是否要以<table>開始。"true"爲是;
3862
				#$conf["form"]["start"]["tableClass"]=$conf["tableClass"];#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
3863
				$formStart=form::start($conf["form"]["start"]);
3864
				unset($conf["form"]);
3865
 
3866
				#如果表單開始失敗
3867
				if($formStart["status"]=="false"){
3868
 
3869
					#設置執行失敗
3870
					$result["status"]="false";
3871
 
3872
					#設置執行錯誤訊息
3873
					$result["error"]=$formStart;
3874
 
3875
					#回傳結果
3876
					return $result;
3877
 
3878
					}#if end
3879
 
3880
				#串接表單開始的語法
3881
				$result["content"]=$result["content"].$formStart["content"];
3882
 
3883
				}#if end
3884
 
3885
			#反之不存在
3886
			else{
3887
 
3888
				#設置執行失敗
3889
				$result["status"]="false";
3890
 
3891
				#設置錯誤訊息
3892
				$result["status"]="\$conf[\"action\"]參數沒有設置!";
3893
 
3894
				#回傳結果
3895
				return $result;
3896
 
3897
				}#else end
3898
 
3899
			}#if end
3900
 
3901
		#如果其值爲 true
3902
		if($conf["trStart"]=="true"){
3903
 
3904
			#套用列開始指定的css樣式
3905
			#函式說明:
3906
			#列開始
3907
			#回傳結果:
3908
			#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
3909
			#$result["error"],函式錯誤訊息陣列.
3910
			#$result["content"],列開始的語法.
3911
			#$result["function"],當前執行的函式名稱.
3912
			#必填寫的參數:
3913
			$conf["table"]["trStart"]["class"]=$conf["trClass"];#爲tr的css樣式,若為""則為不套用css樣式;若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
3914
			$trStart=table::trStart($conf["table"]["trStart"]);
3915
			unset($conf["table"]);
3916
 
3917
			#如果列開始失敗
3918
			if($trStart["status"]=="false"){
3919
 
3920
				#設置執行失敗
3921
				$result["status"]="false";
3922
 
3923
				#設置執行錯誤訊息
3924
				$result["error"]=$trStart;
3925
 
3926
				#回傳結果
3927
				return $result;
3928
 
3929
				}#if end
3930
 
3931
			#串接列開始
3932
			$result["content"]=$result["content"].$trStart["content"];
3933
 
3934
			}#if end
3935
 
3936
		#如果$conf["tdStart"]其值爲 "true"
3937
		if($conf["tdStart"]=="true"){
3938
 
3939
			#列開始且套用css樣式.
3940
			#函式說明:
3941
			#行開始
3942
			#回傳結果:
3943
			#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
3944
			#$result["error"],函式錯誤訊息陣列.
3945
			#$result["content"],行開始的語法.
3946
			#$result["function"],當前執行的函式名稱.
3947
			#必填寫的參數:
3948
			$conf["table"]["tdStart"]["class"]=$conf["tdClass"];#該 td 要套用套用的 css 樣式
3949
				#預設的樣式
3950
				#"border-width","border","border-color","border-style","margin-right","margin-left"
3951
				#"100%","1px","#0000FF","solid","auto","auto"
3952
			$tdStart=table::tdStart($conf["table"]["tdStart"]);
3953
			unset($conf["table"]);
3954
 
3955
			#若行開始失敗
3956
			if($tdStart["status"]=="false"){
3957
 
3958
				#設置執行失敗
3959
				$result["status"]="false";
3960
 
3961
				#設置執行錯誤訊息
3962
				$result["error"]=$tdStart;
3963
 
3964
				#回傳結果
3965
				return $result;
3966
 
3967
				}#if end
3968
 
3969
			#串接行開始的語法
3970
			$result["content"]=$result["content"].$tdStart["content"];
3971
 
3972
			}#if end
3973
 
3974
		#如果 $conf["hiddenVarName"] 存在
3975
		if(isset($conf["hiddenVarName"])){
3976
 
3977
			#傳送多個隱藏表單的資訊
3978
			#回傳的數值:
3979
			#如果回傳值等於1,則代表參數設定錯誤。
3980
			#$result["sendedArrayName"],
3981
			#$result["sendedArrayValue"],
3982
			#$result["sendedArrayCount"],
3983
			#必填參數:
3984
			$conf_inputMutiHidden["nameArray"]=$conf["hiddenVarName"];#欲傳送的隱藏陣列變數名稱
3985
			$conf_inputMutiHidden["valueArray"]=$conf["hiddenVarContent"];#欲傳送的隱藏陣列變數數值
3986
			$hiddenVar=form::inputMultiHidden($conf_inputMutiHidden);
3987
			unset($conf_inputMutiHidden);
3988
 
3989
			#如果隱藏的表單變數設置失敗
3990
			if($hiddenVar["status"]=="false"){
3991
 
3992
				#設置執行不正常
3993
				$result["status"]="false";
3994
 
3995
				#設置執行錯誤的訊息
3996
				$result["error"]=$hiddenVar;
3997
 
3998
				#回傳結果
3999
				return $result;
4000
 
4001
				}#if end
4002
 
4003
			#接上語法
4004
			$result["content"]=$result["content"].$hiddenVar["content"];
4005
 
4006
			}#if end
4007
 
4008
		#一般按鈕
4009
		#函式說明:
4010
		#放置按鈕
4011
		#回傳結果:
4012
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4013
		#$result["function"],當前執行的函數.
4014
		#$result["error"],錯誤訊息陣列.
4015
		#$result["content"],按鈕語法.
4016
		#必填參數:
4017
		$conf["form::button"]["buttonDisplayValue"]=$conf["buttonDisplayValue"];#爲按鈕上顯示的文字。
4018
		#可省略參數:
4019
		$conf["form::button"]["buttonStyleName"]=$conf["buttonStyleName"];#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __simpleButtonLinkDefaultButtonCssStyle 。
4020
			#其屬性爲   "width","height","font-size","text-align"
4021
			#其屬性值爲 "100%" ,  "50"  ,    "30"   ,   "center"
4022
 
4023
		#如果有設定 $conf["buttonActionScriptFunction"]
4024
		if(isset($conf["buttonActionScriptFunction"])){
4025
 
4026
			$conf["form::button"]["buttonActionScriptFunction"]=$conf["buttonActionScriptFunction"];#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。
4027
			#"document.forms.formName.submit()"爲傳送名爲testForm的表單內容
4028
			#"window.print()"爲使用瀏覽器內建工具列印當前網頁
4029
 
4030
			}#if end
4031
 
4032
		#$conf["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。
4033
		$conf["form::button"]["disabled"]=$conf["disabled"];#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".
4034
		#$conf["tableStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"false"。
4035
		#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。
4036
		#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
4037
		#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",亦即沒有框線的樣式;"__withBorder"則爲有框線的樣式
4038
		#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".
4039
		#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
4040
		#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
4041
		#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
4042
		#$conf["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是,預設爲"false"。
4043
		#$conf["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".
4044
		#$conf["action"]="";#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用
4045
		#$conf["target"]="";#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用
4046
		#$conf["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".
4047
		#$conf["buttonId"],字串,按鈕的id.
4048
 
4049
		#如果 $conf["buttonId"] 有設置
4050
		if(isset($conf["buttonId"])){
4051
 
4052
			#設置按鈕id
4053
			$conf["form::button"]["buttonId"]=$conf["buttonId"];
4054
 
4055
			}#if end
4056
 
4057
		#參考資料:
4058
		#http://stackoverflow.com/questions/3014649/how-to-disable-html-button-using-javascript
4059
		$button=form::button($conf["form::button"]);
4060
		unset($conf["form::button"]);
4061
 
4062
		#如果建立按鈕失敗
4063
		if($button["status"]=="false"){
4064
 
4065
			#設置執行不正常
4066
			$result["status"]="false";
4067
 
4068
			#設置執行錯誤的訊息
4069
			$result["error"]=$button;
4070
 
4071
			#回傳結果
4072
			return $result;
4073
 
4074
			}#if end
4075
 
4076
		#接上按鈕語法
4077
		$result["content"]=$result["content"].$button["content"];
4078
 
4079
		#如果其值爲 true
4080
		if($conf["tdEnd"]=="true"){
4081
 
4082
			#加上 </td>
4083
			$result["content"]=$result["content"]."</td>";
4084
 
4085
			}#if end
4086
 
4087
		#如果其值爲 true
4088
		if($conf["trEnd"]=="true"){
4089
 
4090
			#加上 </tr>
4091
			$result["content"]=$result["content"]."</tr>";
4092
 
4093
			}#if end
4094
 
4095
		#如果 $conf["formEnd"] 等於 true
4096
		if($conf["formEnd"]=="true"){
4097
 
4098
			#說明:
4099
			#表單結束
4100
			#回傳結果:
4101
			#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
4102
			#$result["error"],錯誤訊息陣列.
4103
			#$resutl["function"],當前執行的函式名稱.
4104
			#$result["content"],表單結束的語法.
4105
			#必填寫的參數:
4106
			$conf_end["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。
4107
			$formEnd=form::end($conf_end);
4108
			unset($conf_end);
4109
 
4110
			#如果表單結束失敗
4111
			if($formEnd["status"]=="false"){
4112
 
4113
				#設置執行失敗
4114
				$result["status"]="false";
4115
 
4116
				#設置執行錯誤訊息
4117
				$result["error"]=$formEnd;
4118
 
4119
				#回傳結果
4120
				return $result;
4121
 
4122
				}#if end
4123
 
4124
			#串聯表單結束的語法
4125
			$result["content"]=$result["content"].$formEnd["content"];
4126
 
4127
			}#if end
4128
 
4129
		#如果有表格結束
4130
		if($conf["tableEnd"]=="true"){
4131
 
4132
			#函式說明:
4133
			#表格結束
4134
			#回傳結果:
4135
			#表格結束的語法
4136
			$result["content"]=$result["content"].table::end();
4137
 
4138
			}#if end
4139
 
4140
		#設置執行正常
4141
		$result["status"]="true";
4142
 
4143
		#回傳結果
4144
		return $result;
4145
 
4146
		}#function sendHugeDataButton end
4147
 
4148
	/*
4149
	#函式說明:
4150
	#可以輸入文字的表單
4151
	#回傳結果:
4152
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4153
	#$result["function"],當前執行的函數.
4154
	#$result["error"],錯誤訊息陣列.
4155
	#$result["content"],按鈕語法.
4156
	#必填參數:
4157
	#$conf["name"],字串,爲該文字輸入框的名稱,用於讓接收頁面讀取的名稱。
4158
	$conf["name"]="";
4159
	#$conf["readOnly"],字串,爲該文字框是否可以填寫資料,若要只能觀看不能填寫,那麼就必須將其值設爲"true",反之要設爲"false".
4160
	$conf["readOnly"]="false";
4161
	#可省略參數:
4162
	#$conf["width"],字串,爲文字框的外觀長度,預設為"100%".
4163
	#$conf["width"]="";
4164
	#$conf["maxInputLength"],字串,爲可輸入的最大位元長度,預設不限制.
4165
	#$conf["maxInputLength"]="";
4166
	#$conf["autoFocus"],字串,是否為將填寫的指標移到該表單,"true"代表要,預設為"false".
4167
	#$conf["autoFocus"]="";
4168
	#$conf["value"],字串,爲該文字框預設要顯示的文字,預設爲"".
4169
	#$conf["value"]="";
4170
	#$conf["class"],字串,爲要套用的css樣式,若省略,則會套用預設的 "__qbpwcf_inputTextCssStyle" 樣式,其屬性爲 "width:100%","font-size:30px"
4171
	#$conf["class"]="";
4172
	#$conf["classList"],字串陣列,為要使用的多個css class樣式,若有使用,則會取代"class"參數的設定.
4173
	#$conf["classList"]=array();
4174
	#$conf["jsActivitor"],字串,爲觸發js的條件,可以是"onChange"(已改變內容時)、"onClick"(按下按鈕時)、"onkeyup"(當鍵盤按下放開後)、"onmouseover"(當滑鼠移過去的時候)...,須搭配$conf["jsSubmitActionTarget"]參數。
4175
	#$conf["jsActivitor"]="";
4176
	#$conf["jsAction"],字串,爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
4177
	#$conf["jsAction"]="";
4178
	#$conf["trStart"],字串,爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
4179
	#$conf["trStart"]="";
4180
	#$conf["tdStart"],字串,爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".
4181
	#$conf["tdStart"]="";
4182
	#$conf["formStart"],字串,爲是否要以<form>開頭,"true"表示"是",也可以看成表單的開始,預設為"false".
4183
	#$conf["formStart"]="";
4184
	#$conf["formAction"],字串,表單遞交的目的地,若$conf["formStart"]為"true",則該參數不能省略.
4185
	#$conf["formAction"]="";
4186
	#$conf["formName"],字串,爲該表單的名稱
4187
	#$conf["formName"]="";
4188
	#$conf["formMethod"],字串,爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
4189
	#$conf["formMethod"]="";
4190
	#$conf["formTarget"],字串,為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
4191
	#$conf["formTarget"]="";
4192
	#$conf["tableStart"],字串,爲該表單是否要以<table>開始。"true"爲是,預設為"false".
4193
	#$conf["tableStart"]="";
4194
	#$conf["tableClass"],字串,表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式,預設為"__withoutBorder".
4195
	#$conf["tableClass"]="";
4196
	#$conf["formEnd"],字串,爲是否要以<form>結尾,"true"表示"是",也可以看成表單的結束,預設為"false".
4197
	#$conf["formEnd"]="true";
4198
	#$conf["tdEnd"],字串,爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
4199
	#$conf["tdEnd"]="true";
4200
	#$conf["trEnd"],字串,爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
4201
	#$conf["trEnd"]="true";
4202
	#$conf["tableEnd"],字串,爲該表單是否要以</table>結尾,"true"爲是,預設為"false".
4203
	#$conf["tableEnd"]="true";
4204
	#$conf["autocomplete"],字串,是否依據使用者過往輸入的記錄來提示可能要的輸入內容,"on"為啟用,"off"為停用,預設為"on".
4205
	#$conf["autocomplete"]="off";
4206
	#$conf["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
4207
	#$conf["required"]="true";
4208
	#$conf["comment"],字串,輸入方框上面要放哪些註解文字,亦即用label來呈現,同時指定"for"屬性的數值為當前"input"標籤的id,意即參數"name"的內容.
4209
	#$conf["comment"]="";
4210
	#$conf["placeholder"],字串,當沒有內容時要顯示的內容.
4211
	#$conf["placeholder"]="";
4212
	#$conf["br"],字串,"true"代表最後要換行,預設為"false".
4213
	#$conf["br"]="true";
4214
	#$conf["p"],字串,"true"代表最後要空一行,預設為"false".
4215
	#$conf["p"]="true";
4216
	#$conf["id"],字串,該元素的id,預設不使用.
4217
	#$conf["id"]="";
4218
	#$conf["dataFormId"],字串,提供用於識別哪一張表單的data屬性名稱.
4219
	#$conf["dataFormId"]="";
4220
	#參考資料:
4221
	#input=>http://www.w3schools.com/tags/tag_input.asp
4222
	#備註:
4223
	#無.
4224
	*/
4225
	public static function inputText(&$conf){
4226
 
4227
		#初始化要回傳的內容
4228
		$result=array();
4229
 
4230
		#設置當前執行的函數
4231
		$result["function"]=__FUNCTION__;
4232
 
4233
		#初始化content樣式內容
4234
		$result["content"]="";
4235
 
4236
		#如果 $conf 不為陣列
4237
		if(gettype($conf)!="array"){
4238
 
4239
			#設置執行失敗
4240
			$result["status"]="false";
4241
 
4242
			#設置執行錯誤訊息
4243
			$result["error"][]="\$conf變數須為陣列形態";
4244
 
4245
			#如果傳入的參數為 null
4246
			if($conf==null){
4247
 
4248
				#設置執行錯誤訊息
4249
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
4250
 
4251
				}#if end
4252
 
4253
			#回傳結果
4254
			return $result;
4255
 
4256
			}#if end
4257
 
4258
		#函式說明:
4259
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
4260
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4261
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
4262
		#$result["function"],當前執行的函式名稱.
4263
		#$result["argu"],設置給予的參數.
4264
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4265
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4266
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4267
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
4268
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
4269
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
4270
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
4271
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
4272
		#必填寫的參數:
4273
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4274
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4275
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4276
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4277
		#可以省略的參數:
4278
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4279
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("name","readOnly");
4280
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
4281
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
4282
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
4283
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
4284
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
4285
		#$conf["canNotBeEmpty"]=array();
4286
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
4287
		#$conf["canBeEmpty"]=array();
4288
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
4289
		#$conf["skipableVariableCanNotBeEmpty"]=array();
4290
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4291
		$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");
4292
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
4293
		$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");
4294
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4295
		$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);
4296
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
4297
		#$conf["disallowAllSkipableVarIsEmpty"]="";
4298
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
4299
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
4300
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4301
		#$conf["arrayCountEqualCheck"][]=array();
4302
		#參考資料:
4303
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4304
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4305
		unset($conf["variableCheck::checkArguments"]);
4306
 
4307
		#如果檢查失敗
4308
		if($checkArguments["status"]=="false"){
4309
 
4310
			#設置執行不正常
4311
			$result["status"]="false";
4312
 
4313
			#程式停止執行
4314
			$result["error"]=$checkArguments;
4315
 
4316
			#回傳結果
4317
			return $result;
4318
 
4319
			}#if end
4320
 
4321
		#如果檢查不通過
4322
		if($checkArguments["passed"]=="false"){
4323
 
4324
			#設置執行不正常
4325
			$result["status"]="false";
4326
 
4327
			#程式停止執行
4328
			$result["error"]=$checkArguments;
4329
 
4330
			#回傳結果
4331
			return $result;
4332
 
4333
			}#if end
4334
 
4335
		#如果 $conf["tableStart"] 為 "true"
4336
		if($conf["tableStart"]=="true"){
4337
 
4338
			#函式說明:
4339
			#表格開始,可以設定表格的厚度和位置
4340
			#回傳結果:
4341
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4342
			#$result["content"],表格開始的語法
4343
			#$result["function"],當前執行的函數
4344
			#$result["error"],函式錯誤訊息
4345
			#必填寫的參數:
4346
			$conf["table::start"]["class"]=$conf["tableClass"];#爲表格的css樣式,若為"",則代表不套用css樣式;若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
4347
			$tableStart=table::start($conf["table::start"]);
4348
			unset($conf["table::start"]);
4349
 
4350
			#如果表開始立失敗
4351
			if($tableStart["status"]=="false"){
4352
 
4353
				#設置執行失敗
4354
				$result["status"]="false";
4355
 
4356
				#設置執行錯誤訊息
4357
				$result["error"]=$tableStart;
4358
 
4359
				#回傳結果
4360
				return $result;
4361
 
4362
				}#if end
4363
 
4364
			#串接表格開始的語法
4365
			$result["content"]=$result["content"].$tableStart["content"];
4366
 
4367
			}#if end
4368
 
4369
		#如果 $conf["comment"] 有設置
4370
		if(isset($conf["comment"])){
4371
 
4372
			#新增label,且套用css樣式.
4373
			$result["content"]=$result["content"]."<label for=\"".$conf["name"]."\" class=\"".$conf["class"]."\" >".$conf["comment"]."</label>";
4374
 
4375
			}#if end
4376
 
4377
		#如果其值爲 true
4378
		if($conf["trStart"]=="true"){
4379
 
4380
			#串接列開始<tr>
4381
			$result["content"]=$result["content"]."<tr>";
4382
 
4383
			}#if end
4384
 
4385
		#如果其值爲 true
4386
		if($conf["tdStart"]=="true"){
4387
 
4388
			#串接欄位開始<td>
4389
			$result["content"]=$result["content"]."<td>";
4390
 
4391
			}#if end
4392
 
4393
		#如果 $conf["formStart"] 等於 "true"
4394
		if($conf["formStart"]=="true"){
4395
 
4396
			#函式說明:
4397
			#表單開始
4398
			#回傳結果:
4399
			#$result,表單開始的語法
4400
			#必填參數:
4401
			$conf["form"]["start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容
4402
			#可省略參數:
4403
 
4404
			#如果 $conf["formName"] 有設置
4405
			if(isset($conf["formName"])){
4406
 
4407
				#過濾 $conf["formName"] 避免錯誤
4408
				#函式說明:
4409
				#處理字串避免網頁出錯
4410
				#回傳結果:
4411
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4412
				#$result["function"],當前執行的函數.
4413
				#$result["content"],爲處理好的字串.
4414
				#$result["error"],錯誤訊息陣列.
4415
				#必填參數:
4416
				$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["formName"];#爲要處理的字串
4417
				#可省略的參數:
4418
				$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
4419
					#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
4420
					#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
4421
				#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
4422
				$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
4423
				unset($conf["stringProcess::correctCharacter"]);
4424
 
4425
				#如果過濾 $conf["formName"] 失敗
4426
				if($correctCharacter["status"]=="false"){
4427
 
4428
					#設置執行失敗
4429
					$result["status"]="false";
4430
 
4431
					#設置執行錯誤訊息
4432
					$result["error"]=$correctCharacter;
4433
 
4434
					#回傳結果
4435
					return $result;
4436
 
4437
					}#if end
4438
 
4439
				#則設定其數值
4440
				$conf["form"]["start"]["name"]=$correctCharacter["content"];#爲該表單的名稱
4441
 
4442
				}#if end
4443
 
4444
			#如果 $conf["formMethod"] 有設置
4445
			if(isset($conf["formMethod"])){
4446
 
4447
				#則設定其數值
4448
				$conf["form"]["start"]["method"]=$conf["formMethod"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
4449
 
4450
				}#if end
4451
 
4452
			#如果 $conf["formTarget"] 有設定
4453
			if(isset($conf["formTarget"])){
4454
 
4455
				#則設定其數值
4456
				$conf["form"]["start"]["target"]=$conf["formTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
4457
 
4458
				}#if end
4459
 
4460
			#則設定其參數數值
4461
			$conf["form"]["start"]["tableStart"]="false";#爲該表單是否要以<table>開始。"true"爲是;
4462
 
4463
			#則設定其數值
4464
			#$conf["form"]["start"]["tableClass"]=$conf["tableClass"];#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
4465
			$formStart=form::start($conf["form"]["start"]);
4466
			unset($conf["form"]["start"]);
4467
 
4468
			#如果表單開始失敗
4469
			if($formStart["status"]=="false"){
4470
 
4471
				#設置執行失敗
4472
				$result["status"]="false";
4473
 
4474
				#設置執行錯誤訊息
4475
				$result["error"]=$formStart;
4476
 
4477
				#回傳結果
4478
				return $result;
4479
 
4480
				}#if end
4481
 
4482
			#串接表單開始的語法
4483
			$result["content"]=$result["content"].$formStart["content"];
4484
 
4485
			}#if end
4486
 
4487
		#如果$conf["width"]沒設定
4488
		if(!isset($conf["width"])){
4489
 
4490
			#則$conf["width"]爲空值
4491
			$conf["width"]="";
4492
 
4493
			}#if end
4494
 
4495
		#如果$conf["width"]有設定
4496
		else{
4497
 
4498
			#則套用寬度的css設定值
4499
			$conf["width"]=" style=\"width:".$conf["width"].";\" ";
4500
 
4501
			}#else end
4502
 
4503
		#如果$conf["maxInputLength"]沒設定
4504
		if(!isset($conf["maxInputLength"])){
4505
 
4506
			#則$conf["maxInputLength"]爲空值
4507
			$conf["maxInputLength"]="";
4508
 
4509
			}#if end
4510
 
4511
		#如果$conf["maxInputLength"]有設定
4512
		else{
4513
 
4514
			$conf["maxInputLength"]=" maxlength=".$conf["maxInputLength"];
4515
 
4516
			}#else end
4517
 
4518
		#如果$conf["value"]沒有設定
4519
		if(!isset($conf["value"])){
4520
 
4521
			#則$value就爲空值
4522
			$conf["value"]="";
4523
 
4524
			}#if end
4525
 
4526
		#如果$conf["value"]有設定,且不為空.
4527
		else if($conf["value"]!==""){
4528
 
4529
			#過濾 $conf["value"] 的內容,避免錯誤。
4530
			#函式說明:
4531
			#處理字串避免網頁出錯
4532
			#回傳結果:
4533
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4534
			#$result["function"],當前執行的函數.
4535
			#$result["content"],爲處理好的字串.
4536
			#$result["error"],錯誤訊息陣列.
4537
			#必填參數:
4538
			$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["value"];#爲要處理的字串
4539
			#可省略的參數:
4540
			$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"");#爲被選擇要處理的字串/字元,須爲陣列值。
4541
				#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
4542
				#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
4543
			#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
4544
			$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
4545
			unset($conf["stringProcess::correctCharacter"]);
4546
 
4547
			#如果過濾字串失敗
4548
			if($correctCharacter["status"]=="false"){
4549
 
4550
				#設置執行失敗
4551
				$result["status"]="false";
4552
 
4553
				#設置執行錯誤訊息
4554
				$result["error"]=$correctCharacter;
4555
 
4556
				#回傳結果
4557
				return $result;
4558
 
4559
				}#if end
4560
 
4561
			#就設定預設的內容
4562
			$conf["value"] =" value= \"".$correctCharacter["content"]."\" ";
4563
 
4564
			}#else end
4565
 
4566
		#如果$conf["readOnly"]爲"true"
4567
		if($conf["readOnly"]=="true"){
4568
 
4569
			#則$conf["readOnly"] 爲 readonly
4570
			$conf["readOnly"]="readonly=true disabled=true";
4571
 
4572
			}#if end
4573
 
4574
		#反之
4575
		else{
4576
 
4577
			#$conf["readOnly"]爲空
4578
			$conf["readOnly"]="";
4579
 
4580
			}#if end
4581
 
4582
		#判斷 $conf["autoFocus"] 的數值
4583
		switch($conf["autoFocus"]){
4584
 
4585
			#如果是 "true"
4586
			case "true":
4587
 
4588
				#設置為 "autofocus"
4589
				$conf["autoFocus"]=" autofocus=true ";
4590
 
4591
				#跳出 switch
4592
				break;
4593
 
4594
			#如果是其他內容
4595
			default:
4596
 
4597
				#則設置為 ""
4598
				$conf["autoFocus"]="";
4599
 
4600
			}#switch end
4601
 
4602
		#如果有設置 $conf["class"]
4603
		if(isset($conf["class"])){
4604
 
4605
			#套用css設定
4606
			$conf["class"]=" class = \"".$conf["class"]."\"";
4607
 
4608
			}#if end
4609
 
4610
		#反之
4611
		else{
4612
			#設置為空字串
4613
			$conf["class"]="";
4614
 
4615
			}#else end
4616
 
4617
		#如果有 $conf["classList"]
4618
		if(isset($conf["classList"])){
4619
 
4620
			#傳接 class 開始
4621
			$conf["class"]=" class = \"";
4622
 
4623
			#針對 $conf["classList"] 的每個元素
4624
			foreach($conf["classList"] as $index => $cssClassName){
4625
 
4626
				#串接 class 名稱
4627
				$conf["class"]=$conf["class"].$cssClassName;
4628
 
4629
				#若後面還有未串接的 class 名稱
4630
				if(isset($conf["classList"][$index+1])){
4631
 
4632
					#串接空格
4633
					$conf["class"]=$conf["class"]." ";
4634
 
4635
					}#if end
4636
 
4637
				}#foreach end
4638
 
4639
			#串接 class 結束
4640
			$conf["class"]=$conf["class"]."\"";
4641
 
4642
			}#if end
4643
 
4644
		#如果 $conf["jsActivitor"] 與 $conf["jsAction"] 皆有設定
4645
		if( isset($conf["jsActivitor"]) && isset($conf["jsAction"]) ){
4646
 
4647
			#則將設定值組合
4648
			$conf["jsCustom"]=" ".$conf["jsActivitor"]."=".$conf["jsAction"]." ";
4649
 
4650
			}#if end
4651
 
4652
		#如果 $conf["jsCustom"] 沒有設定
4653
		if(!isset($conf["jsCustom"])){
4654
 
4655
			#將其設爲空值
4656
			$conf["jsCustom"]="";
4657
 
4658
			}#if end
4659
 
4660
		#過濾 $conf["name"] 避免錯誤
4661
		#函式說明:
4662
		#處理字串避免網頁出錯
4663
		#回傳結果:
4664
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4665
		#$result["function"],當前執行的函數.
4666
		#$result["content"],爲處理好的字串.
4667
		#$result["error"],錯誤訊息陣列.
4668
		#必填參數:
4669
		$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["name"];#爲要處理的字串
4670
		#可省略的參數:
4671
		$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
4672
			#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
4673
			#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
4674
		#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
4675
		$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
4676
		unset($conf["stringProcess::correctCharacter"]);
4677
 
4678
		#如果過濾字串失敗
4679
		if($correctCharacter["status"]=="false"){
4680
 
4681
			#設置執行失敗
4682
			$result["status"]="false";
4683
 
4684
			#設置執行錯誤訊息
4685
			$result["error"]=$correctCharacter;
4686
 
4687
			#回傳結果
4688
			return $result;
4689
 
4690
			}#if end
4691
 
4692
		#置換過濾好了的$conf["name"]
4693
		$conf["name"]=$correctCharacter["content"];
4694
 
4695
		#如果有設定 $conf["placeholder"]
4696
		if(isset($conf["placeholder"])){
4697
 
4698
			#串接 placeholder 的內容
4699
			$conf["placeholder"]=" placeholder=\"".$conf["placeholder"]."\" ";
4700
 
4701
			}#if end
4702
 
4703
		#反之沒有設定 $conf["placeholder"]
4704
		else{
4705
 
4706
			#設為 ""
4707
			$conf["placeholder"]="";
4708
 
4709
			}#else end
4710
 
4711
		#如果 $conf["required"] 為"true"
4712
		if($conf["required"]=="true"){
4713
 
4714
			#設置 "required" 屬性
4715
			$conf["required"]="required=true";
4716
 
4717
			}#if end
4718
 
4719
		#反之
4720
		else{
4721
 
4722
			#設為空值
4723
			$conf["required"]="";
4724
 
4725
			}#else end
4726
 
4727
		#如果有設置id
4728
		if(isset($conf["id"])){
4729
 
4730
			#設置id屬性
4731
			$conf["id"]="id=\"".$conf["id"]."\"";
4732
 
4733
			}#if end
4734
 
4735
		#反之
4736
		else{
4737
 
4738
			#設為空值
4739
			$conf["id"]="";
4740
 
4741
			}#else end
4742
 
4743
		#如果有設置 $conf["dataFormId"]
4744
		if(isset($conf["dataFormId"])){
4745
 
4746
			#設置 data-id 屬性
4747
			$conf["dataFormId"]="data-form-id=\"".$conf["dataFormId"]."\"";
4748
 
4749
			}#if end
4750
 
4751
		#反之設置為空數值	
4752
		else{
4753
 
4754
			$conf["dataFormId"]="";
4755
 
4756
			}#else end	
4757
 
4758
		#如果要 autocomplete
30 liveuser 4759
		if($conf["autocomplete"]==="on"){
4760
 
3 liveuser 4761
			#設置為 "autocomplete"
4762
			$conf["autocomplete"]="autocomplete";
4763
 
30 liveuser 4764
			}#if end
3 liveuser 4765
 
4766
		#反之
30 liveuser 4767
		else{
4768
 
3 liveuser 4769
			#設置為空字串
4770
			$conf["autocomplete"]="";
4771
 
30 liveuser 4772
			}#else end
3 liveuser 4773
 
4774
		#放置可以輸入文字的表單
4775
		$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"]." >";
4776
 
4777
		#如果 $conf["formEnd"] 等於 "true"
4778
		if($conf["formEnd"]=="true"){
4779
 
4780
			#函式說明:
4781
			#表單結束
4782
			#回傳結果:
4783
			#$result,表單結束的語法
4784
			#必填參數:
4785
			#則設定其數值
4786
			$conf["form"]["end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。
4787
			$formEnd=form::end($conf["form"]["end"]);
4788
			unset($conf["form"]["end"]);
4789
 
4790
			#串接表單結束的語法
4791
			$result["content"]=$result["content"].$formEnd["content"];
4792
 
4793
			}#if end
4794
 
4795
		#如果其值爲 true
4796
		if($conf["tdEnd"]=="true"){
4797
 
4798
			#串接欄位結束的語法
4799
			$result["content"]=$result["content"]."</td>";
4800
 
4801
			}#if end
4802
 
4803
		#如果其值爲 true
4804
		if($conf["trEnd"]=="true"){
4805
 
4806
			#串接列結束的語法
4807
			$result["content"]=$result["content"]."</tr>";
4808
 
4809
			}#if end
4810
 
4811
		#如果 $conf["br"] 等於 "true"
4812
		if($conf["br"]=="true"){
4813
 
4814
			#結尾加上<br>
4815
			$result["content"]=$result["content"]."<br>";
4816
 
4817
			}#if end
4818
 
4819
		#如果 $conf["p"] 等於 "true"
4820
		if($conf["p"]=="true"){
4821
 
4822
			#結尾加上<p>
4823
			$result["content"]=$result["content"]."<p>";
4824
 
4825
			}#if end
4826
 
4827
		#執行到這邊代表執行成功
4828
		$result["status"]="true";
4829
 
4830
		#回傳結果
4831
		return $result;
4832
 
4833
		}#function inputText end
4834
 
4835
	/*
4836
	#函式說明:
30 liveuser 4837
	#可以輸入Email的輸入方框
4838
	#回傳結果:
4839
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4840
	#$result["function"],當前執行的函數.
4841
	#$result["error"],錯誤訊息陣列.
4842
	#$result["content"],按鈕語法.
4843
	#必填參數:
4844
	#$conf["name"],字串,爲該文字輸入框的名稱,用於讓接收頁面讀取的名稱。
4845
	$conf["name"]="";
4846
	#$conf["readOnly"],字串,爲該文字框是否可以填寫資料,若要只能觀看不能填寫,那麼就必須將其值設爲"true",反之要設爲"false".
4847
	$conf["readOnly"]="false";
4848
	#可省略參數:
4849
	#$conf["width"],字串,爲文字框的外觀長度,預設為"100%".
4850
	#$conf["width"]="";
4851
	#$conf["maxInputLength"],字串,爲可輸入的最大位元長度,預設不限制.
4852
	#$conf["maxInputLength"]="";
4853
	#$conf["autoFocus"],字串,是否為將填寫的指標移到該表單,"true"代表要,預設為"false".
4854
	#$conf["autoFocus"]="";
4855
	#$conf["value"],字串,爲該文字框預設要顯示的文字,預設爲"".
4856
	#$conf["value"]="";
4857
	#$conf["class"],字串,爲要套用的css樣式,若省略,則會套用預設的 "__qbpwcf_inputTextCssStyle" 樣式,其屬性爲 "width:100%","font-size:30px"
4858
	#$conf["class"]="";
4859
	#$conf["classList"],字串陣列,為要使用的多個css class樣式,若有使用,則會取代"class"參數的設定.
4860
	#$conf["classList"]=array();
4861
	#$conf["jsActivitor"],字串,爲觸發js的條件,可以是"onChange"(已改變內容時)、"onClick"(按下按鈕時)、"onkeyup"(當鍵盤按下放開後)、"onmouseover"(當滑鼠移過去的時候)...,須搭配$conf["jsSubmitActionTarget"]參數。
4862
	#$conf["jsActivitor"]="";
4863
	#$conf["jsAction"],字串,爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
4864
	#$conf["jsAction"]="";
4865
	#$conf["trStart"],字串,爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
4866
	#$conf["trStart"]="";
4867
	#$conf["tdStart"],字串,爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".
4868
	#$conf["tdStart"]="";
4869
	#$conf["formStart"],字串,爲是否要以<form>開頭,"true"表示"是",也可以看成表單的開始,預設為"false".
4870
	#$conf["formStart"]="";
4871
	#$conf["formAction"],字串,表單遞交的目的地,若$conf["formStart"]為"true",則該參數不能省略.
4872
	#$conf["formAction"]="";
4873
	#$conf["formName"],字串,爲該表單的名稱
4874
	#$conf["formName"]="";
4875
	#$conf["formMethod"],字串,爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
4876
	#$conf["formMethod"]="";
4877
	#$conf["formTarget"],字串,為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
4878
	#$conf["formTarget"]="";
4879
	#$conf["tableStart"],字串,爲該表單是否要以<table>開始。"true"爲是,預設為"false".
4880
	#$conf["tableStart"]="";
4881
	#$conf["tableClass"],字串,表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式,預設為"__withoutBorder".
4882
	#$conf["tableClass"]="";
4883
	#$conf["formEnd"],字串,爲是否要以<form>結尾,"true"表示"是",也可以看成表單的結束,預設為"false".
4884
	#$conf["formEnd"]="true";
4885
	#$conf["tdEnd"],字串,爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
4886
	#$conf["tdEnd"]="true";
4887
	#$conf["trEnd"],字串,爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
4888
	#$conf["trEnd"]="true";
4889
	#$conf["tableEnd"],字串,爲該表單是否要以</table>結尾,"true"爲是,預設為"false".
4890
	#$conf["tableEnd"]="true";
4891
	#$conf["autocomplete"],字串,是否依據使用者過往輸入的記錄來提示可能要的輸入內容,"on"為啟用,"off"為停用,預設為"on".
4892
	#$conf["autocomplete"]="off";
4893
	#$conf["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
4894
	#$conf["required"]="true";
4895
	#$conf["comment"],字串,輸入方框上面要放哪些註解文字,亦即用label來呈現,同時指定"for"屬性的數值為當前"input"標籤的id,意即參數"name"的內容.
4896
	#$conf["comment"]="";
4897
	#$conf["placeholder"],字串,當沒有內容時要顯示的內容.
4898
	#$conf["placeholder"]="";
4899
	#$conf["br"],字串,"true"代表最後要換行,預設為"false".
4900
	#$conf["br"]="true";
4901
	#$conf["p"],字串,"true"代表最後要空一行,預設為"false".
4902
	#$conf["p"]="true";
4903
	#$conf["id"],字串,該元素的id,預設不使用.
4904
	#$conf["id"]="";
4905
	#$conf["dataFormId"],字串,提供用於識別哪一張表單的data屬性名稱.
4906
	#$conf["dataFormId"]="";
4907
	#參考資料:
4908
	#https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input/email
4909
	#備註:
4910
	#無.
4911
	*/
4912
	public static function inputEmail(&$conf){
4913
 
4914
		#初始化要回傳的內容
4915
		$result=array();
4916
 
4917
		#設置當前執行的函數
4918
		$result["function"]=__FUNCTION__;
4919
 
4920
		#初始化content樣式內容
4921
		$result["content"]="";
4922
 
4923
		#如果 $conf 不為陣列
4924
		if(gettype($conf)!="array"){
4925
 
4926
			#設置執行失敗
4927
			$result["status"]="false";
4928
 
4929
			#設置執行錯誤訊息
4930
			$result["error"][]="\$conf變數須為陣列形態";
4931
 
4932
			#如果傳入的參數為 null
4933
			if($conf==null){
4934
 
4935
				#設置執行錯誤訊息
4936
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
4937
 
4938
				}#if end
4939
 
4940
			#回傳結果
4941
			return $result;
4942
 
4943
			}#if end
4944
 
4945
		#函式說明:
4946
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
4947
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4948
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
4949
		#$result["function"],當前執行的函式名稱.
4950
		#$result["argu"],設置給予的參數.
4951
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4952
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4953
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4954
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
4955
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
4956
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
4957
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
4958
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
4959
		#必填寫的參數:
4960
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4961
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4962
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4963
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4964
		#可以省略的參數:
4965
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4966
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("name","readOnly");
4967
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
4968
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
4969
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
4970
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
4971
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
4972
		#$conf["canNotBeEmpty"]=array();
4973
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
4974
		#$conf["canBeEmpty"]=array();
4975
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
4976
		#$conf["skipableVariableCanNotBeEmpty"]=array();
4977
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4978
		$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");
4979
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
4980
		$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");
4981
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4982
		$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);
4983
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
4984
		#$conf["disallowAllSkipableVarIsEmpty"]="";
4985
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
4986
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
4987
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4988
		#$conf["arrayCountEqualCheck"][]=array();
4989
		#參考資料:
4990
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4991
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4992
		unset($conf["variableCheck::checkArguments"]);
4993
 
4994
		#如果檢查失敗
4995
		if($checkArguments["status"]=="false"){
4996
 
4997
			#設置執行不正常
4998
			$result["status"]="false";
4999
 
5000
			#程式停止執行
5001
			$result["error"]=$checkArguments;
5002
 
5003
			#回傳結果
5004
			return $result;
5005
 
5006
			}#if end
5007
 
5008
		#如果檢查不通過
5009
		if($checkArguments["passed"]=="false"){
5010
 
5011
			#設置執行不正常
5012
			$result["status"]="false";
5013
 
5014
			#程式停止執行
5015
			$result["error"]=$checkArguments;
5016
 
5017
			#回傳結果
5018
			return $result;
5019
 
5020
			}#if end
5021
 
5022
		#如果 $conf["tableStart"] 為 "true"
5023
		if($conf["tableStart"]=="true"){
5024
 
5025
			#函式說明:
5026
			#表格開始,可以設定表格的厚度和位置
5027
			#回傳結果:
5028
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5029
			#$result["content"],表格開始的語法
5030
			#$result["function"],當前執行的函數
5031
			#$result["error"],函式錯誤訊息
5032
			#必填寫的參數:
5033
			$conf["table::start"]["class"]=$conf["tableClass"];#爲表格的css樣式,若為"",則代表不套用css樣式;若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
5034
			$tableStart=table::start($conf["table::start"]);
5035
			unset($conf["table::start"]);
5036
 
5037
			#如果表開始立失敗
5038
			if($tableStart["status"]=="false"){
5039
 
5040
				#設置執行失敗
5041
				$result["status"]="false";
5042
 
5043
				#設置執行錯誤訊息
5044
				$result["error"]=$tableStart;
5045
 
5046
				#回傳結果
5047
				return $result;
5048
 
5049
				}#if end
5050
 
5051
			#串接表格開始的語法
5052
			$result["content"]=$result["content"].$tableStart["content"];
5053
 
5054
			}#if end
5055
 
5056
		#如果 $conf["comment"] 有設置
5057
		if(isset($conf["comment"])){
5058
 
5059
			#新增label,且套用css樣式.
5060
			$result["content"]=$result["content"]."<label for=\"".$conf["name"]."\" class=\"".$conf["class"]."\" >".$conf["comment"]."</label>";
5061
 
5062
			}#if end
5063
 
5064
		#如果其值爲 true
5065
		if($conf["trStart"]=="true"){
5066
 
5067
			#串接列開始<tr>
5068
			$result["content"]=$result["content"]."<tr>";
5069
 
5070
			}#if end
5071
 
5072
		#如果其值爲 true
5073
		if($conf["tdStart"]=="true"){
5074
 
5075
			#串接欄位開始<td>
5076
			$result["content"]=$result["content"]."<td>";
5077
 
5078
			}#if end
5079
 
5080
		#如果 $conf["formStart"] 等於 "true"
5081
		if($conf["formStart"]=="true"){
5082
 
5083
			#函式說明:
5084
			#表單開始
5085
			#回傳結果:
5086
			#$result,表單開始的語法
5087
			#必填參數:
5088
			$conf["form"]["start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容
5089
			#可省略參數:
5090
 
5091
			#如果 $conf["formName"] 有設置
5092
			if(isset($conf["formName"])){
5093
 
5094
				#過濾 $conf["formName"] 避免錯誤
5095
				#函式說明:
5096
				#處理字串避免網頁出錯
5097
				#回傳結果:
5098
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5099
				#$result["function"],當前執行的函數.
5100
				#$result["content"],爲處理好的字串.
5101
				#$result["error"],錯誤訊息陣列.
5102
				#必填參數:
5103
				$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["formName"];#爲要處理的字串
5104
				#可省略的參數:
5105
				$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
5106
					#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
5107
					#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
5108
				#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
5109
				$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
5110
				unset($conf["stringProcess::correctCharacter"]);
5111
 
5112
				#如果過濾 $conf["formName"] 失敗
5113
				if($correctCharacter["status"]=="false"){
5114
 
5115
					#設置執行失敗
5116
					$result["status"]="false";
5117
 
5118
					#設置執行錯誤訊息
5119
					$result["error"]=$correctCharacter;
5120
 
5121
					#回傳結果
5122
					return $result;
5123
 
5124
					}#if end
5125
 
5126
				#則設定其數值
5127
				$conf["form"]["start"]["name"]=$correctCharacter["content"];#爲該表單的名稱
5128
 
5129
				}#if end
5130
 
5131
			#如果 $conf["formMethod"] 有設置
5132
			if(isset($conf["formMethod"])){
5133
 
5134
				#則設定其數值
5135
				$conf["form"]["start"]["method"]=$conf["formMethod"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
5136
 
5137
				}#if end
5138
 
5139
			#如果 $conf["formTarget"] 有設定
5140
			if(isset($conf["formTarget"])){
5141
 
5142
				#則設定其數值
5143
				$conf["form"]["start"]["target"]=$conf["formTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
5144
 
5145
				}#if end
5146
 
5147
			#則設定其參數數值
5148
			$conf["form"]["start"]["tableStart"]="false";#爲該表單是否要以<table>開始。"true"爲是;
5149
 
5150
			#則設定其數值
5151
			#$conf["form"]["start"]["tableClass"]=$conf["tableClass"];#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
5152
			$formStart=form::start($conf["form"]["start"]);
5153
			unset($conf["form"]["start"]);
5154
 
5155
			#如果表單開始失敗
5156
			if($formStart["status"]=="false"){
5157
 
5158
				#設置執行失敗
5159
				$result["status"]="false";
5160
 
5161
				#設置執行錯誤訊息
5162
				$result["error"]=$formStart;
5163
 
5164
				#回傳結果
5165
				return $result;
5166
 
5167
				}#if end
5168
 
5169
			#串接表單開始的語法
5170
			$result["content"]=$result["content"].$formStart["content"];
5171
 
5172
			}#if end
5173
 
5174
		#如果$conf["width"]沒設定
5175
		if(!isset($conf["width"])){
5176
 
5177
			#則$conf["width"]爲空值
5178
			$conf["width"]="";
5179
 
5180
			}#if end
5181
 
5182
		#如果$conf["width"]有設定
5183
		else{
5184
 
5185
			#則套用寬度的css設定值
5186
			$conf["width"]=" style=\"width:".$conf["width"].";\" ";
5187
 
5188
			}#else end
5189
 
5190
		#如果$conf["maxInputLength"]沒設定
5191
		if(!isset($conf["maxInputLength"])){
5192
 
5193
			#則$conf["maxInputLength"]爲空值
5194
			$conf["maxInputLength"]="";
5195
 
5196
			}#if end
5197
 
5198
		#如果$conf["maxInputLength"]有設定
5199
		else{
5200
 
5201
			$conf["maxInputLength"]=" maxlength=".$conf["maxInputLength"];
5202
 
5203
			}#else end
5204
 
5205
		#如果$conf["value"]沒有設定
5206
		if(!isset($conf["value"])){
5207
 
5208
			#則$value就爲空值
5209
			$conf["value"]="";
5210
 
5211
			}#if end
5212
 
5213
		#如果$conf["value"]有設定,且不為空.
5214
		else if($conf["value"]!==""){
5215
 
5216
			#過濾 $conf["value"] 的內容,避免錯誤。
5217
			#函式說明:
5218
			#處理字串避免網頁出錯
5219
			#回傳結果:
5220
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5221
			#$result["function"],當前執行的函數.
5222
			#$result["content"],爲處理好的字串.
5223
			#$result["error"],錯誤訊息陣列.
5224
			#必填參數:
5225
			$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["value"];#爲要處理的字串
5226
			#可省略的參數:
5227
			$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"");#爲被選擇要處理的字串/字元,須爲陣列值。
5228
				#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
5229
				#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
5230
			#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
5231
			$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
5232
			unset($conf["stringProcess::correctCharacter"]);
5233
 
5234
			#如果過濾字串失敗
5235
			if($correctCharacter["status"]=="false"){
5236
 
5237
				#設置執行失敗
5238
				$result["status"]="false";
5239
 
5240
				#設置執行錯誤訊息
5241
				$result["error"]=$correctCharacter;
5242
 
5243
				#回傳結果
5244
				return $result;
5245
 
5246
				}#if end
5247
 
5248
			#就設定預設的內容
5249
			$conf["value"] =" value= \"".$correctCharacter["content"]."\" ";
5250
 
5251
			}#else end
5252
 
5253
		#如果$conf["readOnly"]爲"true"
5254
		if($conf["readOnly"]=="true"){
5255
 
5256
			#則$conf["readOnly"] 爲 readonly
5257
			$conf["readOnly"]="readonly=true disabled=true";
5258
 
5259
			}#if end
5260
 
5261
		#反之
5262
		else{
5263
 
5264
			#$conf["readOnly"]爲空
5265
			$conf["readOnly"]="";
5266
 
5267
			}#if end
5268
 
5269
		#判斷 $conf["autoFocus"] 的數值
5270
		switch($conf["autoFocus"]){
5271
 
5272
			#如果是 "true"
5273
			case "true":
5274
 
5275
				#設置為 "autofocus"
5276
				$conf["autoFocus"]=" autofocus=true ";
5277
 
5278
				#跳出 switch
5279
				break;
5280
 
5281
			#如果是其他內容
5282
			default:
5283
 
5284
				#則設置為 ""
5285
				$conf["autoFocus"]="";
5286
 
5287
			}#switch end
5288
 
5289
		#如果有設置 $conf["class"]
5290
		if(isset($conf["class"])){
5291
 
5292
			#套用css設定
5293
			$conf["class"]=" class = \"".$conf["class"]."\"";
5294
 
5295
			}#if end
5296
 
5297
		#反之
5298
		else{
5299
			#設置為空字串
5300
			$conf["class"]="";
5301
 
5302
			}#else end
5303
 
5304
		#如果有 $conf["classList"]
5305
		if(isset($conf["classList"])){
5306
 
5307
			#傳接 class 開始
5308
			$conf["class"]=" class = \"";
5309
 
5310
			#針對 $conf["classList"] 的每個元素
5311
			foreach($conf["classList"] as $index => $cssClassName){
5312
 
5313
				#串接 class 名稱
5314
				$conf["class"]=$conf["class"].$cssClassName;
5315
 
5316
				#若後面還有未串接的 class 名稱
5317
				if(isset($conf["classList"][$index+1])){
5318
 
5319
					#串接空格
5320
					$conf["class"]=$conf["class"]." ";
5321
 
5322
					}#if end
5323
 
5324
				}#foreach end
5325
 
5326
			#串接 class 結束
5327
			$conf["class"]=$conf["class"]."\"";
5328
 
5329
			}#if end
5330
 
5331
		#如果 $conf["jsActivitor"] 與 $conf["jsAction"] 皆有設定
5332
		if( isset($conf["jsActivitor"]) && isset($conf["jsAction"]) ){
5333
 
5334
			#則將設定值組合
5335
			$conf["jsCustom"]=" ".$conf["jsActivitor"]."=".$conf["jsAction"]." ";
5336
 
5337
			}#if end
5338
 
5339
		#如果 $conf["jsCustom"] 沒有設定
5340
		if(!isset($conf["jsCustom"])){
5341
 
5342
			#將其設爲空值
5343
			$conf["jsCustom"]="";
5344
 
5345
			}#if end
5346
 
5347
		#過濾 $conf["name"] 避免錯誤
5348
		#函式說明:
5349
		#處理字串避免網頁出錯
5350
		#回傳結果:
5351
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5352
		#$result["function"],當前執行的函數.
5353
		#$result["content"],爲處理好的字串.
5354
		#$result["error"],錯誤訊息陣列.
5355
		#必填參數:
5356
		$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["name"];#爲要處理的字串
5357
		#可省略的參數:
5358
		$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
5359
			#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
5360
			#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
5361
		#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
5362
		$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
5363
		unset($conf["stringProcess::correctCharacter"]);
5364
 
5365
		#如果過濾字串失敗
5366
		if($correctCharacter["status"]=="false"){
5367
 
5368
			#設置執行失敗
5369
			$result["status"]="false";
5370
 
5371
			#設置執行錯誤訊息
5372
			$result["error"]=$correctCharacter;
5373
 
5374
			#回傳結果
5375
			return $result;
5376
 
5377
			}#if end
5378
 
5379
		#置換過濾好了的$conf["name"]
5380
		$conf["name"]=$correctCharacter["content"];
5381
 
5382
		#如果有設定 $conf["placeholder"]
5383
		if(isset($conf["placeholder"])){
5384
 
5385
			#串接 placeholder 的內容
5386
			$conf["placeholder"]=" placeholder=\"".$conf["placeholder"]."\" ";
5387
 
5388
			}#if end
5389
 
5390
		#反之沒有設定 $conf["placeholder"]
5391
		else{
5392
 
5393
			#設為 ""
5394
			$conf["placeholder"]="";
5395
 
5396
			}#else end
5397
 
5398
		#如果 $conf["required"] 為"true"
5399
		if($conf["required"]=="true"){
5400
 
5401
			#設置 "required" 屬性
5402
			$conf["required"]="required=true";
5403
 
5404
			}#if end
5405
 
5406
		#反之
5407
		else{
5408
 
5409
			#設為空值
5410
			$conf["required"]="";
5411
 
5412
			}#else end
5413
 
5414
		#如果有設置id
5415
		if(isset($conf["id"])){
5416
 
5417
			#設置id屬性
5418
			$conf["id"]="id=\"".$conf["id"]."\"";
5419
 
5420
			}#if end
5421
 
5422
		#反之
5423
		else{
5424
 
5425
			#設為空值
5426
			$conf["id"]="";
5427
 
5428
			}#else end
5429
 
5430
		#如果有設置 $conf["dataFormId"]
5431
		if(isset($conf["dataFormId"])){
5432
 
5433
			#設置 data-id 屬性
5434
			$conf["dataFormId"]="data-form-id=\"".$conf["dataFormId"]."\"";
5435
 
5436
			}#if end
5437
 
5438
		#反之設置為空數值	
5439
		else{
5440
 
5441
			$conf["dataFormId"]="";
5442
 
5443
			}#else end	
5444
 
5445
		#如果要 autocomplete
5446
		if($conf["autocomplete"]==="on"){
5447
 
5448
			#設置為 "autocomplete"
5449
			$conf["autocomplete"]="autocomplete";
5450
 
5451
		}#if end
5452
 
5453
		#反之
5454
		else{
5455
			#設置為空字串
5456
			$conf["autocomplete"]="";
5457
 
5458
		}#else end
5459
 
5460
		#放置可以輸入email的表單
5461
		$result["content"]=$result["content"]."<input ".$conf["id"]." type = \"email\" ".$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"]." >";
5462
 
5463
		#如果 $conf["formEnd"] 等於 "true"
5464
		if($conf["formEnd"]=="true"){
5465
 
5466
			#函式說明:
5467
			#表單結束
5468
			#回傳結果:
5469
			#$result,表單結束的語法
5470
			#必填參數:
5471
			#則設定其數值
5472
			$conf["form"]["end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。
5473
			$formEnd=form::end($conf["form"]["end"]);
5474
			unset($conf["form"]["end"]);
5475
 
5476
			#串接表單結束的語法
5477
			$result["content"]=$result["content"].$formEnd["content"];
5478
 
5479
			}#if end
5480
 
5481
		#如果其值爲 true
5482
		if($conf["tdEnd"]=="true"){
5483
 
5484
			#串接欄位結束的語法
5485
			$result["content"]=$result["content"]."</td>";
5486
 
5487
			}#if end
5488
 
5489
		#如果其值爲 true
5490
		if($conf["trEnd"]=="true"){
5491
 
5492
			#串接列結束的語法
5493
			$result["content"]=$result["content"]."</tr>";
5494
 
5495
			}#if end
5496
 
5497
		#如果 $conf["br"] 等於 "true"
5498
		if($conf["br"]=="true"){
5499
 
5500
			#結尾加上<br>
5501
			$result["content"]=$result["content"]."<br>";
5502
 
5503
			}#if end
5504
 
5505
		#如果 $conf["p"] 等於 "true"
5506
		if($conf["p"]=="true"){
5507
 
5508
			#結尾加上<p>
5509
			$result["content"]=$result["content"]."<p>";
5510
 
5511
			}#if end
5512
 
5513
		#執行到這邊代表執行成功
5514
		$result["status"]="true";
5515
 
5516
		#回傳結果
5517
		return $result;
5518
 
5519
		}#function inputEmail end
5520
 
5521
	/*
5522
	#函式說明:
3 liveuser 5523
	#可以輸入文字的區塊
5524
	#回傳結果:
5525
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5526
	#$result["function"],當前執行的函數.
5527
	#$result["error"],錯誤訊息陣列.
5528
	#$result["content"],按鈕語法.
5529
	#必填參數:
5530
	$conf["name"]="";#爲文字輸入框的名稱,供接收端辨識用。
5531
	$conf["readOnly"]="false";#爲是否要爲唯讀,如果爲"true",則爲唯讀。反之則爲"false"。
5532
	#可省略參數:
5533
	#$conf["id"],字串,文字區塊的id,供javaScript呼叫用.
5534
	#$conf["id"]="";
5535
	#$conf["width"]="";#為輸入框的寬度,預設不指定.
5536
	#$conf["cols"]="";#爲文字輸入框的欄位數(寬),預設爲按照瀏覽器設定值。
5537
	#$conf["rows"]="";#爲文字輸入框的列數(高),預設爲按照瀏覽器設定值。
5538
	#$conf["maxInputLength"]="";#爲文字輸入的長度限制,預設無限制。
5539
	#$conf["defaultText"]="";#爲文字輸入框裏面的預設文字內容,預設是空的。
5540
	#$conf["class"]=;#爲要套用的css樣式。如果沒有指定 ,則採用預設的css樣式,"__qbpwcf_inputTextAreaCssStyle",其屬性爲 "width:100%","height:120px","font-size:30px"
5541
	#$conf["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。
5542
	#$conf["jsAction"]="";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
5543
	#$conf["formStart"]="true";#爲是否要以<form>開頭,"true"表示"是",也可以看成表單的開始,預設為"false".
5544
	#$conf["formAction"]="";#表單遞交的目的地,若$conf["formStart"]為"true",則該參數不能省略.
5545
	#$conf["formName"]="";#爲該表單的名稱
5546
	#$conf["formMethod"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
5547
	#$conf["formTarget"]="";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
5548
	#$conf["formEnd"]="true";#爲是否要以<form>結尾,"true"表示"是",也可以看成表單的結束,預設為"false".
5549
	#$conf["comment"],字串,輸入方框上面要放哪些註解文字,亦即用label來呈現,同時指定"for"屬性的數值為當前"input"標籤的id,意即參數"name"的內容.
5550
	#$conf["comment"]="";
5551
	#$conf["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
5552
	#$conf["required"]="true";
5553
	#$conf["placeholder"],字串,當沒有內容時要顯示的內容.
5554
	#$conf["placeholder"]="";
5555
	#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設為"false".
5556
	#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是",也可以看成列裏面的元素開始,預設為"false".
5557
	#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設為"false".
5558
	#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設為"false".
5559
	#$conf["dataFormId"],字串,提供用於識別哪一張表單的data屬性名稱.
5560
	#$conf["dataFormId"]="";
5561
	#參考資料:
5562
	#input=>http://www.w3schools.com/tags/tag_input.asp
5563
	#備註:
5564
	#無.
5565
	*/
5566
	public static function inputTextArea(&$conf){
5567
 
5568
		#初始化要回傳的內容
5569
		$result=array();
5570
 
5571
		#設置當前執行的函數
5572
		$result["function"]=__FUNCTION__;
5573
 
5574
		#初始化content樣式內容
5575
		$result["content"]="";
5576
 
5577
		#如果 $conf 不為陣列
5578
		if(gettype($conf)!="array"){
5579
 
5580
			#設置執行失敗
5581
			$result["status"]="false";
5582
 
5583
			#設置執行錯誤訊息
5584
			$result["error"][]="\$conf變數須為陣列形態";
5585
 
5586
			#如果傳入的參數為 null
5587
			if($conf==null){
5588
 
5589
				#設置執行錯誤訊息
5590
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
5591
 
5592
				}#if end
5593
 
5594
			#回傳結果
5595
			return $result;
5596
 
5597
			}#if end
5598
 
5599
		#檢查參數
5600
		#函式說明:
5601
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
5602
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5603
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
5604
		#$result["function"],當前執行的函式名稱.
5605
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
5606
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
5607
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
5608
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
5609
		#必填參數:
5610
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
5611
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
5612
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
5613
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("name","readOnly");
5614
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
5615
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string","string");
5616
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
5617
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
5618
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
5619
		$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
5620
		#可省略參數:
5621
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
5622
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="true";
5623
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
5624
		$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");
5625
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
5626
		$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");
5627
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
5628
		$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);
5629
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
5630
		unset($conf["variableCheck.checkArguments"]);
5631
 
5632
		#如果檢查失敗
5633
		if($checkResult["status"]=="false"){
5634
 
5635
			#設置執行不正常
5636
			$result["status"]="false";
5637
 
5638
			#程式停止執行
5639
			$result["error"]=$checkResult;
5640
 
5641
			#回傳結果
5642
			return $result;
5643
 
5644
			}#if end
5645
 
5646
		#如果檢查不通過
5647
		if($checkResult["passed"]=="false"){
5648
 
5649
			#設置執行不正常
5650
			$result["status"]="false";
5651
 
5652
			#程式停止執行
5653
			$result["error"]=$checkResult;
5654
 
5655
			#回傳結果
5656
			return $result;
5657
 
5658
			}#if end
5659
 
5660
		#如果其值爲 true
5661
		if($conf["trStart"]=="true"){
5662
 
5663
			#串接列開始
5664
			$result["content"]=$result["content"]."<tr>";
5665
 
5666
			}#if end
5667
 
5668
		#如果其值爲 true
5669
		if($conf["tdStart"]=="true"){
5670
 
5671
			#串接欄開始
5672
			$result["content"]=$result["content"]."<td>";
5673
 
5674
			}#if end
5675
 
5676
		#如果 $conf["formStart"] 等於 "true"
5677
		if($conf["formStart"]=="true"){
5678
 
5679
			#函式說明:
5680
			#表單開始
5681
			#回傳結果:
5682
			#$result,表單開始的語法
5683
			#必填參數:
5684
			$conf["form"]["start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容
5685
			#可省略參數:
5686
 
5687
			#如果 $conf["formName"] 有設置
5688
			if(isset($conf["formName"])){
5689
 
5690
				#過濾 $conf["formName"] 避免錯誤
5691
				#函式說明:
5692
				#處理字串避免網頁出錯
5693
				#回傳結果:
5694
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5695
				#$result["function"],當前執行的函數.
5696
				#$result["content"],爲處理好的字串.
5697
				#$result["error"],錯誤訊息陣列.
5698
				#必填參數:
5699
				$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["formName"];#爲要處理的字串
5700
				#可省略的參數:
5701
				$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
5702
					#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
5703
					#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
5704
				#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
5705
				$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
5706
				unset($conf["stringProcess::correctCharacter"]);
5707
 
5708
				#如果過濾 $conf["formName"] 失敗
5709
				if($correctCharacter["status"]=="false"){
5710
 
5711
					#設置執行失敗
5712
					$result["status"]="false";
5713
 
5714
					#設置執行錯誤訊息
5715
					$result["error"]=$correctCharacter;
5716
 
5717
					#回傳結果
5718
					return $result;
5719
 
5720
					}#if end
5721
 
5722
				#則設定其數值
5723
				$conf["form"]["start"]["name"]=$correctCharacter["content"];#爲該表單的名稱
5724
 
5725
				}#if end
5726
 
5727
			#如果 $conf["formMethod"] 有設置
5728
			if(isset($conf["formMethod"])){
5729
 
5730
				#則設定其數值
5731
				$conf["form"]["start"]["method"]=$conf["formMethod"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
5732
 
5733
				}#if end
5734
 
5735
			#如果 $conf["formTarget"] 有設定
5736
			if(isset($conf["formTarget"])){
5737
 
5738
				#則設定其數值
5739
				$conf["form"]["start"]["target"]=$conf["formTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
5740
 
5741
				}#if end
5742
 
5743
			#則設定其參數數值
5744
			$conf["form"]["start"]["tableStart"]="false";#爲該表單是否要以<table>開始。"true"爲是;
5745
 
5746
			#則設定其數值
5747
			#$conf["form"]["start"]["tableClass"]=$conf["tableClass"];#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
5748
			$formStart=form::start($conf["form"]["start"]);
5749
			unset($conf["form"]["start"]);
5750
 
5751
			#如果表單開始失敗
5752
			if($formStart["status"]=="false"){
5753
 
5754
				#設置執行失敗
5755
				$result["status"]="false";
5756
 
5757
				#設置執行錯誤訊息
5758
				$result["error"]=$formStart;
5759
 
5760
				#回傳結果
5761
				return $result;
5762
 
5763
				}#if end
5764
 
5765
			#串接表單開始的語法
5766
			$result["content"]=$result["content"].$formStart["content"];
5767
 
5768
			}#if end
5769
 
5770
		#如果$conf["readOnly"]沒有設定
5771
		if($conf["readOnly"]=="false"){
5772
 
5773
			#$conf["readOnly"]就爲空值
5774
			$conf["readOnly"]="";
5775
 
5776
			}#if end
5777
 
5778
		#如果$conf["readOnly"]有設定
5779
		if($conf["readOnly"]=="true"){
5780
 
5781
			#就設置 readonly 屬性
5782
			$conf["readOnly"]=" readonly = readonly ";
5783
 
5784
			}#if end
5785
 
5786
		#如果$conf["cols"]沒設定
5787
		if(!isset($conf["cols"])){
5788
 
5789
			#則$conf["cols"]爲空
5790
			$conf["cols"]="";
5791
 
5792
			}#if end
5793
 
5794
		#如果$conf["cols"]有設定
5795
		else{
5796
 
5797
			#則套用設定值
5798
			$conf["cols"]=" cols=".$conf["cols"];
5799
 
5800
			}#else end
5801
 
5802
		#如果$conf["rows"]沒設定
5803
		if(!isset($conf["rows"])){
5804
 
5805
			#則$conf["rows"]爲空
5806
			$conf["rows"]="";
5807
 
5808
			}#if end
5809
 
5810
		#如果$conf["rows"]有設定
5811
		else{
5812
 
5813
			#就套用設定值
5814
			$conf["rows"]=" rows=".$conf["rows"];
5815
 
5816
			}#else end
5817
 
5818
		#如果$conf["width"]沒設定
5819
		if(!isset($conf["width"])){
5820
 
5821
			#則$conf["width"]爲空值
5822
			$conf["width"]="";
5823
 
5824
			}#if end
5825
 
5826
		#如果$conf["width"]有設定
5827
		else{
5828
 
5829
			#則套用寬度的css設定值
5830
			$conf["width"]=" style=\"width:100%;\" ";
5831
 
5832
			}#else end
5833
 
5834
		#如果$conf["maxInputLength"]沒設定
5835
		if(!isset($conf["maxInputLength"])){
5836
 
5837
			#則$conf["maxInputLength"]爲空
5838
			$conf["maxInputLength"]="";
5839
 
5840
			}#if end
5841
 
5842
		#如果$conf["maxInputLength"]有設定
5843
		else{
5844
 
5845
			$conf["maxInputLength"]=" maxlength=".$conf["maxInputLength"];
5846
 
5847
			}#else end
5848
 
5849
		#初始化僅儲存css類別名稱的變數
5850
		$className=$conf["class"];
5851
 
5852
		#採用自定的css樣式
5853
		$conf["class"] = " class=".$conf["class"];
5854
 
5855
		#如果 $conf["jsActivitor"] 與 $conf["jsAction"] 皆有設定
5856
		if( isset($conf["jsActivitor"]) && isset($conf["jsAction"]) ){
5857
 
5858
			#則將設定值組合
5859
			$conf["jsCustom"]=" ".$conf["jsActivitor"]."=".$conf["jsAction"]." ";
5860
 
5861
			}#if end
5862
 
5863
		#如果 $conf["jsCustom"] 沒有設定
5864
		if(!isset($conf["jsCustom"])){
5865
 
5866
			#將其設爲空值
5867
			$conf["jsCustom"]="";
5868
 
5869
			}#if end
5870
 
5871
		#如果有設置 $conf["comment"]
5872
		if(isset($conf["comment"])){
5873
 
5874
			#函式說明:
5875
			#<div>標籤的開始到結束的區段
5876
			#回傳結果:
5877
			#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.
5878
			#$result["functin"],字串,當前函數的名稱.
5879
			#$result["error"],陣列,錯訊訊息.
5880
			#$result["content"],字串,<div>標籤的開始與設定語法.
5881
			#必填參數:
5882
			#$conf["contentArray"],字串陣列,要放入的內容陣列.
5883
			$conf["css.divSection"]["contentArray"]=array($conf["comment"]);
5884
			#可省略參數
5885
			#$conf["class"],字串,div區段要套用的css樣式.
5886
			$conf["css.divSection"]["class"]=$className;
5887
			$spanSection=css::spanSection($conf["css.divSection"]);
5888
			unset($conf["css.divSection"]);
5889
 
5890
			#如果 spanSection 建立失敗
5891
			if($spanSection["status"]=="false"){
5892
 
5893
				#設置執行失敗
5894
				$result["status"]="false";
5895
 
5896
				#設置執行錯誤訊息
5897
				$result["error"]=$spanSection;
5898
 
5899
				#回傳結果
5900
				return $result;
5901
 
5902
				}#if end
5903
 
5904
			#新增label,且套用css樣式.
5905
			$result["content"]=$result["content"]."<label for=\"".$conf["name"]."\" class=\"".$className."\" >".$conf["comment"]."</label>";
5906
 
5907
			}#if end
5908
 
5909
		#如果有設定 $conf["placeholder"]
5910
		if(isset($conf["placeholder"])){
5911
 
5912
			#設定 "placeholder" 屬性
5913
			$conf["placeholder"]=" placeholder=".$conf["placeholder"]." ";
5914
 
5915
			}#if end
5916
 
5917
		#反之
5918
		else{
5919
 
5920
			#設為 ""
5921
			$conf["placeholder"]="";
5922
 
5923
			}#else end
5924
 
5925
		#過濾 $conf["name"] 避免錯誤
5926
		#函式說明:
5927
		#處理字串避免網頁出錯
5928
		#回傳結果:
5929
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5930
		#$result["function"],當前執行的函數.
5931
		#$result["content"],爲處理好的字串.
5932
		#$result["error"],錯誤訊息陣列.
5933
		#必填參數:
5934
		$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["name"];#爲要處理的字串
5935
		#可省略的參數:
5936
		$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
5937
			#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
5938
			#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
5939
		#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
5940
		$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
5941
		unset($conf["stringProcess::correctCharacter"]);
5942
 
5943
		#如果過濾字串失敗
5944
		if($correctCharacter["status"]=="false"){
5945
 
5946
			#設置執行失敗
5947
			$result["status"]="false";
5948
 
5949
			#設置執行錯誤訊息
5950
			$result["error"]=$correctCharacter;
5951
 
5952
			#回傳結果
5953
			return $result;
5954
 
5955
			}#if end
5956
 
5957
		#置換過濾好了的$conf["name"]
5958
		$conf["name"]=$correctCharacter["content"];
5959
 
5960
		#如果 $conf["required"] 為 "true"
5961
		if($conf["required"]=="true"){
5962
 
5963
			#設置 "required" 屬性
5964
			$conf["required"]=" required=true ";
5965
 
5966
			}#if end
5967
 
5968
		#反之
5969
		else{
5970
 
5971
			#設置為空值
5972
			$conf["required"]="";
5973
 
5974
			}#else end
5975
 
5976
		#如果有設置 $conf["id"]
5977
		if(isset($conf["id"])){
5978
 
5979
			#產生id字串
5980
			$conf["id"]="id=\"".$conf["id"]."\"";
5981
 
5982
			}#if end
5983
 
5984
		#反之
5985
		else{
5986
 
5987
			#設為空字串
5988
			$conf["id"]="";
5989
 
5990
			}#else end
5991
 
5992
		#如果有設置 $conf["dataFormId"]
5993
		if(isset($conf["dataFormId"])){
5994
 
5995
			#設置 data-id 屬性
5996
			$conf["dataFormId"]="data-form-id=\"".$conf["dataFormId"]."\"";
5997
 
5998
			}#if end
5999
 
6000
		#反之設置為空數值	
6001
		else{
6002
 
6003
			$conf["dataFormId"]="";
6004
 
6005
			}#else end
6006
 
6007
		#放置可以文字的區塊
6008
		$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>";
6009
 
6010
		#如果 $conf["formEnd"] 等於 "true"
6011
		if($conf["formEnd"]=="true"){
6012
 
6013
			#函式說明:
6014
			#表單結束
6015
			#回傳結果:
6016
			#$result,表單結束的語法
6017
			#必填參數:
6018
			#則設定其數值
6019
			$conf["form"]["end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。
6020
			$formEnd=form::end($conf["form"]["end"]);
6021
			unset($conf["form"]["end"]);
6022
 
6023
			#串接表單結束的語法
6024
			$result["content"]=$result["content"].$formEnd["content"];
6025
 
6026
			}#if end
6027
 
6028
		#如果其值爲 true
6029
		if($conf["tdEnd"]=="true"){
6030
 
6031
			#串接欄結束
6032
			$result["content"]=$result["content"]."</td>";
6033
 
6034
			}#if end
6035
 
6036
		#如果其值爲 true
6037
		if($conf["trEnd"]=="true"){
6038
 
6039
			#串接列結束
6040
			$result["content"]=$result["content"]."</tr>";
6041
 
6042
			}#if end
6043
 
6044
		#設置執行正常
6045
		$result["status"]="true";
6046
 
6047
		#印出表格的設定以及表單的目的、呈現的方式、傳送的方式。
6048
		return $result;
6049
 
6050
		}#function inputTextArea end
6051
 
6052
	/*
6053
	#函式說明:
6054
	#可以輸入密碼的表單
6055
	#回傳結果:
6056
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
6057
	#$result["function"],當前執行的函數.
6058
	#$result["error"],錯誤訊息陣列.
6059
	#$result["content"],按鈕語法.
6060
	#必填參數:
6061
	$conf["name"]="";#爲密碼輸入框的名稱,供接收端進行處理時的獨立名稱,也提供id.
6062
	#可省略參數:
6063
	#$conf["width"]="";#爲密碼輸入框的長度,預設無限制。
6064
	#$conf["maxInputLength"]="";#爲密碼輸入的長度限制,預設無限制。
6065
	#$conf["defaultValue"]="";#預設的密碼,不得為空
6066
	#$conf["class"]="";#爲要套用的css樣式,若省略,則會套用預設的 __qbpwcf_inputPasswordCssStyle 樣式,其屬性爲 "width:100%","font-size:30px","margin-left:auto;","margin-right:auto;"
6067
	#$conf["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。
6068
	#$conf["jsAction"]="";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
6069
	#$conf["autoFocus"],字串,是否為將填寫的指標移到該表單,"true"代表要,預設為"false".
6070
	#$conf["autoFocus"]="true";
6071
	#$conf["autocomplete"],字串,是否依據使用者過往輸入的記錄來提示可能要的輸入內容,"on"為啟用,"off"為停用,預設為"on".
6072
	#$conf["autocomplete"]="off";
6073
	#$conf["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
6074
	#$conf["required"]="true";
6075
	#$conf["comment"],字串,輸入方框上面要放哪些註解文字,亦即用label來呈現,同時指定"for"屬性的數值為當前"input"標籤的id,意即參數"name"的內容.
6076
	#$conf["comment"]="";
6077
	#$conf["placeholder"],字串,當沒有內容時要顯示的內容.
6078
	#$conf["placeholder"]="";
6079
	#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設為"false".
6080
	#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是",也可以看成列裏面的元素開始,預設為"false".
6081
	#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設為"false".
6082
	#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設為"false".
6083
	#$conf["formStart"]="true";#爲是否要以<form>開頭,"true"表示"是",也可以看成表單的開始,預設為"false".
6084
	#$conf["formAction"]="";#表單遞交的目的地,若$conf["formStart"]為"true",則該參數不能省略.
6085
	#$conf["formName"]="";#爲該表單的名稱
6086
	#$conf["formMethod"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
6087
	#$conf["formTarget"]="";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
6088
	#$conf["formEnd"]="true";#爲是否要以<form>結尾,"true"表示"是",也可以看成表單的結束,預設為"false".
6089
	#$conf["dataFormId"],字串,提供用於識別哪一張表單的data屬性名稱.
6090
	#$conf["dataFormId"]="";
6091
	#參考資料:
6092
	#無.
6093
	#備註:
6094
	#無.
6095
	*/
6096
	public static function inputPassword($conf){
6097
 
6098
		#初始化要回傳的內容
6099
		$result=array();
6100
 
6101
		#設置當前執行的函數
6102
		$result["function"]=__FUNCTION__;
6103
 
6104
		#初始化content樣式內容
6105
		$result["content"]="";
6106
 
6107
		#如果 $conf 不為陣列
6108
		if(gettype($conf)!="array"){
6109
 
6110
			#設置執行失敗
6111
			$result["status"]="false";
6112
 
6113
			#設置執行錯誤訊息
6114
			$result["error"][]="\$conf變數須為陣列形態";
6115
 
6116
			#如果傳入的參數為 null
6117
			if($conf==null){
6118
 
6119
				#設置執行錯誤訊息
6120
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
6121
 
6122
				}#if end
6123
 
6124
			#回傳結果
6125
			return $result;
6126
 
6127
			}#if end
6128
 
6129
		#檢查參數
6130
		#函式說明:
6131
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
6132
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
6133
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
6134
		#$result["function"],當前執行的函式名稱.
6135
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
6136
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
6137
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
6138
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
6139
		#必填參數:
6140
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
6141
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
6142
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
6143
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("name");
6144
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
6145
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string");
6146
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
6147
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
6148
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
6149
		$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
6150
		#可省略參數:
6151
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
6152
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="true";
6153
		#$conf["variableCheck.checkArguments"]["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或集合.
6154
		$conf["variableCheck.checkArguments"]["skipableVariableCanNotBeEmpty"]=array("defaultValue");
6155
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
6156
		$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");
6157
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
6158
		$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");
6159
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
6160
		$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);
6161
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
6162
		unset($conf["variableCheck.checkArguments"]);
6163
 
6164
		#如果檢查失敗
6165
		if($checkResult["status"]=="false"){
6166
 
6167
			#設置執行不正常
6168
			$result["status"]="false";
6169
 
6170
			#程式停止執行
6171
			$result["error"]=$checkResult;
6172
 
6173
			#回傳結果
6174
			return $result;
6175
 
6176
			}#if end
6177
 
6178
		#如果檢查不通過
6179
		if($checkResult["passed"]=="false"){
6180
 
6181
			#設置執行不正常
6182
			$result["status"]="false";
6183
 
6184
			#程式停止執行
6185
			$result["error"]=$checkResult;
6186
 
6187
			#回傳結果
6188
			return $result;
6189
 
6190
			}#if end
6191
 
6192
		#如果其值爲 true
6193
		if($conf["trStart"]=="true"){
6194
 
6195
			#串接列開始
6196
			$result["content"]=$result["content"]."<tr>";
6197
 
6198
			}#if end
6199
 
6200
		#如果其值爲 true
6201
		if($conf["tdStart"]=="true"){
6202
 
6203
			#串接欄開始
6204
			$result["content"]=$result["content"]."<td>";
6205
 
6206
			}#if end
6207
 
6208
		#如果 $conf["formStart"] 有設置
6209
		if(isset($conf["formStart"])){
6210
 
6211
			#如果 $conf["formStart"] 等於 "true"
6212
			if($conf["formStart"]=="true"){
6213
 
6214
				#函式說明:
6215
				#表單開始
6216
				#回傳結果:
6217
				#$result,表單開始的語法
6218
				#必填參數:
6219
				$conf["form"]["start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容
6220
				#可省略參數:
6221
 
6222
				#如果 $conf["formName"] 有設置
6223
				if(isset($conf["formName"])){
6224
 
6225
					#過濾 $conf["formName"] 避免錯誤
6226
					#函式說明:
6227
					#處理字串避免網頁出錯
6228
					#回傳結果:
6229
					#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
6230
					#$result["function"],當前執行的函數.
6231
					#$result["content"],爲處理好的字串.
6232
					#$result["error"],錯誤訊息陣列.
6233
					#必填參數:
6234
					$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["formName"];#爲要處理的字串
6235
					#可省略的參數:
6236
					$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
6237
						#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
6238
						#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
6239
					#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
6240
					$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
6241
					unset($conf["stringProcess::correctCharacter"]);
6242
 
6243
					#如果過濾 $conf["formName"] 失敗
6244
					if($correctCharacter["status"]=="false"){
6245
 
6246
						#設置執行失敗
6247
						$result["status"]="false";
6248
 
6249
						#設置執行錯誤訊息
6250
						$result["error"]=$correctCharacter;
6251
 
6252
						#回傳結果
6253
						return $result;
6254
 
6255
						}#if end
6256
 
6257
					#則設定其數值
6258
					$conf["form"]["start"]["name"]=$correctCharacter["content"];#爲該表單的名稱
6259
 
6260
					}#if end
6261
 
6262
				#如果 $conf["formMethod"] 有設置
6263
				if(isset($conf["formMethod"])){
6264
 
6265
					#則設定其數值
6266
					$conf["form"]["start"]["method"]=$conf["formMethod"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
6267
 
6268
					}#if end
6269
 
6270
				#如果 $conf["formTarget"] 有設定
6271
				if(isset($conf["formTarget"])){
6272
 
6273
					#則設定其數值
6274
					$conf["form"]["start"]["target"]=$conf["formTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
6275
 
6276
					}#if end
6277
 
6278
				#則設定其參數數值
6279
				$conf["form"]["start"]["tableStart"]="false";#爲該表單是否要以<table>開始。"true"爲是;
6280
 
6281
				#則設定其數值
6282
				#$conf["form"]["start"]["tableClass"]=$conf["tableClass"];#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
6283
				$formStart=form::start($conf["form"]["start"]);
6284
				unset($conf["form"]["start"]);
6285
 
6286
				#如果表單開始失敗
6287
				if($formStart["status"]=="false"){
6288
 
6289
					#設置執行失敗
6290
					$result["status"]="false";
6291
 
6292
					#設置執行錯誤訊息
6293
					$result["error"]=$formStart;
6294
 
6295
					#回傳結果
6296
					return $result;
6297
 
6298
					}#if end
6299
 
6300
				#串接表單開始的語法
6301
				$result["content"]=$result["content"].$formStart["content"];
6302
 
6303
				}#if end
6304
 
6305
			}#if end
6306
 
6307
		#如果 $conf["comment"] 有設置
6308
		if(isset($conf["comment"])){
6309
 
6310
			#新增註解,且套用css樣式.結尾換行.ok
6311
			$result["content"]=$result["content"]."<label name=\"".$conf["name"]."\" class=\"".$conf["class"]."\">".$conf["comment"]."</label>";
6312
 
6313
			}#if end
6314
 
6315
		#如果$conf["maxInputLength"]沒設定
6316
		if(!isset($conf["maxInputLength"])){
6317
 
6318
			#$conf["maxInputLength"]就爲空
6319
			$conf["maxInputLength"]="";
6320
 
6321
			}#if end
6322
 
6323
		#如果$conf["maxInputLength"]有設定
6324
		else{
6325
 
6326
			#就按照設定值
6327
			$conf["maxInputLength"]=" maxlength=".$conf["maxInputLength"];
6328
 
6329
			}#else end
6330
 
6331
		#如果$conf["width"]沒設定
6332
		if(!isset($conf["width"])){
6333
 
6334
			#則$conf["width"]爲空值
6335
			$conf["width"]="";
6336
 
6337
			}#if end
6338
 
6339
		#如果$conf["width"]有設定
6340
		else{
6341
 
6342
			#則套用寬度的css設定值
6343
			$conf["width"]=" style=\"width:100%;\" ";
6344
 
6345
			}#else end
6346
 
6347
		#如果$conf["defaultValue"]沒設定
6348
		if(!isset($conf["defaultValue"])){
6349
 
6350
			#則$conf["defaultValue"]爲空
6351
			$conf["defaultValue"]="";
6352
 
6353
			}#else end
6354
 
6355
		#反之則設定該屬性
6356
		else{
6357
 
6358
			$conf["defaultValue"]=" value = ".$conf["defaultValue"];
6359
 
6360
			}#else end
6361
 
6362
		#如果$conf["class"]沒設定
6363
		if(!isset($conf["class"])){
6364
 
6365
			#則套用預設的css樣式
6366
			$conf["class"]=" class = __inputPasswordCssStyle ";
6367
 
6368
			}#if end
6369
 
6370
		#如果$conf["class"]有設定
6371
		else{
6372
 
6373
			#則套用樣式
6374
			$conf["class"]=" class = \"".$conf["class"]."\"";
6375
 
6376
			}#else end
6377
 
6378
		#如果 $conf["jsActivitor"] 與 $conf["jsAction"] 皆有設定
6379
		if( isset($conf["jsActivitor"]) && isset($conf["jsAction"]) ){
6380
 
6381
			#則將設定值組合
6382
			$conf["jsCustom"]=" ".$conf["jsActivitor"]."=".$conf["jsAction"]." ";
6383
 
6384
			}#if end
6385
 
6386
		#如果 $conf["jsCustom"] 沒有設定
6387
		if(!isset($conf["jsCustom"])){
6388
 
6389
			#將其設爲空值
6390
			$conf["jsCustom"]="";
6391
 
6392
			}#if end
6393
 
6394
		#如果 $conf["placeholder"] 有設定
6395
		if(isset($conf["placeholder"])){
6396
 
6397
			#設定 "placeholder" 屬性
6398
			$conf["placeholder"]=" placeholder=".$conf["placeholder"]." ";
6399
 
6400
			}#if end
6401
 
6402
		#反之設為 ""
6403
		else{
6404
 
6405
			$conf["placeholder"]="";
6406
 
6407
			}#else end
6408
 
6409
		#如果 $conf["required"] 為"true"
6410
		if($conf["required"]=="true"){
6411
 
6412
			#設置 "required" 屬性
6413
			$conf["required"]="required=true";
6414
 
6415
			}#if end
6416
 
6417
		#反之
6418
		else{
6419
 
6420
			#設為空值
6421
			$conf["required"]="";
6422
 
6423
			}#else end
6424
 
6425
		#過濾 $conf["name"] 避免錯誤
6426
		#函式說明:
6427
		#處理字串避免網頁出錯
6428
		#回傳結果:
6429
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
6430
		#$result["function"],當前執行的函數.
6431
		#$result["content"],爲處理好的字串.
6432
		#$result["error"],錯誤訊息陣列.
6433
		#必填參數:
6434
		$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["name"];#爲要處理的字串
6435
		#可省略的參數:
6436
		$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
6437
			#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
6438
			#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
6439
		#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
6440
		$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
6441
		unset($conf["stringProcess::correctCharacter"]);
6442
 
6443
		#如果過濾字串失敗
6444
		if($correctCharacter["status"]=="false"){
6445
 
6446
			#設置執行失敗
6447
			$result["status"]="false";
6448
 
6449
			#設置執行錯誤訊息
6450
			$result["error"]=$correctCharacter;
6451
 
6452
			#回傳結果
6453
			return $result;
6454
 
6455
			}#if end
6456
 
6457
		#置換過濾好了的$conf["name"]
6458
		$conf["name"]=$correctCharacter["content"];
6459
 
6460
		#如果 $conf["autoFocus"] 為 "true"
6461
		if($conf["autoFocus"]=="true"){
6462
 
6463
			#設置自動選取
6464
			$conf["autoFocus"]=" autofocus='ture' ";
6465
 
6466
			}#if end
6467
 
6468
		#反之
6469
		else{
6470
 
6471
			#設為 ""
6472
			$conf["autoFocus"]="";
6473
 
6474
			}#else end
6475
 
6476
		#如果有設置 $conf["dataFormId"]
6477
		if(isset($conf["dataFormId"])){
6478
 
6479
			#設置 data-id 屬性
6480
			$conf["dataFormId"]="data-form-id=\"".$conf["dataFormId"]."\"";
6481
 
6482
			}#if end
6483
 
6484
		#反之設置為空數值	
6485
		else{
6486
 
6487
			$conf["dataFormId"]="";
6488
 
6489
			}#else end
6490
 
6491
		#放置可以輸入密碼的表單
6492
		$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"].">";
6493
 
6494
		#如果 $conf["formEnd"] 等於 "true"
6495
		if($conf["formEnd"]=="true"){
6496
 
6497
			#函式說明:
6498
			#表單結束
6499
			#回傳結果:
6500
			#$result,表單結束的語法
6501
			#必填參數:
6502
			#則設定其數值
6503
			$conf["form"]["end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。
6504
			$formEnd=form::end($conf["form"]["end"]);
6505
			unset($conf["form"]["end"]);
6506
 
6507
			#串接表單結束的語法
6508
			$result["content"]=$result["content"].$formEnd["content"];
6509
 
6510
			}#if end
6511
 
6512
		#如果其值爲 true
6513
		if($conf["tdEnd"]=="true"){
6514
 
6515
			#串接欄結束
6516
			$result["content"]=$result["content"]."</td>";
6517
 
6518
			}#if end
6519
 
6520
		#如果其值爲 true
6521
		if($conf["trEnd"]=="true"){
6522
 
6523
			#串接列結束
6524
			$result["content"]=$result["content"]."</tr>";
6525
 
6526
			}#if end
6527
 
6528
		#設置執行成功
6529
		$result["status"]="true";
6530
 
6531
		#回傳語法
6532
		return $result;
6533
 
6534
		}#function inputPassword end
6535
 
6536
	/*
6537
	#函式說明:
6538
	#建立下拉式表單
6539
	#回傳結果:
6540
	#$result["status"],執行是否正常,"true"代表正常,"false"代表失敗.
6541
	#$result["error"],錯誤訊息陣列.
6542
	#$result["content"],語法內容.
6543
	#$result["function"],設置當前執行的函式
6544
	#必填參數:
6545
	#$conf["name"],字串,爲該下拉式選單的名稱
6546
	$conf["name"]="";
6547
	#$conf["sendValue"],陣列值,爲每個選項的實際傳送的數值,e.g. $sendValue = array("a","b","c","d","e");
6548
	$conf["sendValue"]=array();
6549
	#可省略參數:
6550
	#$conf["formName"]="";#該表單的名稱
6551
	#$conf["outputValue"]=array();#爲陣列值,爲每個選項的實際顯示的數值, e.g. $outputValue = array("p","o","i","t","e");,如果沒有設定,則其值同$conf["sendValue"]。
6552
	#$conf["viewCount"]="";#為一次要顯示幾個選項,預設爲顯示一個。
6553
	#$conf["defaultValue"]="";#為預設選取那個選項,須爲$conf["sendValue"]其中的一個值。
6554
	#$conf["class"]="";#爲要套用的class樣式,預設為 "__qbpwcf_inputSelect".
6555
	#$conf["readOnly"],字串,內容是否唯獨,預設為"false",不唯獨,"true"為唯獨.
6556
	#$conf["readOnly"]="true";
6557
	#$conf["comment"],字串,輸入方框上面要放哪些註解文字,亦即用label來呈現,同時指定"for"屬性的數值為當前"input"標籤的id,意即參數"name"的內容.
6558
	#$conf["comment"]="";
6559
	#$conf["formAction"]="";#爲該下拉式表單要傳送到的位置
6560
	#$conf["actionTarget"]="_self";#要如何接收網頁的迴應,預設爲_self
6561
	#$conf["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsAction"]參數。
6562
	#$conf["jsAction"]="";#爲該js是要做什麼,可以是"document.forms.formName.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
6563
	#$conf["independentForm"]="false";#是否該下拉式選單就是一個完整的表單,"true"代表是,"false"代表不是,預設為"true"
6564
	#$conf["hiddenVar"],字串陣列,隱藏的變數名稱陣列.
6565
	#$conf["hiddenVar"]=array("");
6566
	#$conf["hiddanVarValue"],字串陣列,隱藏變數的數值內容.
6567
	#$conf["hiddenVarValue"]=array("");
6568
	#$conf["fixedPosition"],字串,該下拉式選單是否要隨着滾軸滾動時固定在畫面上特定的位置,於設為"false",代表不固定,"true"代表要固定.
6569
	#$conf["fixedPosition"]="true";
6570
	#$conf["fixedPosition.fixedTop"],字串,該選單距離畫面頂部的固定距離,預設為0px.
6571
	#$conf["fixedPosition.fixedTop"]="0px";
6572
	#$conf["fixedPosition.fixedLeft"],字串,該選單距離畫面左方的固定距離.預設為0px.
6573
	#$conf["fixedPosition.fixedLeft"]="0px";
6574
	#$conf["fixedPosition.emptySpaceSize"],字串,表單位置要放置多寬的空白,於設為40px.
6575
	#$conf["fixedPosition.emptySpaceSize"]="40px";
6576
	#$conf["tableStartClass"]="__withoutBorder";#表格要採用的css樣式,預設為__withoutBorder,__withoutBorder為沒有框線的樣式,__withBorder為有樣式的表格.
6577
	#$conf["tableStart"]="true";#爲是否要以<table>結尾,"true"表示"是"。也可以看作表格結束。
6578
	#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
6579
	#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
6580
	#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
6581
	#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
6582
	#$conf["tableEnd"]="true";#爲是否要以</table>結尾,"true"表示"是"。也可以看作表格結束。
6583
	#$conf["dataFormId"],字串,提供用於識別哪一張表單的data屬性名稱.
6584
	#$conf["dataFormId"]="";
6585
	#參考資料:
6586
	#無.
6587
	#備註:
6588
	#$_SERVER["PHP_SELF"]為php檔案自己
6589
	#http://stackoverflow.com/questions/833032/submit-is-not-a-function-in-javascript => form的id重複會導致"document.testForm.submit()"的javaScript語法出錯。
6590
	#http://stackoverflow.com/questions/14622124/all-of-commands-for-submit-in-onchange-select-not-work => documents.forms.formName.submit() 才會將正確的表單送出。
6591
	#http://stackoverflow.com/questions/368813/html-form-readonly-select-tag-input => 禁止改變選項,且也不會傳送該名稱表單
6592
	#tableStart & tableEnd 要補上
6593
	*/
6594
	public static function inputSelect(&$conf){
6595
 
6596
		#預設要回傳的數值
6597
		$result=array();
6598
 
6599
		#初始化要回傳的語法
6600
		$result["content"]="";
6601
 
6602
		#設置當前執行的函式
6603
		$result["function"]=__FUNCTION__;
6604
 
6605
		#如果 $conf 不為陣列
6606
		if(gettype($conf)!="array"){
6607
 
6608
			#設置執行失敗
6609
			$result["status"]="false";
6610
 
6611
			#設置執行錯誤訊息
6612
			$result["error"][]="\$conf變數須為陣列形態";
6613
 
6614
			#如果傳入的參數為 null
6615
			if($conf==null){
6616
 
6617
				#設置執行錯誤訊息
6618
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
6619
 
6620
				}#if end
6621
 
6622
			#回傳結果
6623
			return $result;
6624
 
6625
			}#if end
6626
 
6627
		#檢查參數
6628
		#函式說明:
6629
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
6630
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
6631
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
6632
		#$result["function"],當前執行的函式名稱.
6633
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
6634
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
6635
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
6636
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
6637
		#必填參數:
6638
		#$conf["form.checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
6639
		$conf["form.checkArguments"]["varInput"]=&$conf;
6640
		#$conf["form.checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
6641
		$conf["form.checkArguments"]["mustBeFilledVariableName"][]="name";
6642
		$conf["form.checkArguments"]["mustBeFilledVariableName"][]="sendValue";
6643
		#$conf["form.checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
6644
		$conf["form.checkArguments"]["mustBeFilledVariableType"][]="string";
6645
		$conf["form.checkArguments"]["mustBeFilledVariableType"][]="array";
6646
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
6647
		$conf["form.checkArguments"]["referenceVarKey"]="form.checkArguments";
6648
		#可省略參數:
6649
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
6650
		#$conf["canBeEmptyString"]="false";
6651
		#$conf["form.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
6652
		$conf["form.checkArguments"]["skipableVariableName"][]="tableStart";
6653
		$conf["form.checkArguments"]["skipableVariableName"][]="formAction";
6654
		$conf["form.checkArguments"]["skipableVariableName"][]="formName";
6655
		$conf["form.checkArguments"]["skipableVariableName"][]="hiddenVar";
6656
		$conf["form.checkArguments"]["skipableVariableName"][]="hiddenVarValue";
6657
		$conf["form.checkArguments"]["skipableVariableName"][]="fixedPosition";
6658
		$conf["form.checkArguments"]["skipableVariableName"][]="fixedPosition.top";
6659
		$conf["form.checkArguments"]["skipableVariableName"][]="fixedPosition.left";
6660
		$conf["form.checkArguments"]["skipableVariableName"][]="trStart";
6661
		$conf["form.checkArguments"]["skipableVariableName"][]="tdStart";
6662
		$conf["form.checkArguments"]["skipableVariableName"][]="defaultValue";
6663
		$conf["form.checkArguments"]["skipableVariableName"][]="viewCount";
6664
		$conf["form.checkArguments"]["skipableVariableName"][]="outputValue";
6665
		$conf["form.checkArguments"]["skipableVariableName"][]="jsActivitor";
6666
		$conf["form.checkArguments"]["skipableVariableName"][]="jsAction";
6667
		$conf["form.checkArguments"]["skipableVariableName"][]="jsCustom";
6668
		$conf["form.checkArguments"]["skipableVariableName"][]="readOnly";
6669
		$conf["form.checkArguments"]["skipableVariableName"][]="comment";
6670
		$conf["form.checkArguments"]["skipableVariableName"][]="class";
6671
		$conf["form.checkArguments"]["skipableVariableName"][]="tdEnd";
6672
		$conf["form.checkArguments"]["skipableVariableName"][]="trtdEnd";
6673
		$conf["form.checkArguments"]["skipableVariableName"][]="formAction";
6674
		$conf["form.checkArguments"]["skipableVariableName"][]="independentForm";
6675
		$conf["form.checkArguments"]["skipableVariableName"][]="tableEnd";
6676
		$conf["form.checkArguments"]["skipableVariableName"][]="actionTarget";
6677
		$conf["form.checkArguments"]["skipableVariableName"][]="dataFormId";
6678
		#$conf["form.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
6679
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6680
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6681
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6682
		$conf["form.checkArguments"]["skipableVariableType"][]="array";
6683
		$conf["form.checkArguments"]["skipableVariableType"][]="array";
6684
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6685
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6686
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6687
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6688
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6689
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6690
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6691
		$conf["form.checkArguments"]["skipableVariableType"][]="array";
6692
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6693
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6694
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6695
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6696
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6697
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6698
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6699
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6700
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6701
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6702
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6703
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6704
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6705
		#$conf["form.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
6706
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6707
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6708
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="  ";
6709
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6710
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6711
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6712
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6713
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6714
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6715
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6716
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=" ";
6717
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="1";
6718
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="\$conf[\"sendValue\"]";
6719
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6720
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6721
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=" ";
6722
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=" ";
6723
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=" ";
6724
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="__qbpwcf_inputSelect";
6725
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6726
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6727
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6728
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="true";
6729
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6730
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="_self";
6731
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6732
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
6733
		$conf["form.checkArguments"]["canBeEmptyString"]="false";
6734
		$checkResult=variableCheck::checkArguments($conf["form.checkArguments"]);
6735
		unset($conf["form.checkArguments"]);
6736
 
6737
		#如果$checkResult["status"] 等於 "false"
6738
		#意即如果檢查出錯
6739
		if($checkResult["status"]=="false"){
6740
 
6741
			#設置錯誤識別
6742
			$result["status"]="false";
6743
 
6744
			#設置錯誤訊息
6745
			$result["error"]=$checkResult;
6746
 
6747
			#回傳結果
6748
			return $result;
6749
 
6750
			}#if end
6751
 
6752
		#如果$checkResult["passed"] 等於 "false"
6753
		#意即如果檢查出錯
6754
		if($checkResult["passed"]=="false"){
6755
 
6756
			#設置錯誤識別
6757
			$result["status"]="false";
6758
 
6759
			#設置錯誤訊息
6760
			$result["error"]=$checkResult;
6761
 
6762
			#回傳結果
6763
			return $result;
6764
 
6765
			}#if end
6766
 
6767
		#如果 $conf["tableStart"] 有設置
6768
		if(isset($conf["tableStart"])){
6769
 
6770
			#如果 $conf["tableStart"] 等於 "true"
6771
			if($conf["tableStart"]=="true"){
6772
 
6773
				#函式說明:
6774
				#表格開始,可以設定表格的厚度和位置
6775
				#回傳結果:
6776
				#$result,表格開始的語法
6777
				#必填寫的參數:
6778
				$conf["table.start"]["class"]=$conf["tableStartClass"];#爲表格的css樣式,若為"",則代表不套用css樣式;若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
6779
				$tableStart=table::start($conf["table.start"]);
6780
				unset($conf["table.start"]);
6781
 
6782
				#如果表格開始失敗
6783
				if($tableStart["status"]=="false"){
6784
 
6785
					#設置錯誤識別
6786
					$result["status"]="false";
6787
 
6788
					#設置錯誤訊息
6789
					$result["error"]=$tableStart;
6790
 
6791
					#回傳結果
6792
					return $result;
6793
 
6794
					}#if end
6795
 
6796
				#串接表格開始的字串
6797
				$result["content"]=$result["content"].$tableStart["content"];
6798
 
6799
				}#if end
6800
 
6801
			}#if end
6802
 
6803
		#如果 $conf["formAction"] 有設定
6804
		if(isset($conf["formAction"])){
6805
 
6806
			#如果 $conf["actionTarget"] 有設定
6807
			if(isset($conf["actionTarget"])){
6808
 
6809
				#指派設定值
6810
				$conf["form.start"]["target"]=$conf["actionTarget"];
6811
 
6812
				}#if end
6813
 
6814
			#如果 $conf["formName"] 沒有設置
6815
			if(!isset($conf["formName"])){
6816
 
6817
				#預設爲空數值
6818
				$conf["formName"]="  ";
6819
 
6820
				}#if end
6821
 
6822
			#反之 $conf["formName"] 有設置
6823
			else{
6824
 
6825
				#過濾 $conf["formName"] 避免錯誤
6826
				#函式說明:
6827
				#處理字串避免網頁出錯
6828
				#回傳結果:
6829
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
6830
				#$result["function"],當前執行的函數.
6831
				#$result["content"],爲處理好的字串.
6832
				#$result["error"],錯誤訊息陣列.
6833
				#必填參數:
6834
				$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["formName"];#爲要處理的字串
6835
				#可省略的參數:
6836
				$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
6837
					#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
6838
					#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
6839
				#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
6840
				$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
6841
				unset($conf["stringProcess::correctCharacter"]);
6842
 
6843
				#如果過濾 $conf["formName"] 失敗
6844
				if($correctCharacter["status"]=="false"){
6845
 
6846
					#設置執行失敗
6847
					$result["status"]="false";
6848
 
6849
					#設置執行錯誤訊息
6850
					$result["error"]=$correctCharacter;
6851
 
6852
					#回傳結果
6853
					return $result;
6854
 
6855
					}#if end
6856
 
6857
				#則設定其數值
6858
				$conf["formName"]=$correctCharacter["content"];#爲該表單的名稱
6859
 
6860
				}#if end
6861
 
6862
			#函式說明:
6863
			#表單開始
6864
			#回傳結果:
6865
			#$result,表單開始的語法
6866
			#必填參數:
6867
			$conf["form.start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容
6868
			#可省略參數:
6869
			$conf["form.start"]["name"]=$conf["formName"];#爲該表單的名稱
6870
			#$conf["method"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
6871
			#$conf["target"]="";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
6872
			#$conf["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是;
6873
			#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100%
6874
			$formStart=form::start($conf["form.start"]);
6875
			unset($conf["form.start"]);
6876
 
6877
			#如果表單開始失敗
6878
			if($formStart["status"]=="false"){
6879
 
6880
				#設置錯誤識別
6881
				$result["status"]="false";
6882
 
6883
				#設置錯誤訊息
6884
				$result["error"]=$formStart;
6885
 
6886
				#回傳結果
6887
				return $result;
6888
 
6889
				}#if end
6890
 
6891
			#串接表單開始
6892
			$result["content"]=$result["content"].$formStart["content"];
6893
 
6894
			}#if end
6895
 
6896
		#如果 $conf["hiddenVar"]與$conf["hiddenVarValue"]皆有設置
6897
		if(isset($conf["hiddenVar"]) && isset($conf["hiddenVarValue"])){
6898
 
6899
			#且陣列元素數目相同
6900
			if(count($conf["hiddenVar"])==count($conf["hiddenVarValue"])){
6901
 
6902
				#建立隱藏的表單
6903
				#傳送多個隱藏表單的資訊
6904
				#回傳的數值:
6905
				#$result,語法
6906
				#$result["sendedArrayName"],
6907
				#$result["sendedArrayValue"],
6908
				#$result["sendedArrayCount"],
6909
				#必填參數:
6910
				$conf["form"]["inputMutiHidden"]["nameArray"]=$conf["hiddenVar"];#欲傳送的隱藏陣列變數名稱
6911
				$conf["form"]["inputMutiHidden"]["valueArray"]=$conf["hiddenVarValue"];#欲傳送的隱藏陣列變數數值
6912
				$hiddenVar=form::inputMultiHidden($conf["form"]["inputMutiHidden"]);
6913
				unset($conf["form"]);
6914
 
6915
				#如果隱藏的表單變數設置失敗
6916
				if($hiddenVar["status"]=="false"){
6917
 
6918
					#設置錯誤識別
6919
					$result["status"]="false";
6920
 
6921
					#設置錯誤訊息
6922
					$result["error"]=$hiddenVar;
6923
 
6924
					#回傳結果
6925
					return $result;
6926
 
6927
					}#if end
6928
 
6929
				#接上語法
6930
				$result["content"]=$result["content"].$hiddenVar["content"];
6931
 
6932
				}#if end
6933
 
6934
			}#if end
6935
 
6936
		#如果有設定 $conf["fixedPosition"]
6937
		if(isset($conf["fixedPosition"])){
6938
 
6939
			#如果 $conf["fixedPosition"] 等於 "true"
6940
			if($conf["fixedPosition"]=="true"){
6941
 
6942
				#如果 $conf["fixedPosition.fixedTop"] 沒有設置
6943
				if(!isset($conf["fixedPosition.fixedTop"])){
6944
 
6945
					#於設為0px
6946
					$conf["fixedPosition.fixedTop"]="0px";
6947
 
6948
					}#if end
6949
 
6950
				#如果 $conf["fixedPosition.fixedLeft"] 沒有設置
6951
				if(!isset($conf["fixedPosition.fixedLeft"])){
6952
 
6953
					#預設為0px
6954
					$conf["fixedPosition.fixedLeft"]="0px";
6955
 
6956
					}#if end
6957
 
6958
				#如果 $conf["fixedPosition.emptySpaceSize"] 沒有設置
6959
				if(!isset($conf["fixedPosition.emptySpaceSize"])){
6960
 
6961
					#預設為40px
6962
					$conf["fixedPosition.emptySpaceSize"]="40px";
6963
 
6964
					}#if end
6965
 
6966
				#建立按鈕的預設css樣式
6967
				#函式說明:
6968
				#創建 css 樣式
6969
				#必填參數:
6970
				$conf_createCssStyle["cssStyleName"]="__simpleButtonLinkDefaultButtonFixedPositionCssStyle";#為該 css 樣式的名稱,不能以數字開頭。
6971
				$conf_createCssStyle["attributes"]=array("width","height","font-size","text-align","position","top","left");#為屬性名稱,須為陣列值
6972
				$conf_createCssStyle["content"]=array("100%",(50*$conf["viewCount"])."px","30","center","fixed",$conf["fixedPosition.fixedTop"],$conf["fixedPosition.fixedLeft"]);#為屬性值,須為陣列值
6973
				$css=css::createCssStyle($conf_createCssStyle);
6974
				unset($conf_createCssStyle);
6975
 
6976
				#如果建立css樣式失敗
6977
				if($css["status"]=="false"){
6978
 
6979
					#設置錯誤識別
6980
					$result["status"]="false";
6981
 
6982
					#設置錯誤訊息
6983
					$result["error"]=$css;
6984
 
6985
					#回傳結果
6986
					return $result;
6987
 
6988
					}#if end
6989
 
6990
				#串接css樣式
6991
				$result["content"]=$result["content"].$css["content"];
6992
 
6993
				#函式說明:
6994
				#創建 css 樣式
6995
				#回傳結果:
6996
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
6997
				#$result["css"],css設定內容
6998
				#$result["function"],當前執行的函數
6999
				#$result["error"],函式錯誤訊息,若爲""則表示沒有錯誤
7000
				#必填參數:
7001
				$conf["css.createCssStyle"]["cssStyleName"]="emptyStyle";#為該 css 樣式的名稱,不能以數字開頭。
7002
				$conf["css.createCssStyle"]["attributes"]=array("font-size");#為屬性名稱,須為陣列值
7003
				$conf["css.createCssStyle"]["content"]=array("40px");#為屬性值,須為陣列值
7004
				$css=css::createCssStyle($conf["css.createCssStyle"]);
7005
				unset($conf["css.createCssStyle"]);
7006
 
7007
				#如果建立css樣式失敗
7008
				if($css["status"]=="false"){
7009
 
7010
					#設置錯誤識別
7011
					$result["status"]="false";
7012
 
7013
					#設置錯誤訊息
7014
					$result["error"]=$css;
7015
 
7016
					#回傳結果
7017
					return $result;
7018
 
7019
					}#if end
7020
 
7021
				#串接css樣式
7022
				$result["content"]=$result["content"].$css["content"];
7023
 
7024
				}#if end
7025
 
7026
			}#if end
7027
 
7028
		#如果 $conf["trStart"] 存在
7029
		if(isset($conf["trStart"])){
7030
 
7031
			#如果其值爲 true
7032
			if($conf["trStart"]=="true"){
7033
 
7034
				#串接列開始
7035
				$result["content"]=$result["content"]."<tr>";
7036
 
7037
				}#if end
7038
 
7039
			}#if end
7040
 
7041
		#如果 $conf["tdStart"] 存在
7042
		if(isset($conf["tdStart"])){
7043
 
7044
			#如果其值爲 true
7045
			if($conf["tdStart"]=="true"){
7046
 
7047
				#串接欄開始
7048
				$result["content"]=$result["content"]."<td>";
7049
 
7050
				}#if end
7051
 
7052
			}#if end
7053
 
7054
		#如果 $conf["viewCount"] 有設定
7055
		if(isset($conf["viewCount"])){
7056
 
7057
			#就按照設定值
7058
			$conf["viewCount"]=" size = ".$conf["viewCount"]." ";
7059
 
7060
			}#if end
7061
 
7062
		#反之
7063
		else{
7064
 
7065
			#設為""
7066
			$conf["viewCount"]="";
7067
 
7068
			}#else end
7069
 
7070
		#如果有設定 $conf["fixedPosition"]
7071
		if(isset($conf["fixedPosition"])){
7072
 
7073
			#如果 $conf["fixedPosition"] 等於 "true"
7074
			if($conf["fixedPosition"]=="true"){
7075
 
7076
				#用固定位置的樣式
7077
				$conf["class"]="__simpleButtonLinkDefaultButtonFixedPositionCssStyle";
7078
 
7079
				}#if end
7080
 
7081
			}#if end
7082
 
7083
		#設定要套用的css類別樣式
7084
		$conf["class"] = " class='".$conf["class"]."' ";
7085
 
7086
		#如果 $conf["jsActivitor"] 與 $conf["jsAction"] 皆有設定
7087
		if( isset($conf["jsActivitor"]) && isset($conf["jsAction"]) ){
7088
 
7089
			#處理jsAction裏面不能有空格
7090
			#函式說明:
7091
			#處理字串避免網頁出錯
7092
			#回傳結果:
7093
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
7094
			#$result["function"],當前執行的函數.
7095
			#$result["content"],爲處理好的字串.
7096
			#$result["error"],錯誤訊息陣列.
7097
			#$result["argu"],使用的參數. 
7098
			#必填參數:
7099
			$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["jsAction"];#爲要處理的字串
7100
			#可省略的參數:
7101
			$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array(" ");#爲被選擇要處理的字串/字元,須爲陣列值。
7102
				#若不設定則預設爲要將這些字串作替換 ("<",">","=","//","'","$","%","&","|","/*","*","#","\"").
7103
				#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
7104
			#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
7105
			$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
7106
			unset($conf["stringProcess::correctCharacter"]);
7107
 
7108
			#如果處理失敗
7109
			if($correctCharacter["status"]==="false"){
7110
 
7111
				#設置執行失敗
7112
				$result["status"]="false";
7113
 
7114
				#設置執行錯誤
7115
				$result["error"]=$correctCharacter;
7116
 
7117
				#回傳結果
7118
				return $result;
7119
 
7120
				}#if end	
7121
 
7122
			#get new jsAction
7123
			$conf["jsAction"]=$correctCharacter["content"];#爲該表單的名稱
7124
 
7125
			#則將設定值組合
7126
			$conf["jsCustom"]=" ".$conf["jsActivitor"]."=".$conf["jsAction"]." ";
7127
 
7128
			}#if end
7129
 
7130
		#如果 $conf["readOnly"] 為 "true"
7131
		if($conf["readOnly"]=="true"){
7132
 
7133
			#設置為 " readonly "
7134
			$conf["readOnly"]=" disabled ";
7135
 
7136
			}#if end
7137
 
7138
		#反之
7139
		else{
7140
 
7141
			#設置為 ""
7142
			$conf["readOnly"]="";
7143
 
7144
			}#else end
7145
 
7146
		#過濾 $conf["name"] 避免錯誤
7147
		#函式說明:
7148
		#處理字串避免網頁出錯
7149
		#回傳結果:
7150
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
7151
		#$result["function"],當前執行的函數.
7152
		#$result["content"],爲處理好的字串.
7153
		#$result["error"],錯誤訊息陣列.
7154
		#必填參數:
7155
		$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["name"];#爲要處理的字串
7156
		#可省略的參數:
7157
		$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
7158
			#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
7159
			#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
7160
		#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
7161
		$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
7162
		unset($conf["stringProcess::correctCharacter"]);
7163
 
7164
		#如果過濾字串失敗
7165
		if($correctCharacter["status"]=="false"){
7166
 
7167
			#設置執行失敗
7168
			$result["status"]="false";
7169
 
7170
			#設置執行錯誤訊息
7171
			$result["error"]=$correctCharacter;
7172
 
7173
			#回傳結果
7174
			return $result;
7175
 
7176
			}#if end
7177
 
7178
		#置換過濾好了的$conf["name"]
7179
		$conf["name"]=$correctCharacter["content"];
7180
 
7181
		#建立註解文字用的預設css樣式
7182
		#函式說明:
7183
		#創建 css 樣式
7184
		#必填參數:
7185
		$conf_createCssStyle["cssStyleName"]="__commentDefaultCssStyle";#為該 css 樣式的名稱,不能以數字開頭。
7186
		$conf_createCssStyle["attributes"]=array("font-size","text-align");#為屬性名稱,須為陣列值
7187
		$conf_createCssStyle["content"]=array("30","center");#為屬性值,須為陣列值
7188
		$css=css::createCssStyle($conf_createCssStyle);
7189
		unset($conf_createCssStyle);
7190
 
7191
		#如果建立css樣式失敗
7192
		if($css["status"]=="false"){
7193
 
7194
			#設置錯誤識別
7195
			$result["status"]="false";
7196
 
7197
			#設置錯誤訊息
7198
			$result["error"]=$css;
7199
 
7200
			#回傳結果
7201
			return $result;
7202
 
7203
			}#if end
7204
 
7205
		#串接css樣式
7206
		$result["content"]=$result["content"].$css["content"];
7207
 
7208
		#如果有設置 $conf["dataFormId"]
7209
		if(isset($conf["dataFormId"])){
7210
 
7211
			#設置 data-id 屬性
7212
			$conf["dataFormId"]="data-form-id=\"".$conf["dataFormId"]."\"";
7213
 
7214
			}#if end
7215
 
7216
		#反之設置為空數值	
7217
		else{
7218
 
7219
			$conf["dataFormId"]="";
7220
 
7221
			}#else end
7222
 
7223
		#下拉式表單的名稱
7224
		$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"].">";
7225
 
7226
		#將有幾個選項的數目放進 $count
7227
		$count=count($conf["sendValue"]);
7228
 
7229
		#n個選項跑n次
7230
		for($i=0;$i<$count;$i++){
7231
 
7232
			#如果選項的內容等於預設的數值,
7233
			if($conf["defaultValue"]==$conf["sendValue"][$i]){
7234
 
7235
				#增加可用的選項,且設為預設選項。
7236
				$result["content"]=$result["content"]."<option value = \"".$conf["sendValue"][$i]."\" selected='selected'>".$conf["outputValue"][$i]."</option>";
7237
 
7238
				}#if end
7239
 
7240
			#反之則照常處理
7241
			else{
7242
 
7243
				#謹增加可用的選項
7244
				$result["content"]=$result["content"]."<option value = \"".$conf["sendValue"][$i]."\">".$conf["outputValue"][$i]."</option>";
7245
 
7246
				}#else end
7247
 
7248
			}#回圈結束
7249
 
7250
		#選項結束
7251
		$result["content"]=$result["content"]."</select>";
7252
 
7253
		#如果有設定 $conf["fixedPosition"]
7254
		if(isset($conf["fixedPosition"])){
7255
 
7256
			#如果 $conf["fixedPosition"] 等於 "true"
7257
			if($conf["fixedPosition"]=="true"){
7258
 
7259
				#空白區塊
7260
				#函式說明:
7261
				#<span>區塊:
7262
				#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.
7263
				#$result["functin"],字串,當前函數的名稱.
7264
				#$result["error"],陣列,錯訊訊息.
7265
				#$result["content"],字串,<div>標籤的開始與設定語法.
7266
				#必填參數:
7267
				#$conf["css.spanSection"]["contentArray"],字串陣列,要放入的內容陣列.
7268
				$conf["css.spanSection"]["contentArray"]=array("&nbsp;");
7269
				#可省略參數
7270
				#$conf["css.spanSection"]["class"],字串,div區段要套用的css樣式.
7271
				$conf["css.spanSection"]["class"]="emptyStyle";
7272
				$spanSection=css::spanSection($conf["css.spanSection"]);
7273
				unset($conf["css.spanSection"]);
7274
 
7275
				#如果 spanSection 建立失敗
7276
				if($spanSection["status"]==="false"){
7277
 
7278
					#設置錯誤識別
7279
					$result["status"]="false";
7280
 
7281
					#設置錯誤訊息
7282
					$result["error"]=$spanSection;
7283
 
7284
					#回傳結果
7285
					return $result;
7286
 
7287
					}#if end
7288
 
7289
				#串接 spanSection
7290
				$result["content"]=$result["content"].$spanSection["content"];
7291
 
7292
				}#if end
7293
 
7294
			}#if end
7295
 
7296
		#如果 $conf["tdEnd"] 存在
7297
		if(isset($conf["tdEnd"])){
7298
 
7299
			#如果其值爲 true
7300
			if($conf["tdEnd"]==="true"){
7301
 
7302
				#欄結束
7303
				$result["content"]=$result["content"]."</td>";
7304
 
7305
				}#if end
7306
 
7307
			}#if end
7308
 
7309
		#如果 $conf["trtdEnd"] 存在
7310
		if(isset($conf["trEnd"])){
7311
 
7312
			#如果其值爲 true
7313
			if($conf["trEnd"]==="true"){
7314
 
7315
				#列結束
7316
				$result["content"]=$result["content"]."</tr>";
7317
 
7318
				}#if end
7319
 
7320
			}#if end
7321
 
7322
		#如果 $conf["formAction"] 有設定
7323
		if(isset($conf["formAction"])){
7324
 
7325
			#如果 $conf["independentForm"] 等於 "true"
7326
			if($conf["independentForm"]=="true"){
7327
 
7328
				#函式說明:
7329
				#表單結束
7330
				#回傳結果:
7331
				#$result,表單結束的語法
7332
				#必填參數:
7333
				$conf["form.end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。
7334
				$formEnd=form::end($conf["form.end"]);
7335
				unset($conf["form.end"]);
7336
 
7337
				#如果表單結束失敗
7338
				if($formEnd["status"]==="false"){
7339
 
7340
					#設置錯誤識別
7341
					$result["status"]="false";
7342
 
7343
					#設置錯誤訊息
7344
					$result["error"]=$formEnd;
7345
 
7346
					#回傳結果
7347
					return $result;
7348
 
7349
					}#if end
7350
 
7351
				#串接表單結束
7352
				$result["content"]=$result["content"].$formEnd["content"];
7353
 
7354
				}#if end
7355
 
7356
			}#if end
7357
 
7358
		#如果 $conf["tableEnd"] 有設置
7359
		if(isset($conf["tableEnd"])){
7360
 
7361
			#如果 $conf["tableEnd"] 等於 "true"
7362
			if($conf["tableEnd"]=="true"){
7363
 
7364
				#函式說明:
7365
				#表格結束
7366
				#回傳結果:
7367
				#表格結束的語法
7368
				$result["content"]=$result["content"].table::end();
7369
 
7370
				}#if end
7371
 
7372
			}#if end
7373
 
7374
		#設置執行正常
7375
		$result["status"]="true";
7376
 
7377
		#印出表格的設定以及表單的目的、呈現的方式、傳送的方式。
7378
		return $result;
7379
 
7380
		}#function inputSelect end
7381
 
7382
	/*
7383
	#函式說明:
7384
	#建立下拉式表單,選項會用全螢幕的div區塊呈現.
7385
	#回傳結果:
7386
	#$result["status"],執行是否正常,"true"代表正常,"false"代表失敗.
7387
	#$result["error"],錯誤訊息陣列.
7388
	#$result["content"],語法內容.
7389
	#$result["function"],設置當前執行的函式
7390
	#必填參數:
7391
	#$conf["name"],字串,爲該下拉式選單的名稱
7392
	$conf["name"]="";
7393
	#$conf["sendValue"],陣列值,爲每個選項的實際傳送的數值,e.g. $sendValue = array("a","b","c","d","e");
7394
	$conf["sendValue"]=array();
7395
	#可省略參數:
7396
	#$conf["formName"]="";#該表單的名稱,不能跟 "name" 一樣,會造成關閉選單後,選單也跟着消失的問題.
7397
	#$conf["outputValue"]=array();#爲陣列值,爲每個選項的實際顯示的數值, e.g. $outputValue = array("p","o","i","t","e");,如果沒有設定,則其值同$conf["sendValue"]。
7398
	#$conf["viewCount"]="";#為一次要顯示幾個選項,預設爲顯示一個。
7399
	#$conf["defaultValue"]="";#為預設選取那個選項,須爲$conf["sendValue"]其中的一個值。
7400
	#$conf["class"]="";#爲要套用的class樣式,預設為 "__qbpwcf_inputSelect".
7401
	#$conf["readOnly"],字串,內容是否唯獨,預設為"false",不唯獨,"true"為唯獨.
7402
	#$conf["readOnly"]="true";
7403
	#$conf["comment"],字串,輸入方框上面要放哪些註解文字,亦即用label來呈現,同時指定"for"屬性的數值為當前"input"標籤的id,意即參數"name"的內容.
7404
	#$conf["comment"]="";
7405
	#$conf["formAction"]="";#爲該下拉式表單要傳送到的位置
7406
	#$conf["actionTarget"]="_self";#要如何接收網頁的迴應,預設爲_self
7407
	#$conf["independentForm"]="false";#是否該下拉式選單就是一個完整的表單,"true"代表是,"false"代表不是,預設為"true"
7408
	#$conf["hiddenVar"],字串陣列,隱藏的變數名稱陣列.
7409
	#$conf["hiddenVar"]=array("");
7410
	#$conf["hiddanVarValue"],字串陣列,隱藏變數的數值內容.
7411
	#$conf["hiddenVarValue"]=array("");
7412
	#$conf["fixedPosition"],字串,該下拉式選單是否要隨着滾軸滾動時固定在畫面上特定的位置,於設為"false",代表不固定,"true"代表要固定.
7413
	#$conf["fixedPosition"]="true";
7414
	#$conf["fixedPosition.fixedTop"],字串,該選單距離畫面頂部的固定距離,預設為0px.
7415
	#$conf["fixedPosition.fixedTop"]="0px";
7416
	#$conf["fixedPosition.fixedLeft"],字串,該選單距離畫面左方的固定距離.預設為0px.
7417
	#$conf["fixedPosition.fixedLeft"]="0px";
7418
	#$conf["fixedPosition.emptySpaceSize"],字串,表單位置要放置多寬的空白,於設為40px.
7419
	#$conf["fixedPosition.emptySpaceSize"]="40px";
7420
	#$conf["tableStartClass"]="__withoutBorder";#表格要採用的css樣式,預設為__withoutBorder,__withoutBorder為沒有框線的樣式,__withBorder為有樣式的表格.
7421
	#$conf["tableStart"]="true";#爲是否要以<table>結尾,"true"表示"是"。也可以看作表格結束。
7422
	#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
7423
	#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
7424
	#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
7425
	#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
7426
	#$conf["tableEnd"]="true";#爲是否要以</table>結尾,"true"表示"是"。也可以看作表格結束。
7427
	#$conf["closeIcon"],字串,關閉滾軸選單的按鈕圖示,預設為"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpvc2I9Imh0dHA6Ly93d3cub3BlbnN3YXRjaGJvb2sub3JnL3VyaS8yMDA5L29zYiIKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgd2lkdGg9IjEwNS43ODE3Mm1tIgogICBoZWlnaHQ9IjEwNS4zNDM0NG1tIgogICB2aWV3Qm94PSIwIDAgMTA1Ljc4MTcyIDEwNS4zNDM0NCIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnOCIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45MitkZXZlbCB1bmtub3duIgogICBzb2RpcG9kaTpkb2NuYW1lPSJjbG9zZUljb24uc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzMiI+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzMTUiCiAgICAgICBvc2I6cGFpbnQ9InNvbGlkIj4KICAgICAgPHN0b3AKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzAwMDAwMDtzdG9wLW9wYWNpdHk6MTsiCiAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgaWQ9InN0b3A0MzEzIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0MzkxIgogICAgICAgeD0iLTAuMDY4OTc3MTAzIgogICAgICAgd2lkdGg9IjEuMTM3OTU0MiIKICAgICAgIHk9Ii0wLjA3NTI5OTk5MyIKICAgICAgIGhlaWdodD0iMS4xNTA2Ij4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIxLjAwNjI1NDMiCiAgICAgICAgIGlkPSJmZUdhdXNzaWFuQmx1cjQzOTMiIC8+CiAgICA8L2ZpbHRlcj4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0NDM4IgogICAgICAgeD0iLTAuMDIyNjIyOTA0IgogICAgICAgd2lkdGg9IjEuMDQ1MjQ1OCIKICAgICAgIHk9Ii0wLjAyNTU1NTYxNCIKICAgICAgIGhlaWdodD0iMS4wNTExMTEyIj4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIwLjIyMTcwNjAxIgogICAgICAgICBpZD0iZmVHYXVzc2lhbkJsdXI0NDQwIiAvPgogICAgPC9maWx0ZXI+CiAgICA8ZmlsdGVyCiAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICBzdHlsZT0iY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOnNSR0IiCiAgICAgICBpZD0iZmlsdGVyNDQ0NiIKICAgICAgIHg9Ii0wLjAyMzIzMjg0NyIKICAgICAgIHdpZHRoPSIxLjA0NjQ2NTgiCiAgICAgICB5PSItMC4wMjQ4MTk1NDUiCiAgICAgICBoZWlnaHQ9IjEuMDQ5NjM5MSI+CiAgICAgIDxmZUdhdXNzaWFuQmx1cgogICAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICAgIHN0ZERldmlhdGlvbj0iMC4yMjIwOTQyOCIKICAgICAgICAgaWQ9ImZlR2F1c3NpYW5CbHVyNDQ0OCIgLz4KICAgIDwvZmlsdGVyPgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMS40IgogICAgIGlua3NjYXBlOmN4PSIxMzAuNTY4NjgiCiAgICAgaW5rc2NhcGU6Y3k9IjIwMS4zNDg0NSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0iZzQ0ODgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtcm90YXRpb249IjAiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTYwMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI4MzYiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiIC8+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNSI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MC4wNTQwMzQsLTg5LjA0MzUyMikiPgogICAgPGcKICAgICAgIGlkPSJnNDQ4OCIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDIuNjU1MDQ0MywwLDAsMi44NTQ2OTA3LC0xMTAuOTk1MTgsLTMyNi45MjY1MikiPgogICAgICA8ZWxsaXBzZQogICAgICAgICByeT0iMTYuMDM1OTI3IgogICAgICAgICByeD0iMTcuNTA1ODg0IgogICAgICAgICBjeT0iMTY0LjE2NTUxIgogICAgICAgICBjeD0iODAuNTc4NzIiCiAgICAgICAgIGlkPSJwYXRoMzQ3NCIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MC4zO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC4yNjQ5OTk5OTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxO2ZpbHRlcjp1cmwoI2ZpbHRlcjQzOTEpO2ltYWdlLXJlbmRlcmluZzphdXRvIiAvPgogICAgICA8cmVjdAogICAgICAgICB0cmFuc2Zvcm09InJvdGF0ZSgtNDIuODA4OTU1KSIKICAgICAgICAgcnk9IjAiCiAgICAgICAgIHk9IjE3NC41NTY0OSIKICAgICAgICAgeD0iLTY3LjM5ODc1OCIKICAgICAgICAgaGVpZ2h0PSIyLjE1MjIwNjQiCiAgICAgICAgIHdpZHRoPSIyOS4yNzk2NDgiCiAgICAgICAgIGlkPSJyZWN0NDQxMyIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MTtmaWxsOiNmZmZmMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjA7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MTtmaWx0ZXI6dXJsKCNmaWx0ZXI0NDQ2KSIgLz4KICAgICAgPHJlY3QKICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoLTEzOS4wMzQ0MikiCiAgICAgICAgIHJ5PSIwIgogICAgICAgICB5PSItNzMuMDUwOTQ5IgogICAgICAgICB4PSItMTgyLjk2MjUyIgogICAgICAgICBoZWlnaHQ9IjIuMTUyMjA2NCIKICAgICAgICAgd2lkdGg9IjI5LjI3OTY0OCIKICAgICAgICAgaWQ9InJlY3Q0NDEzLTMiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDojZmZmZjAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjE7ZmlsdGVyOnVybCgjZmlsdGVyNDQzOCkiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K".
7428
	#$conf["closeIcon"]="";
7429
	#$conf["valNotSend"],字串,如果選擇的選項數值為何,就不傳送表單.
7430
	#$conf["valNotSend"]="";
7431
	#$conf["dataFormId"],字串,提供用於識別哪一張表單的data屬性名稱.
7432
	#$conf["dataFormId"]="";
7433
	#參考資料:
7434
	#http://stackoverflow.com/questions/833032/submit-is-not-a-function-in-javascript => form的id重複會導致"document.testForm.submit()"的javaScript語法出錯。
7435
	#http://stackoverflow.com/questions/14622124/all-of-commands-for-submit-in-onchange-select-not-work => documents.forms.formName.submit() 才會將正確的表單送出。
7436
	#http://stackoverflow.com/questions/368813/html-form-readonly-select-tag-input => 禁止改變選項,且也不會傳送該名稱表單
7437
	#備註:
7438
	#$_SERVER["PHP_SELF"]為php檔案自己
7439
	#在手機網頁瀏覽器不支援.
7440
	#tableStart & tableEnd 要補上
7441
	*/
7442
	public static function scrollingList(&$conf){
7443
 
7444
		#初始化要回傳的結果
7445
		$result=array();
7446
 
7447
		#取得當前執行的函數名稱
7448
		$result["function"]=__FUNCTION__;
7449
 
7450
		#如果沒有參數
7451
		if(func_num_args()==0){
7452
 
7453
			#設置執行失敗
7454
			$result["status"]="false";
7455
 
7456
			#設置執行錯誤訊息
7457
			$result["error"]="函數".$result["function"]."需要參數";
7458
 
7459
			#回傳結果
7460
			return $result;
7461
 
7462
			}#if end
7463
 
7464
		#取得參數
7465
		$result["argu"]=$conf;
7466
 
7467
		#如果 $conf 不為陣列
7468
		if(gettype($conf)!=="array"){
7469
 
7470
			#設置執行失敗
7471
			$result["status"]="false";
7472
 
7473
			#設置執行錯誤訊息
7474
			$result["error"][]="\$conf變數須為陣列形態";
7475
 
7476
			#如果傳入的參數為 null
7477
			if($conf===null){
7478
 
7479
				#設置執行錯誤訊息
7480
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
7481
 
7482
				}#if end
7483
 
7484
			#回傳結果
7485
			return $result;
7486
 
7487
			}#if end
7488
 
7489
		#如果有設置close icon
7490
		if(isset($conf["closeIcon"])){
7491
 
7492
			#另存路徑
7493
			$closeIcon=$conf["closeIcon"];
7494
 
7495
			#卸除不被 form::inputSelect 接受的參數
7496
			unset($conf["closeIcon"]);
7497
 
7498
			}#if end
7499
 
7500
		#反之
7501
		else{
7502
 
7503
			#用預設的 close icon
7504
			$closeIcon="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpvc2I9Imh0dHA6Ly93d3cub3BlbnN3YXRjaGJvb2sub3JnL3VyaS8yMDA5L29zYiIKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgd2lkdGg9IjEwNS43ODE3Mm1tIgogICBoZWlnaHQ9IjEwNS4zNDM0NG1tIgogICB2aWV3Qm94PSIwIDAgMTA1Ljc4MTcyIDEwNS4zNDM0NCIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnOCIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45MitkZXZlbCB1bmtub3duIgogICBzb2RpcG9kaTpkb2NuYW1lPSJjbG9zZUljb24uc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzMiI+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzMTUiCiAgICAgICBvc2I6cGFpbnQ9InNvbGlkIj4KICAgICAgPHN0b3AKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzAwMDAwMDtzdG9wLW9wYWNpdHk6MTsiCiAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgaWQ9InN0b3A0MzEzIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0MzkxIgogICAgICAgeD0iLTAuMDY4OTc3MTAzIgogICAgICAgd2lkdGg9IjEuMTM3OTU0MiIKICAgICAgIHk9Ii0wLjA3NTI5OTk5MyIKICAgICAgIGhlaWdodD0iMS4xNTA2Ij4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIxLjAwNjI1NDMiCiAgICAgICAgIGlkPSJmZUdhdXNzaWFuQmx1cjQzOTMiIC8+CiAgICA8L2ZpbHRlcj4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0NDM4IgogICAgICAgeD0iLTAuMDIyNjIyOTA0IgogICAgICAgd2lkdGg9IjEuMDQ1MjQ1OCIKICAgICAgIHk9Ii0wLjAyNTU1NTYxNCIKICAgICAgIGhlaWdodD0iMS4wNTExMTEyIj4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIwLjIyMTcwNjAxIgogICAgICAgICBpZD0iZmVHYXVzc2lhbkJsdXI0NDQwIiAvPgogICAgPC9maWx0ZXI+CiAgICA8ZmlsdGVyCiAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICBzdHlsZT0iY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOnNSR0IiCiAgICAgICBpZD0iZmlsdGVyNDQ0NiIKICAgICAgIHg9Ii0wLjAyMzIzMjg0NyIKICAgICAgIHdpZHRoPSIxLjA0NjQ2NTgiCiAgICAgICB5PSItMC4wMjQ4MTk1NDUiCiAgICAgICBoZWlnaHQ9IjEuMDQ5NjM5MSI+CiAgICAgIDxmZUdhdXNzaWFuQmx1cgogICAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICAgIHN0ZERldmlhdGlvbj0iMC4yMjIwOTQyOCIKICAgICAgICAgaWQ9ImZlR2F1c3NpYW5CbHVyNDQ0OCIgLz4KICAgIDwvZmlsdGVyPgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMS40IgogICAgIGlua3NjYXBlOmN4PSIxMzAuNTY4NjgiCiAgICAgaW5rc2NhcGU6Y3k9IjIwMS4zNDg0NSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0iZzQ0ODgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtcm90YXRpb249IjAiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTYwMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI4MzYiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiIC8+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNSI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MC4wNTQwMzQsLTg5LjA0MzUyMikiPgogICAgPGcKICAgICAgIGlkPSJnNDQ4OCIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDIuNjU1MDQ0MywwLDAsMi44NTQ2OTA3LC0xMTAuOTk1MTgsLTMyNi45MjY1MikiPgogICAgICA8ZWxsaXBzZQogICAgICAgICByeT0iMTYuMDM1OTI3IgogICAgICAgICByeD0iMTcuNTA1ODg0IgogICAgICAgICBjeT0iMTY0LjE2NTUxIgogICAgICAgICBjeD0iODAuNTc4NzIiCiAgICAgICAgIGlkPSJwYXRoMzQ3NCIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MC4zO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC4yNjQ5OTk5OTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxO2ZpbHRlcjp1cmwoI2ZpbHRlcjQzOTEpO2ltYWdlLXJlbmRlcmluZzphdXRvIiAvPgogICAgICA8cmVjdAogICAgICAgICB0cmFuc2Zvcm09InJvdGF0ZSgtNDIuODA4OTU1KSIKICAgICAgICAgcnk9IjAiCiAgICAgICAgIHk9IjE3NC41NTY0OSIKICAgICAgICAgeD0iLTY3LjM5ODc1OCIKICAgICAgICAgaGVpZ2h0PSIyLjE1MjIwNjQiCiAgICAgICAgIHdpZHRoPSIyOS4yNzk2NDgiCiAgICAgICAgIGlkPSJyZWN0NDQxMyIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MTtmaWxsOiNmZmZmMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjA7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MTtmaWx0ZXI6dXJsKCNmaWx0ZXI0NDQ2KSIgLz4KICAgICAgPHJlY3QKICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoLTEzOS4wMzQ0MikiCiAgICAgICAgIHJ5PSIwIgogICAgICAgICB5PSItNzMuMDUwOTQ5IgogICAgICAgICB4PSItMTgyLjk2MjUyIgogICAgICAgICBoZWlnaHQ9IjIuMTUyMjA2NCIKICAgICAgICAgd2lkdGg9IjI5LjI3OTY0OCIKICAgICAgICAgaWQ9InJlY3Q0NDEzLTMiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDojZmZmZjAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjE7ZmlsdGVyOnVybCgjZmlsdGVyNDQzOCkiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K";
7505
 
7506
			}#else end
7507
 
7508
		#如果有設置 $conf["valNotSend"]
7509
		if(isset($conf["valNotSend"])){
7510
 
7511
			#設置不傳送表單的js語法
7512
			$valNotSend=
7513
			"
7514
				//如果表單的數值為 ".$conf["valNotSend"]."
7515
				if(clickedValue==='".$conf["valNotSend"]."'){
7516
 
7517
					//結束動作
7518
					return true;
7519
 
7520
					}//if end
7521
			";
7522
 
7523
			}#if end
7524
 
7525
		#反之
7526
		else{
7527
 
7528
			#設為空值
7529
			$valNotSend="";
7530
 
7531
			}#else end
7532
 
7533
		#卸除不被 form::inputSelect 接受的參數
7534
		unset($conf["valNotSend"]);
7535
 
7536
		#如果有設置 formName
7537
		if(isset($conf["formName"])){
7538
 
7539
			#如果 formName 跟 name 一樣
7540
			if($conf["formName"]===$conf["name"]){
7541
 
7542
				#增加 formName 的名稱
7543
				$conf["formName"]=$conf["formName"]."FormName";
7544
 
7545
				}#if end
7546
 
7547
			}#if end
7548
 
7549
		#函式說明:
7550
		#建立下拉式表單
7551
		#回傳結果:
7552
		#$result["status"],執行是否正常,"true"代表正常,"false"代表失敗.
7553
		#$result["error"],錯誤訊息陣列.
7554
		#$result["content"],語法內容.
7555
		#$result["function"],設置當前執行的函式
7556
		#必填參數:
7557
		#$conf["name"],字串,爲該下拉式選單的名稱
7558
		#$conf["name"]="";
7559
		#$conf["sendValue"],陣列值,爲每個選項的實際傳送的數值,e.g. $sendValue = array("a","b","c","d","e");
7560
		#$conf["sendValue"]=array();
7561
		#可省略參數:
7562
		#$conf["formName"]="";#該表單的名稱
7563
		#$conf["outputValue"]=array();#爲陣列值,爲每個選項的實際顯示的數值, e.g. $outputValue = array("p","o","i","t","e");,如果沒有設定,則其值同$conf["sendValue"]。
7564
		#$conf["viewCount"]="";#為一次要顯示幾個選項,預設爲顯示一個。
7565
		#$conf["defaultValue"]="";#為預設選取那個選項,須爲$conf["sendValue"]其中的一個值。
7566
		#$conf["class"]="";#爲要套用的class樣式,預設為 "__qbpwcf_inputSelect".
7567
		#$conf["readOnly"],字串,內容是否唯獨,預設為"false",不唯獨,"true"為唯獨.
7568
		#$conf["readOnly"]="true";
7569
		#$conf["comment"],字串,輸入方框上面要放哪些註解文字,亦即用label來呈現,同時指定"for"屬性的數值為當前"input"標籤的id,意即參數"name"的內容.
7570
		#$conf["comment"]="";
7571
		#$conf["formAction"]="";#爲該下拉式表單要傳送到的位置
7572
		#$conf["actionTarget"]="_self";#要如何接收網頁的迴應,預設爲_self
7573
		#$conf["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsAction"]參數。
7574
		#$conf["jsAction"]="";#爲該js是要做什麼,可以是"document.forms.formName.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
7575
		#$conf["independentForm"]="true";#是否該下拉式選單就是一個完整的表單,"true"代表是,"false"代表不是,預設為"true"
7576
		#$conf["hiddenVar"],字串陣列,隱藏的變數名稱陣列.
7577
		#$conf["hiddenVar"]=array("");
7578
		#$conf["hiddanVarValue"],字串陣列,隱藏變數的數值內容.
7579
		#$conf["hiddenVarValue"]=array("");
7580
		#$conf["fixedPosition"],字串,該下拉式選單是否要隨着滾軸滾動時固定在畫面上特定的位置,於設為"false",代表不固定,"true"代表要固定.
7581
		#$conf["fixedPosition"]="true";
7582
		#$conf["fixedPosition.fixedTop"],字串,該選單距離畫面頂部的固定距離,預設為0px.
7583
		#$conf["fixedPosition.fixedTop"]="0px";
7584
		#$conf["fixedPosition.fixedLeft"],字串,該選單距離畫面左方的固定距離.預設為0px.
7585
		#$conf["fixedPosition.fixedLeft"]="0px";
7586
		#$conf["fixedPosition.emptySpaceSize"],字串,表單位置要放置多寬的空白,於設為40px.
7587
		#$conf["fixedPosition.emptySpaceSize"]="40px";
7588
		#$conf["tableStartClass"]="__withoutBorder";#表格要採用的css樣式,預設為__withoutBorder,__withoutBorder為沒有框線的樣式,__withBorder為有樣式的表格.
7589
		#$conf["tableStart"]="true";#爲是否要以<table>結尾,"true"表示"是"。也可以看作表格結束。
7590
		#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
7591
		#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
7592
		#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
7593
		#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
7594
		#$conf["tableEnd"]="true";#爲是否要以</table>結尾,"true"表示"是"。也可以看作表格結束。
7595
 
7596
		#如果有設置 $conf["dataFormId"]
7597
		if(isset($conf["dataFormId"])){
7598
 
7599
			#設置 data-id 屬性
7600
			$conf["dataFormId"]=$conf["dataFormId"];
7601
 
7602
			}#if end
7603
 
7604
		#備註:
7605
		#$_SERVER["PHP_SELF"]為php檔案自己
7606
		#參考資料來源:
7607
		#http://stackoverflow.com/questions/833032/submit-is-not-a-function-in-javascript => form的id重複會導致"document.testForm.submit()"的javaScript語法出錯。
7608
		#http://stackoverflow.com/questions/14622124/all-of-commands-for-submit-in-onchange-select-not-work => documents.forms.formName.submit() 才會將正確的表單送出。
7609
		#http://stackoverflow.com/questions/368813/html-form-readonly-select-tag-input => 禁止改變選項,且也不會傳送該名稱表單
7610
		#tableStart & tableEnd 要補上
7611
		$inputSelect=form::inputSelect($conf);
7612
 
7613
		#如果建立失敗
7614
		if($inputSelect["content"]==="false"){
7615
 
7616
			#設置執行失敗
7617
			$result["status"]="false";
7618
 
7619
			#設置錯誤訊息
7620
			$result["error"]=$inputSelect;
7621
 
7622
			#回傳結果
7623
			return $result;
7624
 
7625
			}#if end
7626
 
7627
		#將$conf["name"]進行處理,避免js錯誤
7628
		#函式說明:
7629
		#處理字串避免網頁出錯
7630
		#回傳結果:
7631
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
7632
		#$result["function"],當前執行的函數.
7633
		#$result["content"],爲處理好的字串.
7634
		#$result["error"],錯誤訊息陣列.
7635
		#必填參數:
7636
		$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["name"];#爲要處理的字串
7637
		#可省略的參數:
7638
		$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*","#","\"","-");#爲被選擇要處理的字串/字元,須爲陣列值。
7639
			#若不設定則預設爲要將這些字串作替換 ("<",">","=","//","'","$","%","&","|","/*","*","#","\"").
7640
			#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
7641
		#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
7642
		$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
7643
		unset($conf["stringProcess::correctCharacter"]);
7644
 
7645
		#如果處理失敗
7646
		if($correctCharacter["status"]==="false"){
7647
 
7648
			#設置執行失敗
7649
			$result["status"]="false";
7650
 
7651
			#設置錯誤訊息
7652
			$result["error"]=$correctCharacter;
7653
 
7654
			#回傳結果
7655
			return $result;
7656
 
7657
			}#if end
7658
 
7659
		#比對名稱是否符合規則
7660
		if($conf["name"]!==$correctCharacter["content"]){
7661
 
7662
			#設置執行失敗
7663
			$result["status"]="false";
7664
 
7665
			#設置錯誤訊息
7666
			$result["error"]=$correctCharacter;
7667
 
7668
			#設置額外錯誤訊息
7669
			$result["error"][]=$conf["name"]." 不是合法的參數";
7670
 
7671
			#回傳結果
7672
			return $result;
7673
 
7674
			}#if end
7675
 
7676
		#另存表單的名稱
7677
		$name=$conf["name"];
7678
 
7679
		#設置用js傳送表單的動作
7680
		$sendForm=
7681
		"
7682
			return false;
7683
		";
7684
		if(isset($conf["independentForm"])){
7685
			$independentForm=$conf["independentForm"];
7686
			if($independentForm==="true"){
7687
				if(isset($conf["formName"]) && isset($conf["formAction"])){
7688
					$sendForm=
7689
						"
7690
						document.forms.".$conf["formName"].".submit();
7691
						";
7692
					}#if end
7693
				}#if end
7694
			}#if end
7695
		unset($conf);
7696
 
7697
		#如果建立失敗
7698
		if($inputSelect["status"]==="false"){
7699
 
7700
			#設置執行失敗
7701
			$result["status"]="false";
7702
 
7703
			#設置錯誤訊息
7704
			$result["error"]=$inputSelect;
7705
 
7706
			#回傳結果
7707
			return $result;
7708
 
7709
			}#if end
7710
 
7711
		#取得下拉式選單的語法
7712
		$result["content"]=$inputSelect["content"];
7713
 
7714
		#建立 scrollingList() 用的js
7715
		#函式說明:
7716
		#將要執行的script語法透過該函式執行(會在程式外層用<script></script>包起來).
7717
		#回傳結果:
7718
		#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
7719
		#$result["error"],錯誤訊息陣列
7720
		#$result["function"],當前執行的函數名稱
7721
		#$result["content"],要執行的javaScript語法
7722
		#必填參數:
7723
		#$conf["script"],字串,要執行的javaScript語法.
7724
		$conf["javaScript::toScript"]["script"]=
7725
		"
7726
		//取得下拉式選單元素
7727
		var ".$name."=document.getElementById('".$name."');
7728
 
7729
		//將下拉式選單綁定'mousedown'事件,
7730
		var scrollingListMousedownEvent = ".$name.".addEventListener('mousedown',function(event){
7731
 
7732
			//debug
7733
			console.log('mousedown event start');
7734
 
7735
			//取消預設按下滑鼠的效果
7736
			event.preventDefault();
7737
 
7738
			//停止擴散事件
7739
			event.stopPropagation();
7740
 
7741
			//debug
7742
			console.log('mousedown event end');
7743
 
7744
			});
7745
 
7746
		//將下拉式選單綁定'mouseup'事件,
7747
		var scrollingListMouseupEvent = ".$name.".addEventListener('mouseup',function(event){
7748
 
7749
			//debug
7750
			console.log('mouseup event start');
7751
 
7752
			//取消預設滑鼠放開的效果
7753
			event.preventDefault();
7754
 
7755
			//停止擴散事件
7756
			event.stopPropagation();
7757
 
7758
			//debug
7759
			console.log('mouseup event end');
7760
 
7761
			});
7762
 
7763
		//將下拉式選單綁定'ontouchstart'事件,
7764
		var scrollingListTouchStartEvent = ".$name.".addEventListener('ontouchstart',function(event){
7765
 
7766
			//debug
7767
			console.log('ontouch event start');
7768
 
7769
			//取消預設觸碰的效果
7770
			event.preventDefault();
7771
 
7772
			//停止擴散事件
7773
			event.stopPropagation();
7774
 
7775
			//debug
7776
			console.log('ontouch event end');
7777
 
7778
			});
7779
 
7780
		//將下拉式選單綁定'ontouchend'事件,
7781
		var scrollingListTouchEndEvent = ".$name.".addEventListener('ontouchend',function(event){
7782
 
7783
			//debug
7784
			console.log('ontouch event start');
7785
 
7786
			//取消預設觸碰的效果
7787
			event.preventDefault();
7788
 
7789
			//停止擴散事件
7790
			event.stopPropagation();
7791
 
7792
			//debug
7793
			console.log('ontouch event end');
7794
 
7795
			});
7796
 
7797
		//將下拉式選單綁定'click'事件,觸發時要執行物件__qbpwcf_scrollingList的函數
7798
		var scrollingListClickEvent = ".$name.".addEventListener('click',function(event){
7799
 
7800
			//debug
7801
			console.log(event);
7802
 
7803
			//取消預設點擊的效果
7804
			event.preventDefault();
7805
 
7806
			//取得下拉式選單內容
7807
			var inputSelect=event.target;
7808
 
7809
			//debug
7810
			//console.log(inputSelect);
7811
 
7812
			//讓下拉式選單趕緊隱藏
7813
			inputSelect.style.opacity='0';
7814
 
7815
			//取得選項的數目
7816
			var opLen=inputSelect.options.length;
7817
 
7818
			//debug
7819
			//console.log(opLen);
7820
 
7821
			//新增覆蓋全螢幕的div
7822
			var root=document.createElement('div');
7823
 
7824
			//設置最外層div的id
7825
			root.setAttribute('id','scrollingListRootDiv');
7826
 
7827
			//設置最外層div的樣式
7828
			root.setAttribute('class','__qbpwcf_scrollingListRootDiv');
7829
 
7830
			//新增為了將不足divForMiddle可見高度的選項們置中的div
7831
			var divForMiddle=document.createElement('div');
7832
 
7833
			//設置為了上下置中的div樣式
7834
			divForMiddle.setAttribute('class','__qbpwcf_scrollingListOutterDiv');
7835
 
7836
			//初始化記錄選擇的選項index
7837
			var selectedOptionIndex=-1;
7838
 
7839
			//針對每個選項
7840
			for(var i=0;i< opLen;i++){
7841
 
7842
				//debug
7843
				//console.log(i);
7844
 
7845
				//debug
7846
				//console.log(inputSelect.options[i].value);
7847
 
7848
				//取得選項實際數值
7849
				var opVal=inputSelect.options[i].value;
7850
 
7851
				//debug
7852
				//console.log(inputSelect.options[i].innerHTML);
7853
 
7854
				//取得選項顯示名稱
7855
				var opShow=inputSelect.options[i].innerHTML;
7856
 
7857
				//debug
7858
				//console.log(opVal+'=>'+opShow);
7859
 
7860
				//建立選項的div
7861
				var opDiv=document.createElement('div');
7862
 
7863
				//設置選項div的class
7864
				opDiv.setAttribute('class','__qbpwcf_inputSelect __qbpwcf_inputSelect_hover');
7865
 
7866
				//設置選項div的數值內容
7867
				opDiv.setAttribute('data-val',opVal);
7868
 
7869
				//設置選項div的編號(從0開始)
7870
				opDiv.setAttribute('data-no',i);
7871
 
7872
				//若該選項有 'selected' 屬性
7873
				if(inputSelect.options[i].attributes['selected']!==undefined){
7874
 
7875
					//debug
7876
					//console.log('第'+opDiv.attributes['data-no'].value+'個選項為現有選擇的項目');
7877
 
7878
					//標記該選項為原先所選擇的項目
7879
					opDiv.setAttribute('data-selected','true');
7880
 
7881
					//記錄原先所選擇的項目的index
7882
					var selectedOptionIndex=parseInt(opDiv.attributes['data-no'].value);
7883
 
7884
					}//if end
7885
 
7886
				//建立選項名稱文字節點
7887
				var textnode = document.createTextNode(opShow);
7888
 
7889
				//將文字放進選項的div
7890
				opDiv.appendChild(textnode);
7891
 
7892
				//將選項放進為了上下左右置中的div
7893
				divForMiddle.appendChild(opDiv);
7894
 
7895
				}//for end
7896
 
7897
			//新增為了上下左右置中的div
7898
			var divForCenterMiddle=document.createElement('div');
7899
 
7900
			//設置為了內部元素都上下左右置中的div樣式
7901
			//divForCenterMiddle.setAttribute('style','background-color:white;position:fixed;top:15%;left:15%;height:70%;width:70%;overflow-y:auto;border:1px solid black;');
7902
			divForCenterMiddle.setAttribute('class','__qbpwcf_scrollingListInnerDiv');
7903
 
7904
			//將上下置中的選項們放進可以上下左右置中的div
7905
			divForCenterMiddle.appendChild(divForMiddle);
7906
 
7907
			//將選項放進最外層的div
7908
			root.appendChild(divForCenterMiddle);
7909
 
7910
			//將整個div放到body裡面
7911
			document.body.appendChild(root);
7912
 
7913
			//調整滾軸表單的置中效果
7914
			scrollingListMiddleFunction();
7915
 
7916
			//取得所有選項
7917
			var allOptions=document.getElementsByClassName('__qbpwcf_inputSelect_hover');
7918
 
7919
			//debug
7920
			//console.log(allOptions);
7921
 
7922
			//移動滾軸讓原本選擇的選項盡量置中
7923
 
7924
			//原先選擇的項目索引
7925
			//console.log(selectedOptionIndex);
7926
 
7927
			//opLen 選項的數目
7928
			//console.log(opLen);
7929
 
7930
			//取得選單的滾軸上端位置
7931
			//var scrollingListScrollTop=document.getElementById('scrollingListRootDiv').children[0].scrollTop;
7932
 
7933
			//debug
7934
			//console.log(scrollingListScrollTop);
7935
 
7936
			//取得選單的滾軸上端位置最大值
7937
			var scrollingListScrollTopMax=document.getElementById('scrollingListRootDiv').children[0].scrollTopMax;
7938
 
7939
			//debug
7940
			//console.log(scrollingListScrollTopMax);
7941
 
7942
			//取得選單的可見高度
7943
			//var scrollingListViewHeight=document.getElementById('scrollingListRootDiv').children[0].clientHeight;
7944
 
7945
			//debug
7946
			//console.log(scrollingListViewHeight);
7947
 
7948
			//取得選單含滾軸的總高度
7949
			//var scrollingListScrollHeight=document.getElementById('scrollingListRootDiv').children[0].scrollHeight;
7950
 
7951
			//debug
7952
			//console.log(scrollingListScrollHeight);
7953
 
7954
			//debug
7955
			//console.log(selectedOptionIndex);
7956
 
7957
			//如果有滾軸
7958
			if(scrollingListScrollTopMax!==0){
7959
 
7960
				//如果是第一個選項
7961
				if(selectedOptionIndex===0){
7962
 
7963
					//滾軸拉到最上面
7964
					document.getElementById('scrollingListRootDiv').children[0].scrollTop=0;
7965
 
7966
					//debug
7967
					//console.log('scrollingListScrollTop=0');
7968
 
7969
					}//if end
7970
 
7971
				//如果之前選擇的選項索引剛好等於 opLen/2
7972
				else if(((selectedOptionIndex+1)===(opLen/2))){
7973
 
7974
					//debug
7975
					//console.log('之前選擇的選項索引剛好等於一半');
7976
 
7977
					//取得新的滾軸高度
7978
					var newScrollTop=scrollingListScrollTopMax/2;
7979
 
7980
					//設置滾軸的上端位置
7981
					document.getElementById('scrollingListRootDiv').children[0].scrollTop=newScrollTop;
7982
 
7983
					//debug
7984
					//console.log('scrollingListScrollTop='+newScrollTop.toString());
7985
 
7986
					}//if end
7987
 
7988
				//如果之前選擇的選項索引小於半
7989
				else if((selectedOptionIndex+1)<(opLen/2)){
7990
 
7991
					//debug
7992
					//console.log('之前選擇的選項索引未過半,加幾個'+(selectedOptionIndex+1).toString());
7993
 
7994
					//取得新的滾軸高度
7995
					var newScrollTop=scrollingListScrollTopMax/opLen*selectedOptionIndex+1;
7996
 
7997
					//設置滾軸的上端位置
7998
					document.getElementById('scrollingListRootDiv').children[0].scrollTop=newScrollTop;
7999
 
8000
					//debug
8001
					//console.log('scrollingListScrollTop='+newScrollTop.toString());
8002
 
8003
					}//if end
8004
 
8005
				//如果之前選擇的選項索引過半
8006
				else if((selectedOptionIndex+1)>(opLen/2)){
8007
 
8008
					//debug
8009
					//console.log('之前選擇的選項索引過半,減幾個'+(opLen-selectedOptionIndex-1).toString());
8010
 
8011
					//取得新的滾軸高度
8012
					var newScrollTop=scrollingListScrollTopMax-scrollingListScrollTopMax/opLen*(opLen-selectedOptionIndex-1);
8013
 
8014
					//設置滾軸的上端位置
8015
					document.getElementById('scrollingListRootDiv').children[0].scrollTop=newScrollTop;
8016
 
8017
					//debug
8018
					//console.log('scrollingListScrollTop='+newScrollTop.toString());
8019
 
8020
					}//if end
8021
 
8022
				//如果是最後一個選項
8023
				else if(selectedOptionIndex===opLen){
8024
 
8025
					//如果是最後一個選項
8026
					document.getElementById('scrollingListRootDiv').children[0].scrollTop=scrollingListScrollTopMax;
8027
 
8028
					//debug
8029
					//console.log('scrollingListScrollTop='+scrollingListScrollTopMax);
8030
 
8031
					}//if end
8032
 
8033
				//不應該跑到的地方
8034
				else{
8035
 
8036
					//debug
8037
					console.log('error occur!');
8038
 
8039
					}//else end
8040
 
8041
				}//if end
8042
 
8043
			//針對每個選項
8044
			for(var i=0;i<allOptions.length;i++){
8045
 
8046
				//綁定所有選項的 'click' 事件
8047
				allOptions[i].addEventListener('click',function(event){
8048
 
8049
					//debug
8050
					//console.log(event);
8051
 
8052
					//取得點擊到的選項
8053
					var clickedOption=event.target;
8054
 
8055
					//debug
8056
					//console.log(clickedOption);
8057
 
8058
					//取得點擊到的選項數值
8059
					var clickedValue=clickedOption.attributes['data-val'].value;
8060
 
8061
					//debug
8062
					//console.log(clickedValue);
8063
 
8064
					//取得點擊到的選項編號
8065
					var clickedNo=clickedOption.attributes['data-no'].value;
8066
 
8067
					//debug
8068
					//console.log(clickedNo);
8069
 
8070
					//取得點擊到的選項名稱
8071
					var clickedName=clickedOption.innerHTML;
8072
 
8073
					//debug
8074
					//console.log(clickedName);
8075
 
8076
					//修改下拉式選單選則的數值
8077
 
8078
					//針對每個下拉式選單實際的選項
8079
					for(var j=0;j<allOptions.length;j++){
8080
 
8081
						//移除 selected 屬性
8082
						inputSelect.options[j].removeAttribute('selected');
8083
 
8084
						}//for end
8085
 
8086
					//debug
8087
					//console.log('設置 inputSelect.options['+clickedNo+'] 的 selected 屬性');
8088
 
8089
					//設置點選的選項的 selected 屬性
8090
					inputSelect.options[clickedNo].setAttribute('selected','');
8091
 
8092
					//取得要移除 scrolling list 的 div
8093
					var divToDel=document.getElementById('scrollingListRootDiv');
8094
 
8095
					//debug
8096
					//console.log(divTodel);
8097
 
8098
					//移除 scrolling list div
8099
					divToDel.remove();
8100
 
8101
					//復原下拉式選單
8102
					inputSelect.style.opacity='unset';
8103
 
8104
					".$valNotSend."
8105
 
8106
					//馬上傳送表單
8107
					sendForm();
8108
 
8109
					});//function end
8110
 
8111
				}//for end
8112
 
8113
				//建立 close icon
8114
				closeIcon();
8115
 
8116
			});
8117
 
8118
			//停止擴散事件
8119
			event.stopPropagation();
8120
		";
8121
		#可省略參數:
8122
		#$conf["onReady"],字串,是否要在網頁載入完再執行,"false"為不等載入完就先執行,預設為"true"要等載入完再執行.
8123
		#$conf["onReady"]="true";
8124
		#$conf["globalJs"],字串陣列,為要放入<script>標籤的js全域變數.
8125
		$conf["javaScript::toScript"]["globalJs"][]=
8126
		"
8127
		//取得下拉式選單元素
8128
		var ".$name."=document.getElementById('".$name."');
8129
		";
8130
		#$conf["jsFunciton"],字串陣列,為要放入<script>標籤的js函數.
8131
		$conf["javaScript::toScript"]["jsFunciton"][]=
8132
		"
8133
			//馬上傳送表單
8134
			function sendForm(){
8135
 
8136
				".$sendForm."
8137
 
8138
				}//function sendForm end
8139
 
8140
			//關閉 list 的按鈕與事件
8141
			function closeIcon(){
8142
 
8143
				//建立 close icon
8144
				var closeIcon = document.createElement('img');
8145
 
8146
				//設置 close icon 的樣式
8147
				closeIcon.style['position']='fixed';
8148
				closeIcon.style['top']='15%';
8149
				closeIcon.style['left']='85%';
8150
				closeIcon.style['width']='5%';
8151
				closeIcon.style['min-width']='30px';
8152
				closeIcon.style['max-width']='50px';
8153
				closeIcon.style['cursor']='pointer';
8154
 
8155
				//設置 close icon img 的屬性
8156
				closeIcon.src='".$closeIcon."';
8157
 
8158
				//設置 close icon img 的id
8159
				closeIcon.setAttribute('id','qbpwcfScrollingListCloseIcon');
8160
 
8161
				//取得 scrollingList 的 root div
8162
				var slrd=document.getElementById('scrollingListRootDiv');
8163
 
8164
				//將 close icon outer div 放到 scrollingList 的 root div 裡面
8165
				slrd.appendChild(closeIcon);
8166
 
8167
				//取得 close icon img
8168
				var closeIcon=document.getElementById('qbpwcfScrollingListCloseIcon');
8169
 
8170
				//新增 close icon img 的點擊事件
8171
				closeIcon.addEventListener('click',function(){
8172
 
8173
					//取得要移除 scrolling list 的 div
8174
					var divToDel=document.getElementById('scrollingListRootDiv');
8175
 
8176
					//debug
8177
					//console.log(divTodel);
8178
 
8179
					//移除 scrolling list div
8180
					divToDel.remove();
8181
 
8182
					//復原下拉式選單
8183
					".$name.".style.opacity='unset';
8184
 
8185
					});
8186
 
8187
				}//function closeIcon end
8188
		";
8189
		#參考資料:
8190
		#http://stackoverflow.com/questions/9899372/pure-javascript-equivalent-to-jquerys-ready-how-to-call-a-function-when-the
8191
		$toScript=javaScript::toScript($conf["javaScript::toScript"]);
8192
		unset($conf["javaScript::toScript"]);
8193
 
8194
		#如果建立js失敗
8195
		if($toScript["status"]==="false"){
8196
 
8197
			#設置執行失敗
8198
			$result["status"]="false";
8199
 
8200
			#設置錯誤訊息
8201
			$result["error"]=$toScript;
8202
 
8203
			#回傳結果
8204
			return $result;
8205
 
8206
			}#if end
8207
 
8208
		#串接scrollingList用的js
8209
		$result["content"]=$result["content"].$toScript["content"];
8210
 
8211
		#設置執行正常
8212
		$result["status"]="true";
8213
 
8214
		#回傳結果
8215
		return $result;
8216
 
8217
		}#function scrollingList end
8218
 
8219
	/*
8220
	#函式說明:
8221
	#建立滾軸式表單取代傳統下拉式選單,選項會用全螢幕的div區塊呈現.
8222
	#回傳結果:
8223
	#$result["status"],執行是否正常,"true"代表正常,"false"代表失敗.
8224
	#$result["error"],錯誤訊息陣列.
8225
	#$result["content"],語法內容.
8226
	#$result["function"],設置當前執行的函式
8227
	#必填參數:
8228
	#$conf["name"],字串,爲該下拉式選單的元素的id.
8229
	$conf["name"]="";
8230
	#$conf["sendValue"],陣列值,爲每個選項的實際傳送的數值,e.g. $sendValue = array("a","b","c","d","e");
8231
	$conf["sendValue"]=array();
8232
	#可省略參數:
8233
	#$conf["outputValue"],字串陣列,爲每個選項的實際顯示的數值, e.g. $outputValue = array("p","o","i","t","e");,如果沒有設定,則其值同$conf["sendValue"]。
8234
	#$conf["outputValue"]=array();
8235
	#$conf["defaultValue"],字串,為預設選取那個選項,須爲$conf["sendValue"]其中的一個值。
8236
	#$conf["defaultValue"]="";
8237
	#$conf["class"],字串,爲要套用的class樣式,預設為 "__qbpwcf_inputSelect".
8238
	#$conf["class"]="";
8239
	#$conf["readOnly"],字串,內容是否唯獨,預設為"false",不唯獨,"true"為唯獨.
8240
	#$conf["readOnly"]="true";
8241
	#$conf["comment"],字串,輸入方框上面要放哪些註解文字,亦即用label來呈現,同時指定"for"屬性的數值為當前"input"標籤的id,意即參數"name"的內容.
8242
	#$conf["comment"]="";
8243
	#$conf["formAction"],字串,爲該下拉式表單要傳送到的位置.
8244
	#$conf["formAction"]="";
8245
	#$conf["independentForm"],字串,是否該下拉式選單就是一個完整的表單,"true"代表是,"false"代表不是,預設為"true".
8246
	#$conf["independentForm"]="false";
8247
	#$conf["hiddenVar"],字串陣列,隱藏的變數名稱陣列.
8248
	#$conf["hiddenVar"]=array("");
8249
	#$conf["hiddanVarValue"],字串陣列,隱藏變數的數值內容.
8250
	#$conf["hiddenVarValue"]=array("");
8251
	#$conf["closeIcon"],字串,關閉滾軸選單的按鈕圖示,預設為"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpvc2I9Imh0dHA6Ly93d3cub3BlbnN3YXRjaGJvb2sub3JnL3VyaS8yMDA5L29zYiIKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgd2lkdGg9IjEwNS43ODE3Mm1tIgogICBoZWlnaHQ9IjEwNS4zNDM0NG1tIgogICB2aWV3Qm94PSIwIDAgMTA1Ljc4MTcyIDEwNS4zNDM0NCIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnOCIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45MitkZXZlbCB1bmtub3duIgogICBzb2RpcG9kaTpkb2NuYW1lPSJjbG9zZUljb24uc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzMiI+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzMTUiCiAgICAgICBvc2I6cGFpbnQ9InNvbGlkIj4KICAgICAgPHN0b3AKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzAwMDAwMDtzdG9wLW9wYWNpdHk6MTsiCiAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgaWQ9InN0b3A0MzEzIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0MzkxIgogICAgICAgeD0iLTAuMDY4OTc3MTAzIgogICAgICAgd2lkdGg9IjEuMTM3OTU0MiIKICAgICAgIHk9Ii0wLjA3NTI5OTk5MyIKICAgICAgIGhlaWdodD0iMS4xNTA2Ij4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIxLjAwNjI1NDMiCiAgICAgICAgIGlkPSJmZUdhdXNzaWFuQmx1cjQzOTMiIC8+CiAgICA8L2ZpbHRlcj4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0NDM4IgogICAgICAgeD0iLTAuMDIyNjIyOTA0IgogICAgICAgd2lkdGg9IjEuMDQ1MjQ1OCIKICAgICAgIHk9Ii0wLjAyNTU1NTYxNCIKICAgICAgIGhlaWdodD0iMS4wNTExMTEyIj4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIwLjIyMTcwNjAxIgogICAgICAgICBpZD0iZmVHYXVzc2lhbkJsdXI0NDQwIiAvPgogICAgPC9maWx0ZXI+CiAgICA8ZmlsdGVyCiAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICBzdHlsZT0iY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOnNSR0IiCiAgICAgICBpZD0iZmlsdGVyNDQ0NiIKICAgICAgIHg9Ii0wLjAyMzIzMjg0NyIKICAgICAgIHdpZHRoPSIxLjA0NjQ2NTgiCiAgICAgICB5PSItMC4wMjQ4MTk1NDUiCiAgICAgICBoZWlnaHQ9IjEuMDQ5NjM5MSI+CiAgICAgIDxmZUdhdXNzaWFuQmx1cgogICAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICAgIHN0ZERldmlhdGlvbj0iMC4yMjIwOTQyOCIKICAgICAgICAgaWQ9ImZlR2F1c3NpYW5CbHVyNDQ0OCIgLz4KICAgIDwvZmlsdGVyPgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMS40IgogICAgIGlua3NjYXBlOmN4PSIxMzAuNTY4NjgiCiAgICAgaW5rc2NhcGU6Y3k9IjIwMS4zNDg0NSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0iZzQ0ODgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtcm90YXRpb249IjAiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTYwMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI4MzYiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiIC8+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNSI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MC4wNTQwMzQsLTg5LjA0MzUyMikiPgogICAgPGcKICAgICAgIGlkPSJnNDQ4OCIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDIuNjU1MDQ0MywwLDAsMi44NTQ2OTA3LC0xMTAuOTk1MTgsLTMyNi45MjY1MikiPgogICAgICA8ZWxsaXBzZQogICAgICAgICByeT0iMTYuMDM1OTI3IgogICAgICAgICByeD0iMTcuNTA1ODg0IgogICAgICAgICBjeT0iMTY0LjE2NTUxIgogICAgICAgICBjeD0iODAuNTc4NzIiCiAgICAgICAgIGlkPSJwYXRoMzQ3NCIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MC4zO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC4yNjQ5OTk5OTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxO2ZpbHRlcjp1cmwoI2ZpbHRlcjQzOTEpO2ltYWdlLXJlbmRlcmluZzphdXRvIiAvPgogICAgICA8cmVjdAogICAgICAgICB0cmFuc2Zvcm09InJvdGF0ZSgtNDIuODA4OTU1KSIKICAgICAgICAgcnk9IjAiCiAgICAgICAgIHk9IjE3NC41NTY0OSIKICAgICAgICAgeD0iLTY3LjM5ODc1OCIKICAgICAgICAgaGVpZ2h0PSIyLjE1MjIwNjQiCiAgICAgICAgIHdpZHRoPSIyOS4yNzk2NDgiCiAgICAgICAgIGlkPSJyZWN0NDQxMyIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MTtmaWxsOiNmZmZmMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjA7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MTtmaWx0ZXI6dXJsKCNmaWx0ZXI0NDQ2KSIgLz4KICAgICAgPHJlY3QKICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoLTEzOS4wMzQ0MikiCiAgICAgICAgIHJ5PSIwIgogICAgICAgICB5PSItNzMuMDUwOTQ5IgogICAgICAgICB4PSItMTgyLjk2MjUyIgogICAgICAgICBoZWlnaHQ9IjIuMTUyMjA2NCIKICAgICAgICAgd2lkdGg9IjI5LjI3OTY0OCIKICAgICAgICAgaWQ9InJlY3Q0NDEzLTMiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDojZmZmZjAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjE7ZmlsdGVyOnVybCgjZmlsdGVyNDQzOCkiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K".
8252
	#$conf["closeIcon"]="";
8253
	#$conf["valNotSend"],字串,如果選擇的選項數值為何,就不傳送表單.
8254
	#$conf["valNotSend"]="";
8255
	#$conf["newLineOption"],字串,"true"代表要建立換行的div選單元素,"false"代表要建立不換行的 span 元素,與設為"false".
8256
	#$conf["newLineOption"]="false";
8257
	#$conf["dataFormId"],字串,提供用於識別哪一張表單的data屬性名稱.
8258
	#$conf["dataFormId"]="";
8259
	#參考資料:
8260
	#無.
8261
	#備註:
8262
	#無.
8263
	*/
8264
	public static function fakeScrollingList(&$conf){
8265
 
8266
		#初始化要回傳的結果
8267
		$result=array();
8268
 
8269
		#取得當前執行的函數名稱
8270
		$result["function"]=__FUNCTION__;
8271
 
8272
		#如果沒有參數
8273
		if(func_num_args()==0){
8274
 
8275
			#設置執行失敗
8276
			$result["status"]="false";
8277
 
8278
			#設置執行錯誤訊息
8279
			$result["error"]="函數".$result["function"]."需要參數";
8280
 
8281
			#回傳結果
8282
			return $result;
8283
 
8284
			}#if end
8285
 
8286
		#取得參數
8287
		$result["argu"]=$conf;
8288
 
8289
		#如果 $conf 不為陣列
8290
		if(gettype($conf)!=="array"){
8291
 
8292
			#設置執行失敗
8293
			$result["status"]="false";
8294
 
8295
			#設置執行錯誤訊息
8296
			$result["error"][]="\$conf變數須為陣列形態";
8297
 
8298
			#如果傳入的參數為 null
8299
			if($conf===null){
8300
 
8301
				#設置執行錯誤訊息
8302
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
8303
 
8304
				}#if end
8305
 
8306
			#回傳結果
8307
			return $result;
8308
 
8309
			}#if end
8310
 
8311
		#如果有設置close icon
8312
		if(isset($conf["closeIcon"])){
8313
 
8314
			#另存路徑
8315
			$closeIcon=$conf["closeIcon"];
8316
 
8317
			#卸除不被 form::inputSelect 接受的參數
8318
			unset($conf["closeIcon"]);
8319
 
8320
			}#if end
8321
 
8322
		#反之
8323
		else{
8324
 
8325
			#用預設的 close icon
8326
			$closeIcon="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpvc2I9Imh0dHA6Ly93d3cub3BlbnN3YXRjaGJvb2sub3JnL3VyaS8yMDA5L29zYiIKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgd2lkdGg9IjEwNS43ODE3Mm1tIgogICBoZWlnaHQ9IjEwNS4zNDM0NG1tIgogICB2aWV3Qm94PSIwIDAgMTA1Ljc4MTcyIDEwNS4zNDM0NCIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnOCIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45MitkZXZlbCB1bmtub3duIgogICBzb2RpcG9kaTpkb2NuYW1lPSJjbG9zZUljb24uc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzMiI+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzMTUiCiAgICAgICBvc2I6cGFpbnQ9InNvbGlkIj4KICAgICAgPHN0b3AKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzAwMDAwMDtzdG9wLW9wYWNpdHk6MTsiCiAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgaWQ9InN0b3A0MzEzIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0MzkxIgogICAgICAgeD0iLTAuMDY4OTc3MTAzIgogICAgICAgd2lkdGg9IjEuMTM3OTU0MiIKICAgICAgIHk9Ii0wLjA3NTI5OTk5MyIKICAgICAgIGhlaWdodD0iMS4xNTA2Ij4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIxLjAwNjI1NDMiCiAgICAgICAgIGlkPSJmZUdhdXNzaWFuQmx1cjQzOTMiIC8+CiAgICA8L2ZpbHRlcj4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0NDM4IgogICAgICAgeD0iLTAuMDIyNjIyOTA0IgogICAgICAgd2lkdGg9IjEuMDQ1MjQ1OCIKICAgICAgIHk9Ii0wLjAyNTU1NTYxNCIKICAgICAgIGhlaWdodD0iMS4wNTExMTEyIj4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIwLjIyMTcwNjAxIgogICAgICAgICBpZD0iZmVHYXVzc2lhbkJsdXI0NDQwIiAvPgogICAgPC9maWx0ZXI+CiAgICA8ZmlsdGVyCiAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICBzdHlsZT0iY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOnNSR0IiCiAgICAgICBpZD0iZmlsdGVyNDQ0NiIKICAgICAgIHg9Ii0wLjAyMzIzMjg0NyIKICAgICAgIHdpZHRoPSIxLjA0NjQ2NTgiCiAgICAgICB5PSItMC4wMjQ4MTk1NDUiCiAgICAgICBoZWlnaHQ9IjEuMDQ5NjM5MSI+CiAgICAgIDxmZUdhdXNzaWFuQmx1cgogICAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICAgIHN0ZERldmlhdGlvbj0iMC4yMjIwOTQyOCIKICAgICAgICAgaWQ9ImZlR2F1c3NpYW5CbHVyNDQ0OCIgLz4KICAgIDwvZmlsdGVyPgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMS40IgogICAgIGlua3NjYXBlOmN4PSIxMzAuNTY4NjgiCiAgICAgaW5rc2NhcGU6Y3k9IjIwMS4zNDg0NSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0iZzQ0ODgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtcm90YXRpb249IjAiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTYwMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI4MzYiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiIC8+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNSI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MC4wNTQwMzQsLTg5LjA0MzUyMikiPgogICAgPGcKICAgICAgIGlkPSJnNDQ4OCIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDIuNjU1MDQ0MywwLDAsMi44NTQ2OTA3LC0xMTAuOTk1MTgsLTMyNi45MjY1MikiPgogICAgICA8ZWxsaXBzZQogICAgICAgICByeT0iMTYuMDM1OTI3IgogICAgICAgICByeD0iMTcuNTA1ODg0IgogICAgICAgICBjeT0iMTY0LjE2NTUxIgogICAgICAgICBjeD0iODAuNTc4NzIiCiAgICAgICAgIGlkPSJwYXRoMzQ3NCIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MC4zO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC4yNjQ5OTk5OTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxO2ZpbHRlcjp1cmwoI2ZpbHRlcjQzOTEpO2ltYWdlLXJlbmRlcmluZzphdXRvIiAvPgogICAgICA8cmVjdAogICAgICAgICB0cmFuc2Zvcm09InJvdGF0ZSgtNDIuODA4OTU1KSIKICAgICAgICAgcnk9IjAiCiAgICAgICAgIHk9IjE3NC41NTY0OSIKICAgICAgICAgeD0iLTY3LjM5ODc1OCIKICAgICAgICAgaGVpZ2h0PSIyLjE1MjIwNjQiCiAgICAgICAgIHdpZHRoPSIyOS4yNzk2NDgiCiAgICAgICAgIGlkPSJyZWN0NDQxMyIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MTtmaWxsOiNmZmZmMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjA7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MTtmaWx0ZXI6dXJsKCNmaWx0ZXI0NDQ2KSIgLz4KICAgICAgPHJlY3QKICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoLTEzOS4wMzQ0MikiCiAgICAgICAgIHJ5PSIwIgogICAgICAgICB5PSItNzMuMDUwOTQ5IgogICAgICAgICB4PSItMTgyLjk2MjUyIgogICAgICAgICBoZWlnaHQ9IjIuMTUyMjA2NCIKICAgICAgICAgd2lkdGg9IjI5LjI3OTY0OCIKICAgICAgICAgaWQ9InJlY3Q0NDEzLTMiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDojZmZmZjAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjE7ZmlsdGVyOnVybCgjZmlsdGVyNDQzOCkiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K";
8327
 
8328
			}#else end
8329
 
8330
		#如果有設置 $conf["valNotSend"]
8331
		if(isset($conf["valNotSend"])){
8332
 
8333
			#設置不傳送表單的js語法
8334
			$valNotSend=
8335
			"
8336
				//如果表單的數值為 ".$conf["valNotSend"]."
8337
				if(clickedValue==='".$conf["valNotSend"]."'){
8338
 
8339
					//結束動作
8340
					return true;
8341
 
8342
					}//if end
8343
			";
8344
 
8345
			}#if end
8346
 
8347
		#反之
8348
		else{
8349
 
8350
			#設為空值
8351
			$valNotSend="";
8352
 
8353
			}#else end
8354
 
8355
		#卸除不被 form::inputSelect 接受的參數
8356
		unset($conf["valNotSend"]);
8357
 
8358
		#檢查參數
8359
		#函式說明:
8360
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
8361
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
8362
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
8363
		#$result["function"],當前執行的函式名稱.
8364
		#$result["argu"],設置給予的參數.
8365
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
8366
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
8367
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
8368
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
8369
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
8370
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
8371
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
8372
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
8373
		#必填寫的參數:
8374
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
8375
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
8376
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
8377
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
8378
		#可以省略的參數:
8379
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
8380
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("name","sendValue");
8381
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
8382
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","array");
8383
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
8384
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
8385
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
8386
		$conf["variableCheck::checkArguments"]["canNotBeEmpty"]=array("name","sendValue");
8387
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
8388
		#$conf["canBeEmpty"]=array();
8389
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
8390
		$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("outputValue","defaultValue","newLineOption","formAction","hiddenVar","hiddenVarValue");
8391
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
8392
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("outputValue","defaultValue","newLineOption","formAction","hiddenVar","hiddenVarValue","comment","class","readOnly","dataFormId");
8393
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
8394
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array","string","string","string","array","array","string","string","string","string");
8395
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
8396
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("\$conf[\"sendValue\"]",null,"false",null,null,null,null,"__qbpwcf_inputSelect","false",null);
8397
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
8398
		#$conf["disallowAllSkipableVarIsEmpty"]="";
8399
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
8400
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
8401
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
8402
		$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("hiddenVar","hiddenVarValue");
8403
		#參考資料:
8404
		#array_keys=>http://php.net/manual/en/function.array-keys.php
8405
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
8406
		unset($conf["variableCheck::checkArguments"]);
8407
 
8408
		#如果檢查失敗
8409
		if($checkArguments["status"]==="false"){
8410
 
8411
			#設置執行失敗
8412
			$result["status"]="false";
8413
 
8414
			#設置執行錯誤訊息
8415
			$result["error"]=$checkArguments;
8416
 
8417
			#回傳結果
8418
			return $result;
8419
 
8420
			}#if end
8421
 
8422
		#如果檢查失敗
8423
		if($checkArguments["passed"]==="false"){
8424
 
8425
			#設置執行失敗
8426
			$result["status"]="false";
8427
 
8428
			#設置執行錯誤訊息
8429
			$result["error"]=$checkArguments;
8430
 
8431
			#回傳結果
8432
			return $result;
8433
 
8434
			}#if end
8435
 
8436
		#設置傳送表單的參數
8437
		$sendForm="";
8438
 
8439
		#如果有設置 $conf["formAction"]
8440
		if(isset($conf["formAction"])){
8441
 
8442
			#預設隱藏的變數為""
8443
			$hiddenVar="";
8444
 
8445
			#如果有設置隱藏的參數 hiddenVar 與 hiddenVarValue
8446
			if(isset($conf["hiddenVar"]) && isset($conf["hiddenVarValue"])){
8447
 
8448
				#加密要傳送的隱藏表單資料
8449
				$hiddenVar=base64_encode(json_encode(array("hiddenVar"=>$conf["hiddenVar"],"hiddenVarValue"=>$conf["hiddenVarValue"])));
8450
 
8451
				}#if end
8452
 
8453
			#設置傳送表單的參數
8454
			$sendForm=
8455
			"
8456
			//馬上傳送表單
8457
			window.form_fakeScrollingList_sendForm_".$conf["name"]."('".$conf["name"]."',oriOptionsInfo.sendValue[clickedNo],'".$conf["formAction"]."','".$hiddenVar."');
8458
			";
8459
 
8460
			}#if end
8461
 
8462
		#儲存選項呈現的元素變數
8463
		$optionOutEle="";
8464
 
8465
		#如果沒有指定預設的選項
8466
		if(!isset($conf["defaultValue"])){
8467
 
8468
			#預設為第一個選項的內容
8469
			$conf["defaultValue"]=$conf["sendValue"][0];
8470
 
8471
			}#if end
8472
 
8473
		#取得預設選項對應的顯示內容
8474
		#函式說明:
8475
		#檢查一個數值是否與陣列裏面的元素相同,找到一個相符合的元素後就會停止搜尋.
8476
		#回傳的結果:
8477
		#$result["status"],"true"表示執行正確,"false"表示執行錯誤.
8478
		#$result["founded"],"true"表示有找到相同的,"false"表示沒有找到相同的.
8479
		#$result["error"],錯誤訊息
8480
		#$result["function"],當前執行的函數名稱
8481
		#$result["argv"],使用的參數
8482
		#$result["equalVarName"],相等的變數名稱或key.
8483
		#$result["equalVarValue"],相等的變數數值內容.
8484
		#必填參數:
8485
		$conf["search::getEqualVar"]["conditionElement"]=$conf["defaultValue"];#條件元素,要等於的元素內容.
8486
		$conf["search::getEqualVar"]["compareElements"]=$conf["sendValue"];#要比對的陣列變數內容.
8487
		$getEqualVar=search::getEqualVar($conf["search::getEqualVar"]);
8488
		unset($conf["search::getEqualVar"]);
8489
 
8490
		#如果執失敗
8491
		if($getEqualVar["status"]==="false"){
8492
 
8493
			#設置執行失敗
8494
			$result["status"]="false";
8495
 
8496
			#設置執行錯誤訊息
8497
			$result["error"]=$getEqualVar;
8498
 
8499
			#回傳結果
8500
			return $result;
8501
 
8502
			}#if end
8503
 
8504
		#如果沒有對應的選項
8505
		if($getEqualVar["founded"]==="false"){
8506
 
8507
			#設置執行失敗
8508
			$result["status"]="false";
8509
 
8510
			#設置執行錯誤訊息
8511
			$result["error"]=$getEqualVar;
8512
 
8513
			#回傳結果
8514
			return $result;
8515
 
8516
			}#if end
8517
 
8518
		#取得預設選項的顯示內容
8519
		$defaultShowVal=$conf["outputValue"][$getEqualVar["equalVarName"]];
8520
 
8521
		#fake scrolling list data var name
8522
		$fakeScrollingListDataVar="qbpwcf-fakeScrollingList-options";
8523
 
8524
		#判斷 $conf["newLineOption"] 參數的內容
8525
		switch($conf["newLineOption"]){
8526
 
8527
			#如果要建立 div 選項
8528
			case "true":
8529
 
8530
				#函式說明:
8531
				#<div>區塊,裡面可以指定css的class樣式,可以指定提示文字.
8532
				#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.
8533
				#$result["functin"],字串,當前函數的名稱.
8534
				#$result["error"],陣列,錯訊訊息.
8535
				#$result["content"],字串,含有<div>標籤的內容.
8536
				#必填參數:
8537
				#$conf["contentArray"],字串陣列,要放入的內容陣列.
8538
				$conf["css::divSection"]["contentArray"]=array($defaultShowVal);
8539
				#可省略參數
8540
				#$conf["id"],字串,div區塊的id.
8541
				$conf["css::divSection"]["id"]=$conf["name"];
8542
				#$conf["styleAttr"],字串陣列,給div區段要套用的style樣式屬性.
8543
				#$conf["styleAttr"]=array();
8544
				#$conf["styleVal"],字串陣列,給div區段要套用的style樣式數值.
8545
				#$conf["styleVal"]=array();
8546
				#$conf["class"],字串,div區段要套用的css樣式.
8547
				$conf["css::divSection"]["class"]=$conf["class"];
8548
				#$conf["title"],陣列,滑鼠移到上面時要顯示的內容,每個元素代表一列內容.
8549
				#$conf["title"]=array();
8550
				#$conf["oneScreenSize"],字串,div區塊是否要占一個螢幕的大小,預設為"false"不設定,"true"為設定成一個螢幕的大小.
8551
				#$conf["oneScreenSize"]="false";
8552
				#$conf["textAlignCenter"],字串,div區塊是否要置中,預設為$conf["oneScreenSize"]的值,"false"為不置中,"true"代表要置中.
8553
				#$conf["textAlignCenter"]="";
8554
				#$conf["css::divSection"["data"],字串陣列,每個要設置的屬性data內容,例如array("option1"=>"A","option2"=>"B"),預設不使用.
8555
				$conf["css::divSection"]["data"]=array($fakeScrollingListDataVar=>base64_encode(json_encode(array("outputValue"=>$conf["outputValue"],"sendValue"=>$conf["sendValue"],"defaultValue"=>$conf["defaultValue"],"defaultShowVal"=>$defaultShowVal))));
8556
 
8557
				#如果有設置 $conf["dataFormId"]
8558
				if(isset($conf["dataFormId"])){
8559
 
8560
					#設置 data-form-id 屬性
8561
					$conf["css::divSection"]["data"]["form-id"]=$conf["dataFormId"];
8562
 
8563
					}#if end
8564
 
8565
				$divSection=css::divSection($conf["css::divSection"]);
8566
				unset($conf["css::divSection"]);
8567
 
8568
				#如果建立div區段失敗
8569
				if($divSection["status"]==="false"){
8570
 
8571
					#設置執行失敗
8572
					$result["status"]="false";
8573
 
8574
					#設置執行錯誤訊息
8575
					$result["error"]=$divSection;
8576
 
8577
					#回傳結果
8578
					return $result;
8579
 
8580
					}#if end
8581
 
8582
				#取得div的內容
8583
				$optionOutEle=$optionOutEle.$divSection["content"];
8584
 
8585
				#跳出switch
8586
				break;
8587
 
8588
			#如果要建立 span 選項
8589
			case "false":
8590
 
8591
				#函式說明:
8592
				#<span>區塊,裡面可以指定css的class樣式,可以指定提示文字,若要使用移動的css樣式,請改用divSection函數.
8593
				#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.
8594
				#$result["functin"],字串,當前函數的名稱.
8595
				#$result["error"],陣列,錯訊訊息.
8596
				#$result["content"],字串,含有<span>標籤的內容.
8597
				#必填參數:
8598
				#$conf["contentArray"],字串陣列,要放入的內容陣列.
8599
				$conf["css::spanSection"]["contentArray"]=array($defaultShowVal);
8600
				#可省略參數
8601
				#$conf["id"],字串,span區塊的id.
8602
				$conf["css::spanSection"]["id"]=$conf["name"];
8603
				#$conf["class"],字串,span區段要套用的css樣式.
8604
				$conf["css::spanSection"]["class"]=$conf["class"];
8605
				#$conf["title"],陣列,滑鼠移到上面時要顯示的內容,每個元素代表一列內容
8606
				#$conf["title"]=array();
8607
				#$conf["css::spanSection"]["data"],字串陣列,每個data屬性名稱為數值內容,例如array("a"=>"A","b"=>"B")
8608
				$conf["css::spanSection"]["data"]=array($fakeScrollingListDataVar=>base64_encode(json_encode(array("outputValue"=>$conf["outputValue"],"sendValue"=>$conf["sendValue"],"defaultValue"=>$conf["defaultValue"],"defaultShowVal"=>$defaultShowVal))));
8609
 
8610
				#如果有設置 $conf["dataFormId"]
8611
				if(isset($conf["dataFormId"])){
8612
 
8613
					#設置 data-form-id 屬性
8614
					$conf["css::spanSection"]["data"]["form-id"]=$conf["dataFormId"];
8615
 
8616
					}#if end
8617
 
8618
				$spanSection=css::spanSection($conf["css::spanSection"]);
8619
				unset($conf["css::spanSection"]);
8620
 
8621
				#如果建立span區段失敗
8622
				if($spanSection["status"]==="false"){
8623
 
8624
					#設置執行失敗
8625
					$result["status"]="false";
8626
 
8627
					#設置執行錯誤訊息
8628
					$result["error"]=$spanSection;
8629
 
8630
					#回傳結果
8631
					return $result;
8632
 
8633
					}#if end
8634
 
8635
				#取得span的內容
8636
				$optionOutEle=$optionOutEle.$spanSection["content"];
8637
 
8638
				#跳出switch
8639
				break;
8640
 
8641
			#其他數值的內容
8642
			default :
8643
 
8644
				#設置不換行
8645
				$conf["newLineOption"]="false";
8646
 
8647
				#跳出switch
8648
				break;
8649
 
8650
			}#switch end
8651
 
8652
			#如果有設置提示文字
8653
			if(isset($conf["comment"])){
8654
 
8655
				#設置提示文字
8656
				#函式說明:
8657
				#<div>區塊,裡面可以指定css的class樣式,可以指定提示文字.
8658
				#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.
8659
				#$result["functin"],字串,當前函數的名稱.
8660
				#$result["error"],陣列,錯訊訊息.
8661
				#$result["content"],字串,含有<div>標籤的內容.
8662
				#必填參數:
8663
				#$conf["contentArray"],字串陣列,要放入的內容陣列.
8664
				$conf["css::divSection"]["contentArray"]=array($conf["comment"]);
8665
				#可省略參數
8666
				#$conf["id"],字串,div區塊的id.
8667
				$conf["css::divSection"]["id"]=$conf["name"]."_comment";
8668
				#$conf["styleAttr"],字串陣列,給div區段要套用的style樣式屬性.
8669
				#$conf["styleAttr"]=array();
8670
				#$conf["styleVal"],字串陣列,給div區段要套用的style樣式數值.
8671
				#$conf["styleVal"]=array();
8672
				#$conf["class"],字串,div區段要套用的css樣式.
8673
				#$conf["class"]="";
8674
				#$conf["title"],陣列,滑鼠移到上面時要顯示的內容,每個元素代表一列內容.
8675
				#$conf["title"]=array();
8676
				#$conf["oneScreenSize"],字串,div區塊是否要占一個螢幕的大小,預設為"false"不設定,"true"為設定成一個螢幕的大小.
8677
				#$conf["oneScreenSize"]="false";
8678
				#$conf["textAlignCenter"],字串,div區塊是否要置中,預設為$conf["oneScreenSize"]的值,"false"為不置中,"true"代表要置中.
8679
				#$conf["textAlignCenter"]="";
8680
				#$conf["css::divSection"["data"],字串陣列,每個要設置的屬性data內容,例如array("option1"=>"A","option2"=>"B"),預設不使用.
8681
				#$conf["css::divSection"]["data"]=array($fakeScrollingListDataVar=>base64_encode(json_encode(array("outputValue"=>$conf["outputValue"],"sendValue"=>$conf["sendValue"],"defaultValue"=>$conf["defaultValue"],"defaultShowVal"=>$defaultShowVal))));
8682
				$divSection=css::divSection($conf["css::divSection"]);
8683
				unset($conf["css::divSection"]);
8684
 
8685
				#如果建立div區段失敗
8686
				if($divSection["status"]==="false"){
8687
 
8688
					#設置執行失敗
8689
					$result["status"]="false";
8690
 
8691
					#設置執行錯誤訊息
8692
					$result["error"]=$divSection;
8693
 
8694
					#回傳結果
8695
					return $result;
8696
 
8697
					}#if end
8698
 
8699
				#取得div的內容
8700
				$optionOutEle=$divSection["content"].$optionOutEle;
8701
 
8702
				}#if end
8703
 
8704
			#設置語法內容
8705
			$result["content"]=&$optionOutEle;
8706
 
8707
			#取得表單的名稱
8708
			$name=$conf["name"];
8709
 
8710
			#如果 readOnly
8711
			if($conf["readOnly"]==="true"){
8712
 
8713
				#設置執行正常
8714
				$result["status"]="true";
8715
 
8716
				#回傳結果
8717
				return $result;				
8718
 
8719
				}#if end
8720
 
8721
			#函式說明:
8722
			#將要執行的script語法透過該函式執行(會在程式外層用<script></script>包起來).
8723
			#回傳結果:
8724
			#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
8725
			#$result["error"],錯誤訊息陣列
8726
			#$result["function"],當前執行的函數名稱
8727
			#$result["content"],要執行的javaScript語法
8728
			#必填參數:
8729
			#$conf["script"],字串,要執行的javaScript語法.
8730
			$conf["javaScript::toScript"]["script"]="";
8731
			#可省略參數:
8732
			#$conf["onReady"],字串,是否要在網頁完全載入後再執行,"false"為不等載入完就先執行,預設為"true"要等載入完再執行.
8733
			#$conf["onReady"]="true";
8734
			#$conf["globalJs"],字串陣列,為要放入<script>標籤的js全域變數.
8735
			$conf["javaScript::toScript"]["globalJs"][]=
8736
			"
8737
			var ".$name."=document.getElementById('".$name."');
8738
 
8739
			//將下拉式選單綁定'click'事件,觸發時要執行物件__qbpwcf_scrollingList的函數
8740
			".$name.".addEventListener('click',function(event){
8741
 
8742
				//debug
8743
				console.log(event);
8744
 
8745
				//取消預設點擊的效果
8746
				event.preventDefault();
8747
 
8748
				//取得下拉式選單內容
8749
				var inputSelect=event.target;
8750
 
8751
				//debug
8752
				//console.log(inputSelect);
8753
 
8754
				//讓下拉式選單趕緊隱藏
8755
				inputSelect.style.opacity='0';
8756
 
8757
				//解析選項的資訊
8758
				var optionsInfo=JSON.parse(atob(inputSelect.dataset.qbpwcfFakescrollinglistOptions));
8759
 
8760
				//取得選項的數目
8761
				var opLen=optionsInfo.sendValue.length;
8762
 
8763
				//新增覆蓋全螢幕的div
8764
				var root=document.createElement('div');
8765
 
8766
				//設置最外層div的id
8767
				root.setAttribute('id','scrollingListRootDiv');
8768
 
8769
				//設置最外層div的樣式
8770
				root.setAttribute('class','__qbpwcf_scrollingListRootDiv');
8771
 
8772
				//新增為了將不足divForMiddle可見高度的選項們置中的div
8773
				var divForMiddle=document.createElement('div');
8774
 
8775
				//設置為了上下置中的div樣式
8776
				divForMiddle.setAttribute('class','__qbpwcf_scrollingListOutterDiv');
8777
 
8778
				//初始化記錄選擇的選項index
8779
				var selectedOptionIndex=-1;
8780
 
8781
				//針對每個選項
8782
				for(var i=0;i<opLen;i++){
8783
 
8784
					//debug
8785
					//console.log(i);
8786
 
8787
					//debug
8788
					//console.log(optionsInfo.sendValue[i]);
8789
 
8790
					//取得選項實際數值
8791
					var opVal=optionsInfo.sendValue[i];
8792
 
8793
					//debug
8794
					//console.log(optionsInfo.showValue[i]);
8795
 
8796
					//取得選項顯示名稱
8797
					//var opShow=optionsInfo.sendValue[i];
8798
					var opShow=optionsInfo.outputValue[i];
8799
 
8800
					//debug
8801
					//console.log(opVal+'=>'+opShow);
8802
 
8803
					//建立選項的div
8804
					var opDiv=document.createElement('div');
8805
 
8806
					//讓選項上下置中
8807
					opDiv.style.paddingTop='15px';
8808
 
8809
					//設置選項div的class
8810
					opDiv.setAttribute('class','__qbpwcf_inputSelect __qbpwcf_inputSelect_hover');
8811
 
8812
					//設置選項div的數值內容
8813
					opDiv.setAttribute('data-val',opVal);
8814
 
8815
					//設置選項div的編號(從0開始)
8816
					opDiv.setAttribute('data-no',i);
8817
 
8818
					//設置裡面的文字要換行的時候改用...表示
8819
					opDiv.style.whiteSpace='nowrap';
8820
					opDiv.style.width='100%';					
8821
					opDiv.style.overflow='hidden';
8822
					opDiv.style.textOverflow='ellipsis';
8823
 
8824
					//偶數欄位
8825
					if(i%2===0)
8826
					{
8827
						//設置選項div底色為藍色
8828
						opDiv.style.backgroundColor='CCCCFF';
8829
					}
8830
					//反之為奇數欄位
8831
					else
8832
					{
8833
						//設置選項div底色為紅色
8834
						opDiv.style.backgroundColor='FFCCCC';
8835
					}
8836
 
8837
					//解析選項的資訊
8838
					var oriOptionsInfo=JSON.parse(atob(inputSelect.dataset.qbpwcfFakescrollinglistOptions));
8839
 
8840
					//若該選項為當前選擇的項目
8841
					if(oriOptionsInfo.sendValue[i]===inputSelect.innerText){
8842
 
8843
						//debug
8844
						//console.log('第'+opDiv.attributes['data-no'].value+'個選項為現有選擇的項目');
8845
 
8846
						//標記該選項為原先所選擇的項目
8847
						opDiv.setAttribute('data-selected','true');
8848
 
8849
						//記錄原先所選擇的項目的index
8850
						var selectedOptionIndex=parseInt(opDiv.attributes['data-no'].value);
8851
 
8852
						}//if end
8853
 
8854
					//建立選項名稱文字節點
8855
					var textnode = document.createTextNode(opShow);
8856
 
8857
					//將文字放進選項的div
8858
					opDiv.appendChild(textnode);
8859
 
8860
					//將選項放進為了上下左右置中的div
8861
					divForMiddle.appendChild(opDiv);
8862
 
8863
					}//for end
8864
 
8865
				//新增為了上下左右置中的div
8866
				var divForCenterMiddle=document.createElement('div');
8867
 
8868
				//設置為了內部元素都上下左右置中的div樣式
8869
				divForCenterMiddle.setAttribute('class','__qbpwcf_scrollingListInnerDiv');
8870
 
8871
				//將上下置中的選項們放進可以上下左右置中的div
8872
				divForCenterMiddle.appendChild(divForMiddle);
8873
 
8874
				//將選項放進最外層的div
8875
				root.appendChild(divForCenterMiddle);
8876
 
8877
				//將整個div放到body裡面
8878
				document.body.appendChild(root);
8879
 
8880
				//調整滾軸表單的置中效果
8881
				scrollingListMiddleFunction();
8882
 
8883
				//取得所有選項
8884
				var allOptions=document.getElementsByClassName('__qbpwcf_inputSelect_hover');
8885
 
8886
				//debug
8887
				//console.log(allOptions);
8888
 
8889
				//移動滾軸讓原本選擇的選項盡量置中
8890
 
8891
				//原先選擇的項目索引
8892
				//console.log(selectedOptionIndex);
8893
 
8894
				//opLen 選項的數目
8895
				//console.log(opLen);
8896
 
8897
				//取得選單的滾軸上端位置
8898
				//var scrollingListScrollTop=document.getElementById('scrollingListRootDiv').children[0].scrollTop;
8899
 
8900
				//debug
8901
				//console.log(scrollingListScrollTop);
8902
 
8903
				//取得選單的滾軸上端位置最大值
8904
				var scrollingListScrollTopMax=document.getElementById('scrollingListRootDiv').children[0].scrollTopMax;
8905
 
8906
				//debug
8907
				//console.log(scrollingListScrollTopMax);
8908
 
8909
				//取得選單的可見高度
8910
				//var scrollingListViewHeight=document.getElementById('scrollingListRootDiv').children[0].clientHeight;
8911
 
8912
				//debug
8913
				//console.log(scrollingListViewHeight);
8914
 
8915
				//取得選單含滾軸的總高度
8916
				//var scrollingListScrollHeight=document.getElementById('scrollingListRootDiv').children[0].scrollHeight;
8917
 
8918
				//debug
8919
				//console.log(scrollingListScrollHeight);
8920
 
8921
				//debug
8922
				//console.log(selectedOptionIndex);
8923
 
8924
				//如果有滾軸
8925
				if(scrollingListScrollTopMax!==0){
8926
 
8927
					//如果是第一個選項
8928
					if(selectedOptionIndex===0){
8929
 
8930
						//滾軸拉到最上面
8931
						document.getElementById('scrollingListRootDiv').children[0].scrollTop=0;
8932
 
8933
						//debug
8934
						//console.log('scrollingListScrollTop=0');
8935
 
8936
						}//if end
8937
 
8938
					//如果之前選擇的選項索引剛好等於 opLen/2
8939
					else if(((selectedOptionIndex+1)===(opLen/2))){
8940
 
8941
						//debug
8942
						//console.log('之前選擇的選項索引剛好等於一半');
8943
 
8944
						//取得新的滾軸高度
8945
						var newScrollTop=scrollingListScrollTopMax/2;
8946
 
8947
						//設置滾軸的上端位置
8948
						document.getElementById('scrollingListRootDiv').children[0].scrollTop=newScrollTop;
8949
 
8950
						//debug
8951
						//console.log('scrollingListScrollTop='+newScrollTop.toString());
8952
 
8953
						}//if end
8954
 
8955
					//如果之前選擇的選項索引小於半
8956
					else if((selectedOptionIndex+1)<(opLen/2)){
8957
 
8958
						//debug
8959
						//console.log('之前選擇的選項索引未過半,加幾個'+(selectedOptionIndex+1).toString());
8960
 
8961
						//取得新的滾軸高度
8962
						var newScrollTop=scrollingListScrollTopMax/opLen*selectedOptionIndex+1;
8963
 
8964
						//設置滾軸的上端位置
8965
						document.getElementById('scrollingListRootDiv').children[0].scrollTop=newScrollTop;
8966
 
8967
						//debug
8968
						//console.log('scrollingListScrollTop='+newScrollTop.toString());
8969
 
8970
						}//if end
8971
 
8972
					//如果之前選擇的選項索引過半
8973
					else if((selectedOptionIndex+1)>(opLen/2)){
8974
 
8975
						//debug
8976
						//console.log('之前選擇的選項索引過半,減幾個'+(opLen-selectedOptionIndex-1).toString());
8977
 
8978
						//取得新的滾軸高度
8979
						var newScrollTop=scrollingListScrollTopMax-scrollingListScrollTopMax/opLen*(opLen-selectedOptionIndex-1);
8980
 
8981
						//設置滾軸的上端位置
8982
						document.getElementById('scrollingListRootDiv').children[0].scrollTop=newScrollTop;
8983
 
8984
						//debug
8985
						//console.log('scrollingListScrollTop='+newScrollTop.toString());
8986
 
8987
						}//if end
8988
 
8989
					//如果是最後一個選項
8990
					else if(selectedOptionIndex===opLen){
8991
 
8992
						//如果是最後一個選項
8993
						document.getElementById('scrollingListRootDiv').children[0].scrollTop=scrollingListScrollTopMax;
8994
 
8995
						//debug
8996
						//console.log('scrollingListScrollTop='+scrollingListScrollTopMax);
8997
 
8998
						}//if end
8999
 
9000
					//不應該跑到的地方
9001
					else{
9002
 
9003
						//debug
9004
						console.log('error occur!');
9005
 
9006
						}//else end
9007
 
9008
					}//if end
9009
 
9010
				//針對每個選項
9011
				for(var i=0;i<allOptions.length;i++){
9012
 
9013
					//綁定所有選項的 'click' 事件
9014
					allOptions[i].addEventListener('click',function(event){
9015
 
9016
						//debug
9017
						//console.log(event);
9018
 
9019
						//取得點擊到的選項
9020
						var clickedOption=event.target;
9021
 
9022
						//debug
9023
						//console.log(clickedOption);
9024
 
9025
						//取得點擊到的選項數值
9026
						var clickedValue=clickedOption.attributes['data-val'].value;
9027
 
9028
						//debug
9029
						//console.log(clickedValue);
9030
 
9031
						//取得點擊到的選項編號
9032
						var clickedNo=clickedOption.attributes['data-no'].value;
9033
 
9034
						//debug
9035
						//console.log(clickedNo);
9036
 
9037
						//取得點擊到的選項名稱
9038
						var clickedName=clickedOption.innerHTML;
9039
 
9040
						//debug
9041
						//console.log(clickedName);
9042
 
9043
						//解析選項的資訊
9044
						var oriOptionsInfo=JSON.parse(atob(inputSelect.dataset.qbpwcfFakescrollinglistOptions));
9045
 
9046
						//取得顯示元素
9047
						var ".$name."=document.getElementById('".$name."');
9048
 
9049
						//更新選取的選項數值顯示內容
9050
						".$name.".innerText=oriOptionsInfo.outputValue[clickedNo];
9051
 
9052
						//取消透明效果
9053
						".$name.".style.opacity='unset';
9054
 
9055
						//取得要移除 scrolling list 的 div
9056
						var divToDel=document.getElementById('scrollingListRootDiv');
9057
 
9058
						//debug
9059
						//console.log(divTodel);
9060
 
9061
						//移除 scrolling list div
9062
						divToDel.remove();
9063
 
9064
						//復原下拉式選單
9065
						inputSelect.style.opacity='unset';
9066
 
9067
						".$valNotSend."
9068
 
9069
						".$sendForm."
9070
 
9071
						});//function end
9072
 
9073
					}//for end
9074
 
9075
					//建立 close icon
9076
					window.form_fakeScrollingList_closeIcon_".$conf["name"]."(".$name.");
9077
				});
9078
			";
9079
			#$conf["jsFunciton"],字串陣列,為要放入<script>標籤的js函數.
9080
			$conf["javaScript::toScript"]["jsFunciton"][]=
9081
			"
9082
			//馬上傳送表單,key代表要傳送的元素名稱,val代表元素對應的數值內容,rev代表要傳送到哪個地方.
9083
			window.form_fakeScrollingList_sendForm_".$conf["name"]."=function(key,val,rev,hidvar){
9084
 
9085
				//debug
9086
				console.log('prepare send form');
9087
 
9088
				//new XMLHttpRequest
9089
				xmlhttp=new XMLHttpRequest();
9090
 
9091
				//set response type to html document
9092
				xmlhttp.responseType='document';
9093
 
9094
				//當運行狀態改變時
9095
				xmlhttp.onreadystatechange=function(){
9096
 
9097
					//如果狀態為4且response code為200
9098
					if(xmlhttp.readyState==4 && xmlhttp.status==200){
9099
 
9100
						//將回應進行處理
9101
						res=xmlhttp.response;
9102
 
9103
						//debug
9104
						console.log(res);
9105
						console.log('url:'+res.URL);
9106
						console.log('title:'+res.title);
9107
 
9108
						//將回應刷新到當前頁面
9109
 
9110
						//no use?
9111
						stateObj={};
9112
 
9113
						//取得新 title
9114
						title=res.title;
9115
 
9116
						//取得新 url
9117
						newUrl=res.URL;
9118
 
9119
						//更新網頁標題與網址
9120
						//參考資料:https://developer.mozilla.org/en-US/docs/Web/API/History_API
9121
						history.pushState(stateObj, title, newUrl);
9122
 
9123
						//開新文件
9124
						document.open('text/html',true);
9125
 
9126
						//寫入取得的完整回應
9127
						document.write(res.all[0].outerHTML);
9128
 
9129
						//結束輸出
9130
						document.close();
9131
 
9132
						}//if end
9133
 
9134
					}//function end
9135
 
9136
				//建立表單物件
9137
				var formData = new FormData();
9138
 
9139
				//新增表單的名稱與對應的數值
9140
				formData.append(key,val);
9141
 
9142
				//如果有隱藏的表單變數
9143
				if(hidvar!==''){
9144
 
9145
					//解析隱藏的表單變數
9146
					hidvar=JSON.parse(atob(hidvar));
9147
 
9148
					//另存隱藏變數的名稱
9149
					hiddenVar=hidvar.hiddenVar;
9150
 
9151
					//另存隱藏變數對應的數值內容
9152
					hiddenVarValue=hidvar.hiddenVarValue;
9153
 
9154
					//取得隱藏變數的數量
9155
					hiddenVarCount=hiddenVar.length;
9156
 
9157
					//針對每個隱藏的表單變數
9158
					for(i=0;i<hiddenVarCount;i++){
9159
 
9160
						//新增表單隱藏變數的名稱與對應的數值
9161
						formData.append(hiddenVar[i],hiddenVarValue[i]);
9162
 
9163
						}//for end
9164
 
9165
					}//if end
9166
 
9167
				//用 post 傳送到 rev
9168
				xmlhttp.open('POST',rev);
9169
 
9170
				//set ajax header
9171
				xmlhttp.setRequestHeader('X-Requested-With','XMLHttpRequest');
9172
 
9173
				//傳送數值
9174
				xmlhttp.send(formData);
9175
 
9176
				//debug
9177
				console.log('form sended');
9178
 
9179
				}//function sendForm end
9180
 
9181
			//關閉 list 的按鈕與事件
9182
			window.form_fakeScrollingList_closeIcon_".$conf["name"]."=function(sectionId){
9183
 
9184
				//debug
9185
				console.log(sectionId);
9186
 
9187
				//建立 close icon
9188
				var closeIcon = document.createElement('img');
9189
 
9190
				//取得顯示項目的元素id
9191
				closeIcon.sectionId=sectionId;
9192
 
9193
				//設置 close icon 的樣式
9194
				closeIcon.style['position']='fixed';
9195
				closeIcon.style['top']='15%';
9196
				closeIcon.style['left']='85%';
9197
				closeIcon.style['width']='5%';
9198
				closeIcon.style['min-width']='30px';
9199
				closeIcon.style['max-width']='50px';
9200
				closeIcon.style['cursor']='pointer';
9201
 
9202
				//設置 close icon img 的屬性
9203
				closeIcon.src='".$closeIcon."';
9204
 
9205
				//設置 close icon img 的id
9206
				closeIcon.setAttribute('id','qbpwcfScrollingListCloseIcon');
9207
 
9208
				//取得 scrollingList 的 root div
9209
				var slrd=document.getElementById('scrollingListRootDiv');
9210
 
9211
				//將 close icon outer div 放到 scrollingList 的 root div 裡面
9212
				slrd.appendChild(closeIcon);
9213
 
9214
				//取得 close icon img
9215
				var closeIcon=document.getElementById('qbpwcfScrollingListCloseIcon');
9216
 
9217
				//新增 close icon img 的點擊事件
9218
				closeIcon.addEventListener('click',function(){
9219
 
9220
					//取得要移除 scrolling list 的 div
9221
					var divToDel=document.getElementById('scrollingListRootDiv');
9222
 
9223
					//debug
9224
					//console.log(divTodel);
9225
 
9226
					//移除 scrolling list div
9227
					divToDel.remove();
9228
 
9229
					//debug
9230
					console.log(closeIcon.sectionId);
9231
 
9232
					//取得顯示元素,移除透明效果,顯示數值
9233
					closeIcon.sectionId.style.opacity='unset';
9234
 
9235
					});
9236
 
9237
				}//function closeIcon end
9238
			";
9239
			#參考資料:
9240
			#http://stackoverflow.com/questions/9899372/pure-javascript-equivalent-to-jquerys-ready-how-to-call-a-function-when-the
9241
			$toScript=javaScript::toScript($conf["javaScript::toScript"]);
9242
			unset($conf["javaScript::toScript"]);
9243
 
9244
			#如果建立 script 失敗
9245
			if($toScript["status"]==="false"){
9246
 
9247
				#設置執行失敗
9248
				$result["status"]="false";
9249
 
9250
				#設置執行錯誤訊息
9251
				$result["error"]=$toScript;
9252
 
9253
				#回傳結果
9254
				return $result;
9255
 
9256
				}#if end
9257
 
9258
			#傳接 js
9259
			$result["content"]=$result["content"].$toScript["content"];
9260
 
9261
			#設置執行正常
9262
			$result["status"]="true";
9263
 
9264
			#回傳結果
9265
			return $result;
9266
 
9267
		}#funciton fakeScrollingList end
9268
 
9269
	/*
9270
	#函式說明:
9271
	#建立含有分群功能的下拉式選單
9272
	#回傳結果:
9273
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
9274
	#$result["error"],錯誤訊息陣列.
9275
	#$result["content"],語法.
9276
	#必填參數:
9277
	#$conf["option"][$group][$optionDisplayName]=$autualVal,二、三維字串陣列,代表$group群組的選項$optionDisplayName實際上傳送的內容為$autualVal;若為$conf["option"][$option]=$autualVal,則代表無群組的選項$option值為$autualVal.
9278
	$conf["option"][][]="";
9279
	#可省略參數:
9280
	#$conf["name"],字串,選單用於傳送的名稱,預設為"pullDownList[]".
9281
	#$conf["name"]="pullDownList[]";
9282
	#$conf["id"],字串,元素id,預設跟$conf["name"]一樣.
9283
	#$conf["id"]="pullDownList[]";
9284
	#$conf["default"],字串陣列,代表哪個群組的選項是預設要選取的,$conf["default"]=array("g1","v1")代表g1群組的v1選擇為預設值;$conf["default"]=array("o1")代表選項顯示為o1者為預設的選項.
9285
	#$conf["default"]=array($group,$optionDisplayName);
9286
	#$conf["class"],字串陣列,代表要使用哪些css的class.
9287
	#$conf["class"]=array();
9288
	#$conf["style"],二維字串陣列,代表要使用哪些css style,例如$conf["style"]["color"]="black",就代表使用"color"屬性,屬性值為"black".
9289
	#$conf["style"]["attr"]="";
9290
	#$conf["notSelectedText"],一維陣列字串,沒有選擇項目時要顯示的選項為何,預設為$conf["notSelectedText"]["請選擇"]="unSelected";則代表顯示"請選擇",值為"unSelected".
9291
	#$conf["notSelectedText"]["請選擇"]="unSelected"
9292
	#$conf["onChangeFunction"],字串,當下拉式選單的內容變動時,要執行哪個js函數與要帶的參數,或要做的js,預設為"return false;".
9293
	#$conf["onChangeFunction"]="return false;";
9294
	#參考資料:
9295
	#HTML <optgroup> Tag=>http://www.w3schools.com/Tags/tag_optgroup.asp
9296
	#備註:
9297
	#無.
9298
	*/
9299
    	public static function pullDownList(&$conf){
9300
 
9301
		#初始化要回傳的結果
9302
		$result=array();
9303
 
9304
		#取得當前執行的函數名稱
9305
		$result["function"]=__FUNCTION__;
9306
 
9307
		#如果沒有參數
9308
		if(func_num_args()==0){
9309
 
9310
			#設置執行失敗
9311
			$result["status"]="false";
9312
 
9313
			#設置執行錯誤訊息
9314
			$result["error"]="函數".$result["function"]."需要參數";
9315
 
9316
			#回傳結果
9317
			return $result;
9318
 
9319
			}#if end
9320
 
9321
		#取得參數
9322
		$result["argu"]=$conf;
9323
 
9324
		#如果 $conf 不為陣列
9325
		if(gettype($conf)!=="array"){
9326
 
9327
			#設置執行失敗
9328
			$result["status"]="false";
9329
 
9330
			#設置執行錯誤訊息
9331
			$result["error"][]="\$conf變數須為陣列形態";
9332
 
9333
			#如果傳入的參數為 null
9334
			if($conf===null){
9335
 
9336
				#設置執行錯誤訊息
9337
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
9338
 
9339
				}#if end
9340
 
9341
			#回傳結果
9342
			return $result;
9343
 
9344
			}#if end
9345
 
9346
		#檢查參數
9347
		#函式說明:
9348
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
9349
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
9350
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
9351
		#$result["function"],當前執行的函式名稱.
9352
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
9353
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
9354
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
9355
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
9356
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
9357
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
9358
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
9359
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
9360
		#必填參數:
9361
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
9362
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
9363
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
9364
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("option");
9365
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
9366
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
9367
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
9368
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
9369
		#可省略參數:
9370
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
9371
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
9372
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
9373
		#$conf["canNotBeEmpty"]=array();
9374
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
9375
		#$conf["canBeEmpty"]=array();
9376
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
9377
		$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("name","id","default","class","style");
9378
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
9379
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("name","id","default","class","style","notSelectedText","onChangeFunction");
9380
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
9381
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","array","array","array","array","string");
9382
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
9383
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("pullDownList[]","pullDownList[]",null,null,null,array("請選擇"=>"unSelected"),"return false;");
9384
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
9385
		#$conf["arrayCountEqualCheck"][]=array();
9386
		#參考資料:
9387
		#array_keys=>http://php.net/manual/en/function.array-keys.php
9388
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
9389
		unset($conf["variableCheck::checkArguments"]);
9390
 
9391
		#如果檢查參數失敗
9392
		if($checkArguments["status"]==="false"){
9393
 
9394
			#設置錯誤識別
9395
			$result["status"]="false";
9396
 
9397
			#設置錯誤訊息
9398
			$result["error"]=$checkArguments;
9399
 
9400
			#回傳結果
9401
			return $result;
9402
 
9403
			}#if end
9404
 
9405
		#如果檢查不通過
9406
		if($checkArguments["passed"]==="false"){
9407
 
9408
			#設置錯誤識別
9409
			$result["status"]="false";
9410
 
9411
			#設置錯誤訊息
9412
			$result["error"]=$checkArguments;
9413
 
9414
			#回傳結果
9415
			return $result;
9416
 
9417
			}#if end
9418
 
9419
		#檢查 $conf["option"] 是否為二維陣列
9420
		#針對$conf["option"]的每個元素
9421
		foreach($conf["option"] as $groups){
9422
 
9423
			#如果$arrays不為陣列形態
9424
			if(gettype($groups)!=="array" && gettype($groups)!=="string"){
9425
 
9426
				#設置錯誤識別
9427
				$result["status"]="false";
9428
 
9429
				#設置錯誤訊息
9430
				$result["error"][]="參數 option 須為一、二維字串陣列";
9431
 
9432
				#回傳結果
9433
				return $result;
9434
 
9435
				}#if end
9436
 
9437
			}#foreach end
9438
 
9439
		#初始化要套用 css style 屬性字串
9440
		$style="";
9441
 
9442
		#如果有設定 $conf["style"]
9443
		if(isset($conf["style"])){
9444
 
9445
			#初始化儲存style屬性的陣列
9446
			$styleAttr=array();
9447
 
9448
			#初始化儲存style屬性值的陣列
9449
			$styleVal=array();
9450
 
9451
			#$conf["style"] 有幾個元素就執行幾次
9452
			foreach($conf["style"] as $attr => $val){
9453
 
9454
				#如果屬性值不為字串
9455
				if(gettype($attr)!=="string" || gettype($val)!=="string"){
9456
 
9457
					#設置執行不正常
9458
					$result["status"]="false";
9459
 
9460
					#設置執行錯誤
9461
					$result["error"][]="參數style的元素key與value皆須為字串";
9462
 
9463
					#回傳結果
9464
					return $result;
9465
 
9466
					}#if end
9467
 
9468
				#取得屬性
9469
				$styleAttr[]=$attr;
9470
 
9471
				#取得屬性值
9472
				$styleVal[]=$val;
9473
 
9474
				}#foreach end
9475
 
9476
			#如果有屬性與值,且數量對應正確
9477
			if(count($styleAttr)>0 && count($styleVal)>0 && count($styleAttr)===count($styleVal)){
9478
 
9479
				#建立 css style 屬性字串
9480
				#函式說明:
9481
				#建立給與html標籤使用的style屬性字串.
9482
				#回傳結果:
9483
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
9484
				#$result["function"],當前執行的函數
9485
				#$result["error"],錯誤訊息陣列
9486
				#$result["content"],css設定內容
9487
				#必填參數:
9488
				$conf["css::styleStr"]["styleName"]=$styleAttr;#為屬性名稱,須為陣列值
9489
				$conf["css::styleStr"]["styleValue"]=$styleVal;#為屬性值,須為陣列值
9490
				$styleStr=css::styleStr($conf["css::styleStr"]);
9491
				unset($conf["css::styleStr"]);
9492
 
9493
				#如果建立style字串失敗
9494
				if($styleStr["status"]==="false"){
9495
 
9496
					#設置執行不正常
9497
					$result["status"]="false";
9498
 
9499
					#設置執行錯誤
9500
					$result["error"]=$styleStr;
9501
 
9502
					#回傳結果
9503
					return $result;
9504
 
9505
					}#if end
9506
 
9507
				#設置屬性字串
9508
				$style=$styleStr["content"];
9509
 
9510
				}#if end
9511
 
9512
			}#if end
9513
 
9514
		#初始化要套用的 css class 屬性字串
9515
		$class="";
9516
 
9517
		#如果有設定 $conf["class"]
9518
		if(isset($conf["class"])){
9519
 
9520
			#設定要套用的css類別
9521
			#函式說明:
9522
			#建立class屬性字串,亦即套用多個class樣式的設定字串.
9523
			#回傳結果:
9524
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
9525
			#$result["function"],當前執行的函數
9526
			#$result["error"],錯誤訊息陣列
9527
			#$result["content"],class屬性字串的內容
9528
			#必填參數:
9529
			#$conf["class"],字串陣列,要套用的類別樣式名稱.
9530
			$conf["css::classStr"]["class"]=$conf["class"];
9531
			$classStr=css::classStr($conf["css::classStr"]);
9532
			unset($conf["css::classStr"]);
9533
 
9534
			#如果建立套用css類別的屬性字串失敗
9535
			if($classStr["status"]==="false"){
9536
 
9537
				#設置錯誤識別
9538
				$result["status"]="false";
9539
 
9540
				#設置錯誤訊息
9541
				$result["error"]=$classStr;
9542
 
9543
				#回傳結果
9544
				return $result;
9545
 
9546
				}#if end
9547
 
9548
			#取得css類別屬性字串
9549
			$class=$classStr["content"];
9550
 
9551
			}#if end
9552
 
9553
		#設置當內容改變時要觸發的js
9554
		$onChangeJs="onChange=\"".$conf["onChangeFunction"]."\"";
9555
 
9556
		#初始化要回傳的語法
9557
		$result["content"]="<select name=\"".$conf["name"]."\" id=\"".$conf["id"]."\" ".$style." ".$class." ".$onChangeJs." >";
9558
 
9559
		#針對 $conf["notSelectedText"] 變數
9560
		foreach($conf["notSelectedText"] as $unSelText => $unSelVal){
9561
 
9562
			#設置未選擇的選項
9563
			$result["content"]=$result["content"]."<option value=\"".$unSelVal."\">".$unSelText."</option>";
9564
 
9565
			}#foreach end
9566
 
9567
		#針對每個 $conf["option"]
9568
		foreach($conf["option"] as $groupName => $options){
9569
 
9570
			#如果 $options 為陣列
9571
			if(gettype($options)==="array"){
9572
 
9573
				#則代表是群組選項
9574
 
9575
				#群組 $groupName 開始
9576
				$result["content"]=$result["content"]."<optgroup label=\"".$groupName."\">";
9577
 
9578
				#針對每個 $options
9579
				foreach($options as $optionName => $optionVal){
9580
 
9581
					#初始化預設選取的語法
9582
					$selected="";
9583
 
9584
					#如果有設置預設值
9585
					if(isset($conf["default"])){
9586
 
9587
						#如果存在群組選項
9588
						if(isset($conf["default"][1]) && isset($conf["default"][1])){
9589
 
9590
							#如果是預設的群組選項
9591
							if($groupName===$conf["default"][0] && $optionName===$conf["default"][1]){
9592
 
9593
								#設置選取的語法
9594
								$selected="selected";
9595
 
9596
								}#if end
9597
 
9598
							}#if end
9599
 
9600
						}#if end
9601
 
9602
					#選項 $optionName
9603
					$result["content"]=$result["content"]."<option value=\"".$optionVal."\" ".$selected." >$optionName</option>";
9604
 
9605
					}#foreache end
9606
 
9607
				#群組 $groupName 結束
9608
				$result["content"]=$result["content"]."</optgroup>";
9609
 
9610
				}#if end
9611
 
9612
			#反之如果是字串
9613
			else if(gettype($options)==="string"){
9614
 
9615
				#則代表無歸屬群組的選項
9616
				#初始化預設選取的語法
9617
				$selected="";
9618
 
9619
				#如果有設置預設值
9620
				if(isset($conf["default"])){
9621
 
9622
					#如果存在選項
9623
					if(isset($conf["default"][0])){
9624
 
9625
						#如果是預設的選項
9626
						if($groupName===$conf["default"][0]){
9627
 
9628
							#設置選取的語法
9629
							$selected="selected";
9630
 
9631
							}#if end
9632
 
9633
						}#if end
9634
 
9635
					}#if end
9636
 
9637
				#選項 $groupName 的值為 $options
9638
				$result["content"]=$result["content"]."<option value=\"".$options."\" ".$selected." >$groupName</option>";
9639
 
9640
				}#if end
9641
 
9642
			}#foreach end
9643
 
9644
		#下拉式選單結束
9645
		$result["content"]=$result["content"]."</select>";
9646
 
9647
		#設置執行正常
9648
		$result["status"]="true";
9649
 
9650
		#回傳結果
9651
		return $result;
9652
 
9653
		}#function pullDownList end
9654
 
9655
	/*
9656
	#函式說明:
9657
	#黑點式選單(單選)
9658
	#回傳結果:
9659
	#$result["status"],執行是否正常,"true"代表正常,"false"代表失敗.
9660
	#$result["error"],錯誤訊息陣列.
9661
	#$result["content"],語法內容.
9662
	#$result["function"],設置當前執行的函式
9663
	#必填參數:
9664
	$conf["name"]="";#爲黑點式選單的名稱
9665
	$conf["sendValue"]=array();#爲陣列值,爲每個選項的實際傳送的數值,e.g. $sendValue = array("a","b","c","d","e");
9666
	#可省略參數:
9667
	#$conf["class"]="__withoutBorder";#爲要套用的class樣式,"__qbpwcf_inputRadioWithoutBorder"爲沒有框線的樣式;__qbpwcf_inputRadioWithBorder爲有框線的樣式
9668
	#$conf["outputValue"]=array();#爲陣列值,爲每個選項的實際顯示的數值, e.g. $outputValue = array("p","o","i","t","e"); 預設爲跟$conf["sendValue"]一樣。
9669
	#$conf["defaultValue"]="";#爲預設的選項,爲實際傳送的數值之一。
9670
	#$conf["comment"],字串,下拉式表單的註解文字.
9671
	#$conf["comment"]="";
9672
	#$conf["disableHr"]="true";#如果設爲"true",則結尾不用<hr>來結束單選的範圍,預設為"false".
9673
	#$conf["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。
9674
	#$conf["jsAction"]="";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
9675
	#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設為"false".
9676
	#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",其爲沒有框線的樣式;__withBorder爲有框線的樣式
9677
	#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是",也可以看成列裏面的元素開始,預設為"false".
9678
	#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,預設為"__withoutBorder",其爲沒有框線的樣式;__withBorder爲有框線的樣式
9679
	#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設為"false".
9680
	#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設為"false".
9681
	#$conf["brBetweenOption"]="true";#是否每個選項用<br>標籤隔開,預設為"true".
9682
	#參考資料:
9683
	#無.
9684
	#備註:
9685
	#無.
9686
	*/
9687
	public static function inputRadio($conf){
9688
 
9689
		#預設要回傳的數值
9690
		$result=array();
9691
 
9692
		#初始化要回傳的語法
9693
		$result["content"]="";
9694
 
9695
		#設置當前執行的函式
9696
		$result["function"]=__FUNCTION__;
9697
 
9698
		#如果 $conf 不為陣列
9699
		if(gettype($conf)!="array"){
9700
 
9701
			#設置執行失敗
9702
			$result["status"]="false";
9703
 
9704
			#設置執行錯誤訊息
9705
			$result["error"][]="\$conf變數須為陣列形態";
9706
 
9707
			#如果傳入的參數為 null
9708
			if($conf==null){
9709
 
9710
				#設置執行錯誤訊息
9711
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
9712
 
9713
				}#if end
9714
 
9715
			#回傳結果
9716
			return $result;
9717
 
9718
			}#if end
9719
 
9720
		#檢查參數
9721
		#函式說明:
9722
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
9723
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
9724
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
9725
		#$result["function"],當前執行的函式名稱.
9726
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
9727
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
9728
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
9729
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
9730
		#必填參數:
9731
		#$conf["form.checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
9732
		$conf["form.checkArguments"]["varInput"]=&$conf;
9733
		#$conf["form.checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
9734
		$conf["form.checkArguments"]["mustBeFilledVariableName"][]="name";
9735
		$conf["form.checkArguments"]["mustBeFilledVariableName"][]="sendValue";
9736
		#$conf["form.checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
9737
		$conf["form.checkArguments"]["mustBeFilledVariableType"][]="string";
9738
		$conf["form.checkArguments"]["mustBeFilledVariableType"][]="array";
9739
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
9740
		$conf["form.checkArguments"]["referenceVarKey"]="form.checkArguments";
9741
		#可省略參數:
9742
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
9743
		#$conf["canBeEmptyString"]="false";
9744
		#$conf["form.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
9745
		$conf["form.checkArguments"]["skipableVariableName"][]="class";
9746
		$conf["form.checkArguments"]["skipableVariableName"][]="outputValue";
9747
		$conf["form.checkArguments"]["skipableVariableName"][]="comment";
9748
		$conf["form.checkArguments"]["skipableVariableName"][]="disableHr";
9749
		$conf["form.checkArguments"]["skipableVariableName"][]="jsActivitor";
9750
		$conf["form.checkArguments"]["skipableVariableName"][]="jsAction";
9751
		$conf["form.checkArguments"]["skipableVariableName"][]="trStart";
9752
		$conf["form.checkArguments"]["skipableVariableName"][]="trClass";
9753
		$conf["form.checkArguments"]["skipableVariableName"][]="tdStart";
9754
		$conf["form.checkArguments"]["skipableVariableName"][]="tdClass";
9755
		$conf["form.checkArguments"]["skipableVariableName"][]="tdEnd";
9756
		$conf["form.checkArguments"]["skipableVariableName"][]="trEnd";
9757
		$conf["form.checkArguments"]["skipableVariableName"][]="brBetweenOption";
9758
		$conf["form.checkArguments"]["skipableVariableName"][]="defaultValue";
9759
		#$conf["form.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
9760
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9761
		$conf["form.checkArguments"]["skipableVariableType"][]="array";
9762
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9763
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9764
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9765
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9766
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9767
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9768
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9769
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9770
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9771
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9772
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9773
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9774
		#$conf["form.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
9775
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="__qbpwcf_inputRadioWithoutBorder";
9776
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="\$conf[\"sendValue\"]";
9777
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
9778
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="false";
9779
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
9780
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
9781
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="false";
9782
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="__qbpwcf_inputRadioWithoutBorder";
9783
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="false";
9784
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="__qbpwcf_inputRadioWithoutBorder";
9785
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="false";
9786
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="false";
9787
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="true";
9788
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
9789
		$checkResult=variableCheck::checkArguments($conf["form.checkArguments"]);
9790
		unset($conf["form.checkArguments"]);
9791
 
9792
		#如果$checkResult["status"] 等於 "false"
9793
		#意即如果檢查出錯
9794
		if($checkResult["status"]=="false"){
9795
 
9796
			#設置錯誤識別
9797
			$result["status"]="false";
9798
 
9799
			#設置錯誤訊息
9800
			$result["error"]=$checkResult;
9801
 
9802
			#回傳結果
9803
			return $result;
9804
 
9805
			}#if end
9806
 
9807
		#如果$checkResult["passed"] 等於 "false"
9808
		#意即如果檢查出錯
9809
		if($checkResult["passed"]=="false"){
9810
 
9811
			#設置錯誤識別
9812
			$result["status"]="false";
9813
 
9814
			#設置錯誤訊息
9815
			$result["error"]=$checkResult;
9816
 
9817
			#回傳結果
9818
			return $result;
9819
 
9820
			}#if end
9821
 
9822
		#如果其值爲 true
9823
		if($conf["trStart"]=="true"){
9824
 
9825
			#函式說明:
9826
			#列開始
9827
			#回傳結果:
9828
			#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
9829
			#$result["error"],函式錯誤訊息陣列.
9830
			#$result["content"],列開始的語法.
9831
			#$result["function"],當前執行的函式名稱.
9832
			#必填寫的參數:
9833
			$conf["table"]["trStart"]["class"]=$conf["trClass"];#該 tr 要套用套用的 css 樣式若爲 "" 則會採用預設的css樣式 __defaultTrCsssStyle,其屬性爲 border:1px solid blue
9834
			$trStart=table::trStart($conf["table"]["trStart"]);
9835
			unset($conf["table"]["trStart"]);
9836
 
9837
			#如果列開始失敗
9838
			if($trStart["status"]=="false"){
9839
 
9840
				#設置錯誤識別
9841
				$result["status"]="false";
9842
 
9843
				#設置錯誤訊息
9844
				$result["error"]=$trStart;
9845
 
9846
				#回傳結果
9847
				return $result;
9848
 
9849
				}#if end
9850
 
9851
			#串接列開始
9852
			$result["content"]=$result["content"].$trStart["content"];
9853
 
9854
			}#if end
9855
 
9856
		#如果其值爲 true
9857
		if($conf["tdStart"]=="true"){
9858
 
9859
			#函式說明:
9860
			#行開始
9861
			#回傳結果:
9862
			#$result,行開始的語法
9863
			#必填寫的參數:
9864
			$conf["table"]["tdStart"]["class"]=$conf["tdClass"];#該 td 要套用套用的 css 樣式
9865
				#預設的樣式
9866
				#"border-width","border","border-color","border-style","margin-right","margin-left"
9867
				#"100%","1px","#0000FF","solid","auto","auto"
9868
			$tdStart=table::tdStart($conf["table"]["tdStart"]);
9869
			unset($conf["table"]["tdStart"]);
9870
 
9871
			#如果 欄開始 失敗
9872
			if($tdStart["status"]=="false"){
9873
 
9874
				#設置錯誤識別
9875
				$result["status"]="false";
9876
 
9877
				#設置錯誤訊息
9878
				$result["error"]=$tdStar;
9879
 
9880
				#回傳結果
9881
				return $result;
9882
 
9883
				}#if end
9884
 
9885
			#串接欄開始
9886
			$result["content"]=$result["content"].$trStart["content"];
9887
 
9888
			}#if end
9889
 
9890
		#如果$conf["defaultValue"]沒有設定
9891
		if(!isset($conf["defaultValue"])){
9892
 
9893
			#則$conf["defaultValue"]爲""
9894
			$conf["defaultValue"]="";
9895
 
9896
			}#if end
9897
 
9898
		#如果$conf["outputValue"]沒設定
9899
		if(!isset($conf["outputValue"])){
9900
 
9901
			#則$conf["outputValue"]陣列內容將會等於$conf["sendValue"]陣列內容
9902
			$conf["outputValue"]=$conf["sendValue"];
9903
 
9904
			}#if end
9905
 
9906
		#暫存給註解用的css樣式
9907
		$commentCssStyle="";
9908
 
9909
		#如果爲 "__withBorder"
9910
		if($conf["class"]=="__withBorder"){
9911
 
9912
			#變更爲有框線的預設樣式
9913
			$conf["class"]="__withBorderInputRadioCssStyle";
9914
 
9915
			#取得註解要用的css樣式
9916
			$commentCssStyle=$conf["class"];
9917
 
9918
			}#if ned
9919
 
9920
		#如果爲 "__withoutBorder"
9921
		if($conf["class"]=="__withoutBorder"){
9922
 
9923
			#變更爲有框線的預設樣式
9924
			$conf["class"]="__withoutBorderInputRadioCssStyle";
9925
 
9926
			#取得註解要用的css樣式
9927
			$commentCssStyle=$conf["class"];
9928
 
9929
			}#if ned
9930
 
9931
		#則按照設定值
9932
		$conf["class"]=" class = ".$conf["class"]." ";
9933
 
9934
		#如果 $conf["jsActivitor"] 與 $conf["jsAction"] 皆有設定
9935
		if( isset($conf["jsActivitor"]) && isset($conf["jsAction"]) ){
9936
 
9937
			#則將設定值組合
9938
			$conf["jsCustom"]=" ".$conf["jsActivitor"]."=".$conf["jsAction"]." ";
9939
 
9940
			}#if end
9941
 
9942
		#如果 $conf["jsCustom"] 沒有設定
9943
		if(!isset($conf["jsCustom"])){
9944
 
9945
			#將其設爲空值
9946
			$conf["jsCustom"]="";
9947
 
9948
			}#if end
9949
 
9950
		#將有幾個選項的數目放進 $count
9951
		$count=count($conf["sendValue"]);
9952
 
9953
		#套用css樣式
9954
		$result["content"]=$result["content"]."<span ".$conf["class"]." >";
9955
 
9956
		#過濾 $conf["name"] 避免錯誤
9957
		#函式說明:
9958
		#處理字串避免網頁出錯
9959
		#回傳結果:
9960
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
9961
		#$result["function"],當前執行的函數.
9962
		#$result["content"],爲處理好的字串.
9963
		#$result["error"],錯誤訊息陣列.
9964
		#必填參數:
9965
		$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["name"];#爲要處理的字串
9966
		#可省略的參數:
9967
		$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
9968
			#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
9969
			#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
9970
		#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
9971
		$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
9972
		unset($conf["stringProcess::correctCharacter"]);
9973
 
9974
		#如果過濾字串失敗
9975
		if($correctCharacter["status"]=="false"){
9976
 
9977
			#設置執行失敗
9978
			$result["status"]="false";
9979
 
9980
			#設置執行錯誤訊息
9981
			$result["error"]=$correctCharacter;
9982
 
9983
			#回傳結果
9984
			return $result;
9985
 
9986
			}#if end
9987
 
9988
		#置換過濾好了的$conf["name"]
9989
		$conf["name"]=$correctCharacter["content"];
9990
 
9991
		#n個選項跑n此
9992
		for($i=0;$i<=($count-1);$i++){
9993
 
9994
			#如果選項的數值等於 預設的數值
9995
			if($conf["sendValue"][$i]==$conf["defaultValue"]){
9996
 
9997
				#則選取該選項
9998
				$result["content"]=$result["content"]."<label><input type = \"radio\" name = ".$conf["name"]." value = ".$conf["sendValue"][$i]." checked ".$conf["jsCustom"]." >".$conf["outputValue"][$i]."</label>";
9999
 
10000
				}#if end
10001
 
10002
			#反之
10003
			else{
10004
 
10005
				#選項的值等於現在畫面上的值
10006
				$result["content"]=$result["content"]."<label><input type = \"radio\" name = ".$conf["name"]." value = ".$conf["sendValue"][$i]." ".$conf["jsCustom"]." >".$conf["outputValue"][$i]."</label>";
10007
 
10008
				}#else end
10009
 
10010
			#如果 $conf["brBetweenOption"] 等於 "true"
10011
			if(($conf["brBetweenOption"]=="true")){
10012
 
10013
				#加上<br>標籤
10014
				$result["content"]=$result["content"]."<br>";
10015
 
10016
				}#if end
10017
 
10018
			}#for end
10019
 
10020
		#套用css樣式的範圍結束
10021
		$result["content"]=$result["content"]."</span ".$conf["class"]." >";
10022
 
10023
		#如果 不使用<hr> 的變數不存在
10024
		if(!isset($conf["disableHr"])){
10025
 
10026
			#則印出<hr>進行分割,以便放置下一個radioButton
10027
			$result["content"]=$result["content"]."<hr width = 0>";
10028
 
10029
			}#if end
10030
 
10031
		#如果其值爲 true
10032
		if($conf["tdEnd"]=="true"){
10033
 
10034
			#串接欄結束
10035
			$result["content"]=$result["content"]."</td>";
10036
 
10037
			}#if end
10038
 
10039
		#如果其值爲 true
10040
		if($conf["trEnd"]=="true"){
10041
 
10042
			#串接列結束
10043
			$result["content"]=$result["content"]."</tr>";
10044
 
10045
			}#if end
10046
 
10047
		#如果 $conf["comment"] 存在
10048
		if(isset($conf["comment"])){
10049
 
10050
			#給註解套上css樣式
10051
			#函式說明:
10052
			#<span>區塊,裡面可以指定css的class樣式,可以指定提示文字.
10053
			#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.
10054
			#$result["functin"],字串,當前函數的名稱.
10055
			#$result["error"],陣列,錯訊訊息.
10056
			#$result["content"],字串,含有<span>標籤的內容.
10057
			#必填參數:
10058
			#$conf["contentArray"],字串陣列,要放入的內容陣列.
10059
			$conf["css::spanSection"]["contentArray"]=array($conf["comment"]);
10060
			#可省略參數
10061
			#$conf["css::spanSection"]["class"],字串,div區段要套用的css樣式.
10062
			$conf["css::spanSection"]["class"]=$commentCssStyle;
10063
			#$conf["title"],陣列,滑鼠移到上面時要顯示的內容,每個元素代表一列內容
10064
			#$conf["title"]=array();
10065
			$spanSection=css::spanSection($conf["css::spanSection"]);
10066
			unset($conf["css::spanSection"]);
10067
 
10068
			#若建立 spanSection 失敗
10069
			if($spanSection["status"]=="false"){
10070
 
10071
				#設置錯誤識別
10072
				$result["status"]="false";
10073
 
10074
				#設置錯誤訊息
10075
				$result["error"]=$spanSection;
10076
 
10077
				#回傳結果
10078
				return $result;
10079
 
10080
				}#if end
10081
 
10082
			#加上註解
10083
			$result["content"]=$spanSection["content"]."<br>".$result["content"];
10084
 
10085
			}#if end
10086
 
10087
		#設置執行正常
10088
		$result["status"]="true";
10089
 
10090
		#回傳語法
10091
		return $result;
10092
 
10093
		}#function inputRadio end
10094
 
10095
	/*
10096
	#函式說明:
10097
	#勾選式選單(複選)
10098
	#回傳結果:
10099
	#$result["status"],執行是否正常,"true"代表正常,"false"代表失敗.
10100
	#$result["error"],錯誤訊息陣列.
10101
	#$result["content"],語法內容.
10102
	#$result["function"],當前執行的函式.
10103
	#必填參數:
10104
	$conf["name"]=array();#爲勾選式選單傳送時的各選項的名稱。例如:$conf["name"]=array("q-1","q-2","q-3","q-4","q-5");
10105
	$conf["sendValue"]=array();#爲陣列值,為勾選式選單實際傳送的內容.例如:$conf["sendValue"]=array("a","b","c","d","e");
10106
	#可省略參數:
10107
	#$conf["class"]=;#爲要套用的class樣式,預設為"__inputCheckBoxCssStyle",其樣式為"font-size:30px;text-align:center;"
10108
	#$conf["outputValue"]=array();#爲陣列值,爲每個選項的實際顯示的數值, e.g. $conf["outputValue"] = array("p","o","i","t","e"); 預設爲跟$conf["sendValue"]一樣。
10109
	#$conf["checkedOption"]=array();#爲那些選項是否要勾選,須爲陣列值。例如array("1","3","4"),就代表第1、3、4個選項是勾選的狀態。
10110
	#$conf["comment"]="";#為選單的註解
10111
	#$conf["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。
10112
	#$conf["jsAction"]="";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
10113
	#$conf["formName"]="";#爲表單的名稱
10114
	#$conf["formAction"]="";#爲表單要送到哪個php檔案。
10115
	#$conf["actionTarget"]="";#爲表單處理好後的呈現方式,有_top,_self,_blank,_parent,元素名稱也可以,預設為"_self"
10116
	#$conf["hiddenVar"],字串陣列,隱藏的變數名稱陣列.
10117
	#$conf["hiddenVar"]=array("");
10118
	#$conf["hiddanVarValue"],字串陣列,隱藏變數的數值內容.
10119
	#$conf["hiddenVarValue"]=array("");
10120
	#$conf["formEnd"]="false";#爲是否要表單結束,預設爲"false".
10121
	#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設爲"false".
10122
	#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是",也可以看成列裏面的元素開始,預設爲"false".
10123
	#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設爲"false".
10124
	#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設爲"false".
10125
	#$conf["brBetweenOption"]="true";#是否每個選項用<br>標籤隔開,"true"為要,預設爲"false".
10126
	#參考資料:
10127
	#無.
10128
	#備註:
10129
	#每個選項傳送的內容,修改成預設爲"true".
10130
	*/
10131
	public static function inputCheckBox(&$conf){
10132
 
10133
		#預設要回傳的數值
10134
		$result=array();
10135
 
10136
		#設置當前執行的函式
10137
		$result["function"]=__FUNCTION__;
10138
 
10139
		#初始化要回傳的語法
10140
		$result["content"]="";
10141
 
10142
		#如果 $conf 不為陣列
10143
		if(gettype($conf)!="array"){
10144
 
10145
			#設置執行失敗
10146
			$result["status"]="false";
10147
 
10148
			#設置執行錯誤訊息
10149
			$result["error"][]="\$conf變數須為陣列形態";
10150
 
10151
			#如果傳入的參數為 null
10152
			if($conf==null){
10153
 
10154
				#設置執行錯誤訊息
10155
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
10156
 
10157
				}#if end
10158
 
10159
			#回傳結果
10160
			return $result;
10161
 
10162
			}#if end
10163
 
10164
		#檢查參數
10165
		#函式說明:
10166
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
10167
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
10168
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
10169
		#$result["function"],當前執行的函式名稱.
10170
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
10171
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
10172
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
10173
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
10174
		#必填參數:
10175
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
10176
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
10177
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
10178
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("name","sendValue");
10179
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
10180
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("array","array");
10181
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
10182
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
10183
		#可省略參數:
10184
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
10185
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="true";
10186
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
10187
		$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("class","outputValue","checkedOption","comment","jsActivitor","jsAction","formName","formAction","actionTarget","trStart","tdStart","tdEnd","trEnd","brBetweenOption","hiddenVar","hiddenVarValue","formEnd");
10188
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
10189
		$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","array","array","string","string","string","string","string","string","string","string","string","string","string","array","array","string");
10190
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
10191
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array("__qbpwcf_inputCheckBoxCssStyle","\$conf[\"sendValue\"]",null,null,null,null,null,null,"_self","false","false","false","false","true",null,null,"false");
10192
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
10193
		unset($conf["variableCheck.checkArguments"]);
10194
 
10195
		#如果檢查失敗
10196
		if($checkResult["status"]=="false"){
10197
 
10198
			#設置執行不正常
10199
			$result["status"]="false";
10200
 
10201
			#程式停止執行
10202
			$result["error"]=$checkResult;
10203
 
10204
			#回傳結果
10205
			return $result;
10206
 
10207
			}#if end
10208
 
10209
		#如果檢查不通過
10210
		if($checkResult["passed"]=="false"){
10211
 
10212
			#設置執行不正常
10213
			$result["status"]="false";
10214
 
10215
			#程式停止執行
10216
			$result["error"]=$checkResult;
10217
 
10218
			#回傳結果
10219
			return $result;
10220
 
10221
			}#if end
10222
 
10223
		#如果 $conf["formAction"] 有設定
10224
		if(isset($conf["formAction"])){
10225
 
10226
			#如果 $conf["actionTarget"] 有設定
10227
			if(isset($conf["actionTarget"])){
10228
 
10229
				#指派設定值
10230
				$conf["form"]["start"]["target"]=$conf["actionTarget"];
10231
 
10232
				}#if end
10233
 
10234
			#如果 $conf["formName"] 沒有設置
10235
			if(!isset($conf["formName"])){
10236
 
10237
				#預設爲空數值
10238
				$conf["form"]["start"]["formName"]="  ";
10239
 
10240
				}#if end
10241
 
10242
			#函式說明:
10243
			#表單開始
10244
			#回傳結果:
10245
			#$result,表單開始的語法
10246
			#必填參數:
10247
			$conf["form"]["start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容
10248
			#可省略參數:
10249
			#$conf["form"]["start"]["name"]=$conf["formName"];#爲該表單的名稱
10250
			#$conf["method"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
10251
			#$conf["form"]["start"]["target"]=$conf["actionTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
10252
			#$conf["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是;
10253
			#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100%
10254
			$formStart=form::start($conf["form"]["start"]);
10255
			unset($conf["form"]["start"]);
10256
 
10257
			#如果表單開始失敗
10258
			if($formStart["status"]=="false"){
10259
 
10260
				#設置執行不正常
10261
				$result["status"]="false";
10262
 
10263
				#程式停止執行
10264
				$result["error"]=$formStart;
10265
 
10266
				#回傳結果
10267
				return $result;
10268
 
10269
				}#if end
10270
 
10271
			#串接表單開始
10272
			$result["content"]=$result["content"].$formStart["content"];
10273
 
10274
			}#if end
10275
 
10276
		#如果 $conf["hiddenVar"]與$conf["hiddenVarValue"]皆有設置
10277
		if(isset($conf["hiddenVar"]) && isset($conf["hiddenVarValue"])){
10278
 
10279
			#且陣列元素數目相同
10280
			if(count($conf["hiddenVar"])==count($conf["hiddenVarValue"])){
10281
 
10282
				#建立隱藏的表單
10283
				#傳送多個隱藏表單的資訊
10284
				#回傳的數值:
10285
				#$result,語法
10286
				#$result["sendedArrayName"],
10287
				#$result["sendedArrayValue"],
10288
				#$result["sendedArrayCount"],
10289
				#必填參數:
10290
				$conf["form"]["inputMutiHidden"]["nameArray"]=$conf["hiddenVar"];#欲傳送的隱藏陣列變數名稱
10291
				$conf["form"]["inputMutiHidden"]["valueArray"]=$conf["hiddenVarValue"];#欲傳送的隱藏陣列變數數值
10292
				$inputMultiHidden=form::inputMultiHidden($conf["form"]["inputMutiHidden"])["content"];
10293
				unset($conf["form"]["inputMutiHidden"]);
10294
 
10295
				#建立隱藏的表單失敗
10296
				if($inputMultiHidden["status"]=="false"){
10297
 
10298
					#設置執行不正常
10299
					$result["status"]="false";
10300
 
10301
					#程式停止執行
10302
					$result["error"]=$inputMultiHidden;
10303
 
10304
					#回傳結果
10305
					return $result;
10306
 
10307
					}#if end
10308
 
10309
				#串接隱藏的表單
10310
				$result["content"]=$result["content"].$inputMultiHidden;
10311
 
10312
				}#if end
10313
 
10314
			}#if end
10315
 
10316
		#如果其值爲 true
10317
		if($conf["trStart"]=="true"){
10318
 
10319
			#串接列開始
10320
			$result["content"]=$result["content"]."<tr>";
10321
 
10322
			}#if end
10323
 
10324
		#如果其值爲 true
10325
		if($conf["tdStart"]=="true"){
10326
 
10327
			#串接欄開始
10328
			$result["content"]=$result["content"]."<td>";
10329
 
10330
			}#if end
10331
 
10332
		#如果$conf["outputValue"]沒設定
10333
		if(!isset($conf["outputValue"])){
10334
 
10335
			#則$conf["outputValue"]陣列內容將會等於$conf["sendValue"]陣列內容
10336
			$conf["outputValue"]=$conf["sendValue"];
10337
 
10338
			}#if end
10339
 
10340
		#如果$conf["class"]沒設定
10341
		if(!isset($conf["class"])){
10342
 
10343
			#則$conf["class"]爲空
10344
			$conf["class"]="";
10345
 
10346
			}#if end
10347
 
10348
		#如果有$conf["class"]有設定
10349
		else{
10350
 
10351
			#則按照設定值
10352
			$conf["class"]=" class=".$conf["class"];
10353
 
10354
			}#else end
10355
 
10356
		#如果 $conf["jsActivitor"] 與 $conf["jsAction"] 皆有設定
10357
		if( isset($conf["jsActivitor"]) && isset($conf["jsAction"]) ){
10358
 
10359
			#則將設定值組合
10360
			$conf["jsCustom"]=" ".$conf["jsActivitor"]."=".$conf["jsAction"]." ";
10361
 
10362
			}#if end
10363
 
10364
		#如果 $conf["jsCustom"] 沒有設定
10365
		if(!isset($conf["jsCustom"])){
10366
 
10367
			#將其設爲空值
10368
			$conf["jsCustom"]="";
10369
 
10370
			}#if end
10371
 
10372
		#將有幾個選項的數目放進 $count
10373
		$count=count($conf["sendValue"]);
10374
 
10375
		#如果 $conf["comment"] 有設定
10376
		if(isset($conf["comment"])){
10377
 
10378
			#一開始先擺註解
10379
			$result["content"]=$result["content"]."<span ".$conf["class"].">".$conf["comment"]."</span><br>";
10380
 
10381
			}#if end
10382
 
10383
		#有幾個選項就執行幾次
10384
		for($i=0;$i<$count;$i++){
10385
 
10386
			#如果 $conf["checkedOption"] 參數存在
10387
			if(isset($conf["checkedOption"])){
10388
 
10389
				#檢查多個數值,是否與陣列裏面的某些元素相同。
10390
				#回傳結果:
10391
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
10392
				#$result["function"],當前執行的函數
10393
				#$result["error"],函式錯誤訊息,若爲""則表示沒有錯誤
10394
				#$result["founded"][$i],若爲"false"代表沒有相同的元素;反之"true"代表有相同的元素,$i爲第i+1個參數判斷後的結果。
10395
				#必填參數:
10396
				$conf_checkEquality["inputElement"]=array($i+1);#爲要進行比對的變數/數值。
10397
				$conf_checkEquality["blackBoxElement"]=$conf["checkedOption"];#爲用來比對的變數/數值陣列
10398
				$result_checkEquality=search::checkEquality($conf_checkEquality);
10399
				unset($conf_checkEquality);
10400
 
10401
				#如果檢查失敗
10402
				if($result_checkEquality["status"]=="false"){
10403
 
10404
					#設置執行不正常
10405
					$result["status"]="false";
10406
 
10407
					#程式停止執行
10408
					$result["error"]=$result_checkEquality;
10409
 
10410
					#回傳結果
10411
					return $result;
10412
 
10413
					}#if end
10414
 
10415
				#如果 $result_checkEquality"founded"][$i] 存在
10416
				if(isset($result_checkEquality["founded"][0])){
10417
 
10418
					#如果該選項是要勾選的
10419
					if($result_checkEquality["founded"][0]=="true"){
10420
 
10421
						#選取
10422
						$checked=" checked ";
10423
 
10424
						}#if end
10425
 
10426
					#反之
10427
					else{
10428
 
10429
						#不選取
10430
						$checked="";
10431
 
10432
						}#else end
10433
 
10434
					}#if end
10435
 
10436
				#反之
10437
				else{
10438
 
10439
					#不選取
10440
					$checked="";
10441
 
10442
					}#else end
10443
 
10444
				}#if end
10445
 
10446
			#反之
10447
			else{
10448
 
10449
				#不選取
10450
				$checked="";
10451
 
10452
				}#else end
10453
 
10454
			#放置勾選式表單
10455
			$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>";
10456
 
10457
			#如果 $conf["brBetweenOption"] 有設定
10458
			if(isset($conf["brBetweenOption"])){
10459
 
10460
				#如果 $conf["brBetweenOption"] 等於 "true"
10461
				if($conf["brBetweenOption"]=="true"){
10462
 
10463
					#如果不是最後一個選項
10464
					if($i!=$count-1){
10465
 
10466
						#加上<br>標籤
10467
						$result["content"]=$result["content"]."<br>";
10468
 
10469
						}#if end
10470
 
10471
					}#if end
10472
 
10473
				}#if end
10474
 
10475
			}#for end
10476
 
10477
		#如果其值爲 true
10478
		if($conf["tdEnd"]=="true"){
10479
 
10480
			#串接欄結束
10481
			$result["content"]=$result["content"]."</td>";
10482
 
10483
			}#if end
10484
 
10485
		#如果其值爲 true
10486
		if($conf["trEnd"]=="true"){
10487
 
10488
			#串接列結束
10489
			$result["content"]=$result["content"]."</tr>";
10490
 
10491
			}#if end
10492
 
10493
		#如果 $conf["formAction"] 有設定
10494
		if(isset($conf["formAction"])){
10495
 
10496
			#如果有設置 $conf["formEnd"]
10497
			if(isset($conf["formEnd"])){
10498
 
10499
				#如果 $conf["formEnd"] 設爲 "true"
10500
				if($conf["formEnd"]=="true"){
10501
 
10502
					#函式說明:
10503
					#表單結束
10504
					#回傳結果:
10505
					#$result,表單結束的語法
10506
					#必填參數:
10507
					$conf["form"]["end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。
10508
					$formEnd=form::end($conf["form"]["end"]);
10509
					unset($conf["form"]["end"]);
10510
 
10511
					#如果表單結束失敗
10512
					if($formEnd["status"]=="false"){
10513
 
10514
						#設置執行不正常
10515
						$result["status"]="false";
10516
 
10517
						#程式停止執行
10518
						$result["error"]=$formEnd;
10519
 
10520
						#回傳結果
10521
						return $result;
10522
 
10523
						}#if end
10524
 
10525
					#串接表單結束
10526
					$result["content"]=$result["content"].$formEnd["content"];
10527
 
10528
					}#if end
10529
 
10530
				}#if end
10531
 
10532
			}#if end
10533
 
10534
		#反之沒有設置$conf["formAction"]
10535
		else{
10536
 
10537
			#如果 $conf["formEnd"] 設爲 "true"
10538
			if($conf["formEnd"]=="true"){
10539
 
10540
				#函式說明:
10541
				#表單結束
10542
				#回傳結果:
10543
				#$result,表單結束的語法
10544
				#必填參數:
10545
				$conf["form"]["end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。
10546
				$formEnd=form::end($conf["form"]["end"]);
10547
				unset($conf["form"]["end"]);
10548
 
10549
				#如果表單結束失敗
10550
				if($formEnd["status"]==="false"){
10551
 
10552
					#設置執行不正常
10553
					$result["status"]="false";
10554
 
10555
					#程式停止執行
10556
					$result["error"]=$formEnd;
10557
 
10558
					#回傳結果
10559
					return $result;
10560
 
10561
					}#if end
10562
 
10563
				#串接表單結束
10564
				$result["content"]=$result["content"].$formEnd["content"];
10565
 
10566
				}#if end
10567
 
10568
			}#else end
10569
 
10570
		#設置執行成功
10571
		$result["status"]="true";
10572
 
10573
		#回傳結果
10574
		return $result;
10575
 
10576
		}#function inputCheckBox end
10577
 
10578
	/*
10579
	#函式說明:
10580
	#隱藏的表單傳送資訊
10581
	#回傳結果:
10582
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
10583
	#$result["error"],錯誤訊息
10584
	#$result["content"],語法
10585
	#$result["function"],當前執行的函數名稱
10586
	#必填參數:
10587
	$conf["name"]="";#隱藏的表單名稱
10588
	$conf["value"]="";#等於要傳送的數值
10589
	#可省略參數:
10590
	#無.
10591
	#參考資料:
10592
	#無.
10593
	#備註:
10594
	#無.
10595
	*/
10596
	public static function inputHidden($conf){
10597
 
10598
		#初始化要回傳的變數
10599
		$result=array();
10600
 
10601
		#設置當前執行的函式
10602
		$result["function"]=__FUNCTION__;
10603
 
10604
		#初始化表單開始的語法
10605
		$result["content"]="";
10606
 
10607
		#如果 $conf 不為陣列
10608
		if(gettype($conf)!="array"){
10609
 
10610
			#設置執行失敗
10611
			$result["status"]="false";
10612
 
10613
			#設置執行錯誤訊息
10614
			$result["error"][]="\$conf變數須為陣列形態";
10615
 
10616
			#如果傳入的參數為 null
10617
			if($conf==null){
10618
 
10619
				#設置執行錯誤訊息
10620
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
10621
 
10622
				}#if end
10623
 
10624
			#回傳結果
10625
			return $result;
10626
 
10627
			}#if end
10628
 
10629
		#檢查參數
10630
		#函式說明:
10631
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
10632
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
10633
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
10634
		#$result["function"],當前執行的函式名稱.
10635
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
10636
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
10637
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
10638
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
10639
		#必填參數:
10640
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
10641
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
10642
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
10643
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("name","value");
10644
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
10645
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
10646
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
10647
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
10648
		#可省略參數:
10649
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
10650
		#$conf["canBeEmptyString"]="false";
10651
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
10652
		#$conf["skipableVariableName"]=array();
10653
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
10654
		#$conf["skipableVariableType"]=array();
10655
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
10656
		#$conf["skipableVarDefaultValue"]=array("");
10657
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
10658
		#$conf["arrayCountEqualCheck"][]=array();
10659
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
10660
		unset($conf["variableCheck::checkArguments"]);
10661
 
10662
		#如果檢查參數失敗
10663
		if($checkResult["status"]=="false"){
10664
 
10665
			#設置執行失敗
10666
			$result["status"]="false";
10667
 
10668
			#設置執行錯誤
10669
			$result["error"]=$checkResult;
10670
 
10671
			#回傳結果
10672
			return $result;
10673
 
10674
			}#if end
10675
 
10676
		#如果檢查參數不通過
10677
		if($checkResult["passed"]=="false"){
10678
 
10679
			#設置執行失敗
10680
			$result["status"]="false";
10681
 
10682
			#設置執行錯誤
10683
			$result["error"]=$checkResult;
10684
 
10685
			#回傳結果
10686
			return $result;
10687
 
10688
			}#if end
10689
 
10690
		#放置隱藏的表單
10691
		$result["content"]="<input type = hidden name = ".$conf["name"]." value = \"".$conf["value"]."\">";
10692
 
10693
		#執行到這邊代表執行正常
10694
		$result["status"]="true";
10695
 
10696
		#回傳結果
10697
		return $result;
10698
 
10699
		}#function inputHidden end
10700
 
10701
	/*
10702
	#函式說明:
10703
	#傳送多個隱藏表單的資訊
10704
	#回傳的數值:
10705
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
10706
	#$result["error"],錯誤訊息陣列
10707
	#$result["function"],當前執行的函數
10708
	#$result["content"],語法
10709
	#$result["sendedArrayName"],傳送的隱藏變數陣列
10710
	#$result["sendedArrayValue"],傳送的隱藏變數陣列數值
10711
	#$result["sendedArrayCount"],傳送的隱藏變數計數
10712
	#必填參數:
10713
	$conf["nameArray"]=array("");#欲傳送的隱藏陣列變數名稱
10714
	$conf["valueArray"]=array("");#欲傳送的隱藏陣列變數數值
10715
	#可省略參數:
10716
	#無.
10717
	#參考資料:
10718
	#無.
10719
	#備註:
10720
	#無.
10721
	*/
10722
	public static function inputMultiHidden(&$conf){
10723
 
10724
		#預設要回傳的數值
10725
		$result=array();
10726
 
10727
		#設置當前執行的函數
10728
		$result["function"]=__FUNCTION__;
10729
 
10730
		#初始化要回傳的語法
10731
		$result["content"]="";
10732
 
10733
		#如果 $conf 不為陣列
10734
		if(gettype($conf)!="array"){
10735
 
10736
			#設置執行失敗
10737
			$result["status"]="false";
10738
 
10739
			#設置執行錯誤訊息
10740
			$result["error"][]="\$conf變數須為陣列形態";
10741
 
10742
			#如果傳入的參數為 null
10743
			if($conf==null){
10744
 
10745
				#設置執行錯誤訊息
10746
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
10747
 
10748
				}#if end
10749
 
10750
			#回傳結果
10751
			return $result;
10752
 
10753
			}#if end
10754
 
10755
		#檢查參數
10756
		#函式說明:
10757
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
10758
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
10759
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
10760
		#$result["function"],當前執行的函式名稱.
10761
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
10762
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
10763
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
10764
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
10765
		#必填參數:
10766
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
10767
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
10768
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
10769
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("nameArray","valueArray");
10770
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
10771
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("array","array");
10772
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
10773
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
10774
		#可省略參數:
10775
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
10776
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="true";
10777
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
10778
		#$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("width","maxInputLength","defaultValue","class","jsActivitor","jsAction","trStart","tdStart","tdEnd","trEnd","comment","placeholder");
10779
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
10780
		#$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string","string","string","string","string","string");
10781
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
10782
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array(null,null,null,"__inputPasswordCssStyle",null,null,"false","false","false","false",null,null);
10783
		#$conf["variableCheck.checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
10784
		$conf["variableCheck.checkArguments"]["arrayCountEqualCheck"][]=array("nameArray","valueArray");
10785
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
10786
		unset($conf["variableCheck.checkArguments"]);
10787
 
10788
		#如果檢查失敗
10789
		if($checkResult["status"]=="false"){
10790
 
10791
			#設置執行不正常
10792
			$result["status"]="false";
10793
 
10794
			#程式停止執行
10795
			$result["error"]=$checkResult;
10796
 
10797
			#回傳結果
10798
			return $result;
10799
 
10800
			}#if end
10801
 
10802
		#如果檢查不通過
10803
		if($checkResult["passed"]=="false"){
10804
 
10805
			#設置執行不正常
10806
			$result["status"]="false";
10807
 
10808
			#程式停止執行
10809
			$result["error"]=$checkResult;
10810
 
10811
			#回傳結果
10812
			return $result;
10813
 
10814
			}#if end
10815
 
10816
		#透過foreach建立陣列
10817
		#將陣列的key重新排序,然後回傳,以便後續存取,也可以指定key的內容,但一定要跟元素數量相同。
10818
		#回傳的解果:
10819
		#$result["status"],執行是否成功,"true"代表成功,"false"代表失敗.
10820
		#$result["error"],執行錯誤的訊息.
10821
		#$result["function"],當前執行的函數名稱.
10822
		#$result["dataContent"],儲存陣列元素的內容.
10823
		#必填參數:
10824
		$conf_createV2["arrayContent"]=$conf["nameArray"];#陣列元素的value,須爲陣列值。
10825
		#可省略的參數:
10826
		#$conf["arrayCounts"]="";#爲陣列的元素有幾個,若沒設定,則數量爲$conf["arrayContent"]裏的元素數量
10827
		#$conf["theSameAs"]="true";#若設爲"true",則所有元素內容都跟第一個元素內容相同
10828
		$result_nameArray=arrays::createV2($conf_createV2);
10829
		unset($conf_createV2);
10830
 
10831
		#如果重新排序陣列失敗
10832
		if($result_nameArray["status"]=="false"){
10833
 
10834
			#設置執行不正常
10835
			$result["status"]="false";
10836
 
10837
			#程式停止執行
10838
			$result["error"]=$result_nameArray;
10839
 
10840
			#回傳結果
10841
			return $result;
10842
 
10843
			}#if end
10844
 
10845
		#透過foreach建立陣列
10846
		#將陣列的key重新排序,然後回傳,以便後續存取。
10847
		#回傳的解果:
10848
		#$result["status"],執行是否成功,"true"代表成功,"false"代表失敗.
10849
		#$result["error"],執行錯誤的訊息.
10850
		#$result["function"],當前執行的函數名稱.
10851
		#$result["dataContent"],儲存陣列元素的內容.
10852
		#必填參數:
10853
		$conf_createV2["arrayContent"]=$conf["valueArray"];#陣列元素的value,須爲陣列值。
10854
		#可省略的參數:
10855
		#$conf["arrayCounts"]="";#爲陣列的元素有幾個,若沒設定,則數量爲$conf["arrayContent"]裏的元素數量
10856
		#$conf["theSameAs"]="true";#若設爲"true",則所有元素內容都跟第一個元素內容相同
10857
		$result_valueArray=arrays::createV2($conf_createV2);
10858
		unset($conf_createV2);
10859
 
10860
		#如果重新排序陣列失敗
10861
		if($result_valueArray["status"]=="false"){
10862
 
10863
			#設置執行不正常
10864
			$result["status"]="false";
10865
 
10866
			#程式停止執行
10867
			$result["error"]=$result_valueArray;
10868
 
10869
			#回傳結果
10870
			return $result;
10871
 
10872
			}#if end
10873
 
10874
		#有幾個要傳送的元素就執行幾次
10875
		for($i=0;$i<count($conf["nameArray"]);$i++){
10876
 
10877
			#隱藏的表單傳送資訊
10878
			#必填參數:
10879
			$conf_inputHidden["name"]=$result_nameArray["dataContent"][$i];#隱藏的表單名稱
10880
			$conf_inputHidden["value"]=$result_valueArray["dataContent"][$i];#等於要穿送的數值
10881
			$inputHidden=form::inputHidden($conf_inputHidden);
10882
			unset($conf_inputHidden);
10883
 
10884
			#如果建立隱藏的表單失敗
10885
			if($inputHidden["status"]=="false"){
10886
 
10887
				#設置錯誤
10888
				$result["status"]="false";
10889
 
10890
				#設置錯誤訊息
10891
				$result["error"]=$inputHidden;
10892
 
10893
				#回傳結果
10894
				return $inputHidden;
10895
 
10896
				}#if end
10897
 
10898
			#串接 隱藏的表單
10899
			$result["content"]=$result["content"].$inputHidden["content"];
10900
 
10901
			}#for end
10902
 
10903
		#設置執行正常
10904
		$result["status"]="true";
10905
 
10906
		#回傳結果
10907
		return $result;
10908
 
10909
		}#function inputMutiHidden end
10910
 
10911
	/*
10912
	#函式說明:
10913
	#簡單的控制面板,可以點選"新增"、"回上頁"的簡易面板
10914
	#回傳的結果:
10915
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
10916
	#$result["error"],錯誤訊息
10917
	#$result["content"],控制面板的語法
10918
	#$result["function"],當前執行的函數名稱
10919
	#必填參數:
10920
	$conf["addActionPage"]="";#不可省略,爲新增表單要交給那個頁面處理,屬性內容爲網頁位置。
10921
	$conf["goBackActionPage"]="";#不可省略,爲回上頁的目的地,屬性內容爲網頁位置。
10922
	#可省略參數:
10923
	#$conf["addActionPresentPage"]="";#可省略,爲新增表單的處理頁面要在那邊出現,可以用的數值有 _self (面板所處的頁面) _parent (父頁面) _blank (新視窗) 頁框名稱,預設爲_self
10924
	#$conf["addButtonName"]="";#可省略,預設爲"新增",爲新增表單的按鈕顯示名稱,屬性內容爲字串。
10925
	#$conf["addButtonStyleName"]="";#可省略,爲新增表單的按鈕css樣式,屬性內容爲 css 的類別名稱。
10926
	#$conf["goBackActionPresentPage"]="";#可省略,爲回上頁的目的地的頁面要在那邊出現,可以用的數值有 _self (面板所處的頁面) _parent (父頁面) _blank (新視窗) 頁框名稱,預設爲_self
10927
	#$conf["goBackButtonName"]="";#可省略,預設爲"回上頁",爲回上頁的按鈕顯示名稱,屬性內容爲字串。
10928
	#$conf["goBackButtonStyleName"]="";#可省略,爲回上頁按鈕的css樣式,屬性內容爲 css 的類別名稱。
10929
	#參考資料:
10930
	#無.
10931
	#備註:
10932
	#無.
10933
	*/
10934
	public static function simpleControlPanel($conf){
10935
 
10936
		#初始化要回傳的內容
10937
		$result=array();
10938
 
10939
		#設置當前執行的函數
10940
		$result["function"]=__FUNCTION__;
10941
 
10942
		#初始化content樣式內容
10943
		$result["content"]="";
10944
 
10945
		#如果 $conf 不為陣列
10946
		if(gettype($conf)!="array"){
10947
 
10948
			#設置執行失敗
10949
			$result["status"]="false";
10950
 
10951
			#設置執行錯誤訊息
10952
			$result["error"][]="\$conf變數須為陣列形態";
10953
 
10954
			#如果傳入的參數為 null
10955
			if($conf==null){
10956
 
10957
				#設置執行錯誤訊息
10958
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
10959
 
10960
				}#if end
10961
 
10962
			#回傳結果
10963
			return $result;
10964
 
10965
			}#if end
10966
 
10967
		#檢查參數
10968
		#函式說明:
10969
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
10970
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
10971
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
10972
		#$result["function"],當前執行的函式名稱.
10973
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
10974
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
10975
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
10976
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
10977
		#必填參數:
10978
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
10979
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
10980
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
10981
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("addActionPage","goBackActionPage");
10982
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
10983
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string","string");
10984
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
10985
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
10986
		#可省略參數:
10987
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
10988
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
10989
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
10990
		$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("addActionPresentPage","addButtonName","addButtonStyleName","goBackActionPresentPage","goBackButtonName","goBackButtonStyleName");
10991
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
10992
		$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string");
10993
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
10994
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array("_self","新增","__simpleButtonLinkDefaultButtonCssStyle","_self","回上頁","__simpleButtonLinkDefaultButtonCssStyle");
10995
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
10996
		unset($conf["variableCheck.checkArguments"]);
10997
 
10998
		#如果檢查失敗
10999
		if($checkResult["status"]=="false"){
11000
 
11001
			#設置執行不正常
11002
			$result["status"]="false";
11003
 
11004
			#程式停止執行
11005
			$result["error"]=$checkResult;
11006
 
11007
			#回傳結果
11008
			return $result;
11009
 
11010
			}#if end
11011
 
11012
		#如果檢查不通過
11013
		if($checkResult["passed"]=="false"){
11014
 
11015
			#設置執行不正常
11016
			$result["status"]="false";
11017
 
11018
			#程式停止執行
11019
			$result["error"]=$checkResult;
11020
 
11021
			#回傳結果
11022
			return $result;
11023
 
11024
			}#if end
11025
 
11026
		#新增的按鈕
11027
		#函式說明:
11028
		#放置按鈕
11029
		#回傳結果:
11030
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
11031
		#$result["function"],當前執行的函數.
11032
		#$result["error"],錯誤訊息陣列.
11033
		#$result["content"],按鈕語法.
11034
		#必填參數:
11035
		$conf["form::button"]["buttonDisplayValue"]=$conf["addButtonName"];#爲按鈕上顯示的文字。
11036
		#可省略參數:
11037
		$conf["form::button"]["buttonStyleName"]=$conf["addButtonStyleName"];#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __simpleButtonLinkDefaultButtonCssStyle 。
11038
			#其屬性爲   "width","height","font-size","text-align"
11039
			#其屬性值爲 "100%" ,  "50"  ,    "30"   ,   "center"
11040
		#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。
11041
			#"document.forms.formName.submit()"爲傳送名爲testForm的表單內容
11042
			#"window.print()"爲使用瀏覽器內建工具列印當前網頁
11043
		#$conf["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。
11044
		#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".
11045
		#$conf["tableStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"false"。
11046
		#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。
11047
		#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
11048
		#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",亦即沒有框線的樣式;"__withBorder"則爲有框線的樣式
11049
		#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".
11050
		#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
11051
		#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
11052
		#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
11053
		#$conf["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是,預設爲"false"。
11054
		$conf["form::button"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".
11055
		$conf["form::button"]["action"]=$conf["addActionPage"];#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用
11056
		$conf["form::button"]["target"]=$conf["addActionPresentPage"];#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用
11057
		$conf["form::button"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".
11058
		#參考資料:
11059
		#http://stackoverflow.com/questions/3014649/how-to-disable-html-button-using-javascript
11060
		$addButton=form::button($conf["form::button"]);
11061
		unset($conf["form::button"]);
11062
 
11063
		#如果建立新增按鈕失敗
11064
		if($addButton["status"]=="false"){
11065
 
11066
			#設置執行不正常
11067
			$result["status"]="false";
11068
 
11069
			#程式停止執行
11070
			$result["error"]=$addButton;
11071
 
11072
			#回傳結果
11073
			return $result;
11074
 
11075
			}#if end
11076
 
11077
		#回前頁的按鈕
11078
		#函式說明:
11079
		#放置按鈕
11080
		#回傳結果:
11081
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
11082
		#$result["function"],當前執行的函數.
11083
		#$result["error"],錯誤訊息陣列.
11084
		#$result["content"],按鈕語法.
11085
		#必填參數:
11086
		$conf["form::button"]["buttonDisplayValue"]=$conf["goBackButtonName"];#爲按鈕上顯示的文字。
11087
		#可省略參數:
11088
		$conf["form::button"]["buttonStyleName"]=$conf["goBackButtonStyleName"];#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __simpleButtonLinkDefaultButtonCssStyle 。
11089
			#其屬性爲   "width","height","font-size","text-align"
11090
			#其屬性值爲 "100%" ,  "50"  ,    "30"   ,   "center"
11091
		#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。
11092
			#"document.forms.formName.submit()"爲傳送名爲testForm的表單內容
11093
			#"window.print()"爲使用瀏覽器內建工具列印當前網頁
11094
		#$conf["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。
11095
		#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".
11096
		#$conf["tableStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"false"。
11097
		#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。
11098
		#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
11099
		#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",亦即沒有框線的樣式;"__withBorder"則爲有框線的樣式
11100
		#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".
11101
		#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
11102
		#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
11103
		#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
11104
		#$conf["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是,預設爲"false"。
11105
		$conf["form::button"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".
11106
		$conf["form::button"]["action"]=$conf["goBackActionPage"];#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用
11107
		$conf["form::button"]["target"]=$conf["goBackActionPresentPage"];#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用
11108
		$conf["form::button"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".
11109
		#參考資料:
11110
		#http://stackoverflow.com/questions/3014649/how-to-disable-html-button-using-javascript
11111
		$backButton=form::button($conf["form::button"]);
11112
		unset($conf["form::button"]);
11113
 
11114
		#如果建立回上頁按鈕失敗
11115
		if($backButton["status"]=="false"){
11116
 
11117
			#設置執行不正常
11118
			$result["status"]="false";
11119
 
11120
			#程式停止執行
11121
			$result["error"]=$backButton;
11122
 
11123
			#回傳結果
11124
			return $result;
11125
 
11126
			}#if end
11127
 
11128
		#函式說明:
11129
		#建立列的元素,以及指定裏面要放什麼內容
11130
		#回傳的變數:
11131
		#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
11132
		#$result["error"],錯誤訊息陣列.
11133
		#$result["function"],當前執行的函數名稱.
11134
		#$result["content"],建立列元素的語法.
11135
		#必填參數:
11136
		$conf["table"]["printRow"]["trClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
11137
		$conf["table"]["printRow"]["tdClass"]="__withoutBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
11138
		$conf["table"]["printRow"]["tdContent"]=array($backButton["content"],$addButton["content"]);#列裏面要放的元素是?如果要空一列則可以輸array("&nbsp;")
11139
		#可省略參數:
11140
		$conf["table"]["printRow"]["tableStartClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
11141
		#$conf["tableBorder"]="1px";#表格的厚度預設為"1px"
11142
		$conf["table"]["printRow"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。
11143
		$conf["table"]["printRow"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。
11144
		#$conf["formStart"]="true";#是否要有表單的開始
11145
		#$conf["formName"]="";#該表單的名稱
11146
		#$conf["formAction"]="";#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置
11147
		#$conf["formTarget"]="_self";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
11148
		#$conf["formEnd"]="true";#是否要有表單的結束
11149
		$printRow=table::printRow($conf["table"]["printRow"]);
11150
		unset($conf["table"]["printRow"]);
11151
 
11152
		#如果建立一列表格失敗
11153
		if($printRow["status"]=="false"){
11154
 
11155
			#設置執行不正常
11156
			$result["status"]="false";
11157
 
11158
			#程式停止執行
11159
			$result["error"]=$printRow;
11160
 
11161
			#回傳結果
11162
			return $result;
11163
 
11164
			}#if end
11165
 
11166
		#串接一列表格
11167
		$result["content"]=$result["content"].$printRow["content"];
11168
 
11169
		#設置執行成功
11170
		$result["status"]="true";
11171
 
11172
		#回傳結果
11173
		return $result;
11174
 
11175
		}#函式 simpleControlPanel 結束
11176
 
11177
	/*
11178
	#函式說明:
11179
	#移除東西的確認視窗.
11180
	#回傳結果:
11181
	#$result["status"],執行是否正常,"true"代表正常;"false"代表有問題
11182
	#$reuslt["error"],錯誤訊息陣列
11183
	#$result["function"],當前執行的函數名稱
11184
	#$result["content"],語法
11185
	#必填參數:
11186
	$conf["itemName"]="";#爲要刪除的物件提示名稱,格式爲字串。
11187
	$conf["cancleActionPage"]="";#爲按下取消按鈕後,要交給那個頁面處理。
11188
	$conf["removeActionPage"]="";#爲移除按鈕傳送的內容要交給哪一個頁面處理。
11189
	#可省略參數:
11190
	#$conf["itemNameFontColor"]="";#可省略預設爲 "#000000"(黑色),爲要刪除物件提示名稱文字的字型顏色,格式範圍爲 #000000~#FFFFFF。
11191
	#$conf["dbAddress"]=$dbAddress;#資料庫的位置.
11192
	#$conf["dbName"]=$dbName;#連線到資料庫的名稱.
11193
	#$conf["dtName"]="";#目標資料所屬資料表名稱.
11194
	#$conf["dbAccount"]=$dbAccount;#連線到資料庫的帳號名稱.
11195
	#$conf["dbPassword"]=$dbPassword;#連線到資料庫的帳號密碼.
11196
	#$conf["indexColumnName"]="id";#用於識別要移除資料的索引鍵欄位名稱,預設為"id".
11197
	#$conf["indexColumnValue"]="";#用於識別要移除資料的索引鍵欄位數值內容。
11198
	#$conf["columnForComment"]=array();#陣列字串,為要從資料庫取出作為要除物件的提示文字的資料表欄位名稱陣列。
11199
	#$conf["commentsName"]=array();#陣列字串,為要從資料庫取出作為要除物件的提示文字的資料表欄位名的顯示名稱,預設跟 $conf["columnForComment"] 一樣.
11200
	#$conf["cancleActionDisplayMethod"]="";#可省略,預設爲"_top",爲按下取消按鈕後,交給的處理的頁面要怎麼顯現,類型爲字串,可能值有 "_top" "_self" "_blank" "_blank"
11201
	#$conf["cancleButtonStyle"]="";#可省略,爲取消鈕的css樣式類別名稱,預設為"__qbpwcf_button".
11202
	#$conf["cancleButtonDisplayName"]="";#可省略,預設爲"取消",爲取消鈕的顯示名稱。
11203
	#$conf["cancleSendingVarName"]=array("");#爲按下取消按鈕後要傳送的數值名稱
11204
	#$conf["cancleSendingVarValue"]=array("");#爲按下取消按鈕後要傳送的數值內容
11205
	#$conf["removeActionDisplayMethod"]="";#可省略預設爲"_top",爲處理移除內容的頁面要如何顯現,類型爲字串,可能值有 "_top" "_self" "_blank" "_blank"
11206
	#$conf["removeButtonStyle"]="";#可省略,爲移除按鈕的css樣式類別名稱,,預設為"__qbpwcf_button".
11207
	#$conf["removeButtonDisplayName"]="";#可省略,預設爲"確認移除",爲移除按鈕的顯示文字內容
11208
	#$conf["removeSendingVarName"]=array("");#爲按下移除按鈕後要傳送的數值名稱
11209
	#$conf["removeSendingVarValue"]=array("");#爲按下移除按鈕後要傳送的數值內容
11210
	#參考資料:
11211
	#無.
11212
	#備註:
11213
	#建議參數 $conf["indexColumnName"] 與 $conf["indexColumnValue"] 的形態為字串陣列,以便擁有更多限制條件取得需要的資料.
11214
	*/
11215
	public static function removeConfirm(&$conf){
11216
 
11217
		#初始化要回傳的內容
11218
		$result=array();
11219
 
11220
		#初始化要回傳的語法
11221
		$result["content"]="";
11222
 
11223
		#記錄當前執行的函數名稱
11224
		$result["function"]=__FUNCTION__;
11225
 
11226
		#如果 $conf 不為陣列
11227
		if(gettype($conf)!="array"){
11228
 
11229
			#設置執行失敗
11230
			$result["status"]="false";
11231
 
11232
			#設置執行錯誤訊息
11233
			$result["error"][]="\$conf變數須為陣列形態";
11234
 
11235
			#如果傳入的參數為 null
11236
			if($conf==null){
11237
 
11238
				#設置執行錯誤訊息
11239
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
11240
 
11241
				}#if end
11242
 
11243
			#回傳結果
11244
			return $result;
11245
 
11246
			}#if end
11247
 
11248
		#檢查參數:
11249
		#函式說明:
11250
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
11251
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
11252
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
11253
		#$result["function"],當前執行的函式名稱.
11254
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
11255
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
11256
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
11257
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
11258
		#必填參數:
11259
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
11260
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
11261
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
11262
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("itemName","cancleActionPage","removeActionPage");
11263
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
11264
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string");
11265
		#可省略參數:
11266
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
11267
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
11268
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
11269
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array();
11270
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="dbAddress";
11271
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="dbName";
11272
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="dbAccount";
11273
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="dbPassword";
11274
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="dtName";
11275
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="indexColumnName";
11276
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="indexColumnValue";
11277
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="columnForComment";
11278
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="commentsName";
11279
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="itemNameFontColor";
11280
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="cancleButtonDisplayName";
11281
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="cancleActionDisplayMethod";
11282
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="cancleButtonStyle";
11283
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="cancleSendingVarName";
11284
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="cancleSendingVarValue";
11285
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="removeButtonDisplayName";
11286
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="removeActionDisplayMethod";
11287
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="removeButtonStyle";
11288
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="removeSendingVarName";
11289
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="removeSendingVarValue";
11290
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
11291
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array();
11292
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11293
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11294
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11295
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11296
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11297
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11298
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11299
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="array";
11300
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="array";
11301
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11302
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11303
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11304
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11305
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="array";
11306
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="array";
11307
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11308
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11309
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11310
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="array";
11311
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="array";
11312
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
11313
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array();
11314
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;
11315
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;
11316
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;
11317
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;
11318
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;
11319
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="id";
11320
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;
11321
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;
11322
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="\$conf[\"columnForComment\"]";
11323
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="#000000";
11324
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="取消";
11325
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="_top";
11326
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="__qbpwcf_button";
11327
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;
11328
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;
11329
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="確認移除";
11330
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="_top";
11331
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="__qbpwcf_button";
11332
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;
11333
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;
11334
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
11335
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
11336
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
11337
		#$conf["arrayCountEqualCheck"][]=array();
11338
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
11339
		unset($conf["variableCheck::checkArguments"]);
11340
 
11341
		#如果檢查出錯
11342
		if($checkResult["status"]=="false"){
11343
 
11344
			#設置執行錯誤
11345
			$result["status"]="false";
11346
 
11347
			#設置錯誤訊息
11348
			$result["error"]=$checkResult;
11349
 
11350
			#回傳結果
11351
			return $result;
11352
 
11353
			}#if end
11354
 
11355
		#如果檢查不通過
11356
		if($checkResult["passed"]=="false"){
11357
 
11358
			#設置執行錯誤
11359
			$result["status"]="false";
11360
 
11361
			#設置錯誤訊息
11362
			$result["error"]=$checkResult;
11363
 
11364
			#回傳結果
11365
			return $result;
11366
 
11367
			}#if end
11368
 
11369
		#取消移除的按鈕
11370
		#函式說明:
11371
		#一個簡單的按鈕,按了可以到指定的頁面,同時也可以傳送多個隱藏的變數
11372
		#回傳的結果
11373
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
11374
		#$result["error"],錯誤訊息陣列
11375
		#$result["function"],當前執行的函數名稱.
11376
		#$result["content"],語法內容
11377
		#必填參數:
11378
		$conf["form::sendHugeDataButton"]["buttonDisplayValue"]=$conf["cancleButtonDisplayName"];#按鈕上要顯示的文字
11379
		#可省略參數:
11380
		$conf["form::sendHugeDataButton"]["buttonStyleName"]=$conf["cancleButtonStyle"];#按鈕的css樣式應該爲何,若省略的話預設會採用 __simpleButtonLinkDefaultButtonCssStyle 的樣式,其設定為"width:100%;height:50;font-size:30;text-align:center;
11381
 
11382
		#如果 $conf["cancleSendingVarName"] 有存在
11383
		if(isset($conf["cancleSendingVarName"])){
11384
 
11385
			$conf["form::sendHugeDataButton"]["hiddenVarName"]=$conf["cancleSendingVarName"];#要傳送的隱藏變數名稱,與 $conf["hiddenVarContent"] 相對應。
11386
 
11387
			}#if end
11388
 
11389
		#如果 $conf["cancleSendingVarValue"] 有設定
11390
		if(isset($conf["cancleSendingVarValue"])){
11391
 
11392
			$conf["form::sendHugeDataButton"]["hiddenVarContent"]=$conf["cancleSendingVarValue"];#要傳誦的隱藏變數內容,與 $conf["hiddenVarName"] 相對應。
11393
 
11394
			}#if end
11395
 
11396
		#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".
11397
		$conf["form::sendHugeDataButton"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設爲"false".
11398
		#$conf["form::sendHugeDataButton"]["method"]=;#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
11399
		#$conf["formName"]="";#該表單的名稱
11400
		$conf["form::sendHugeDataButton"]["actionPage"]=$conf["cancleActionPage"];#按鈕按了之後要到哪個地方?若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面。
11401
		#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。
11402
			#可以是"document.forms.formName.submit()"(傳送名爲testForm的表單內容).
11403
		$conf["form::sendHugeDataButton"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設爲"false"
11404
		#$conf["tableStart"]="true";#爲是否要表格開始,"true"表示"是",預設為"false".
11405
		#$conf["tableClass"]="__withoutBorder";#爲表格要採用的css樣式名稱,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder".
11406
		#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
11407
		#$conf["trClass"]="__withoutBorder";#列開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder"
11408
		#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false"
11409
		#$conf["tdClass"]="__withoutBorder";#行開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder"
11410
		#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
11411
		#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
11412
		$conf["form::sendHugeDataButton"]["displayTarget"]=$conf["cancleActionDisplayMethod"];#頁面的呈現方法,可以是開新視窗(_blank)、在目前頁面、頁框裏面(_self)、在父頁面(_parent)、最上層頁面(_top),預設為"_top"。
11413
		#$conf["tableEnd"]="true";#爲是否要表格結束,"true"表示"是",預設為"false".
11414
		$cancleButton=form::sendHugeDataButton($conf["form::sendHugeDataButton"]);
11415
		unset($conf["form::sendHugeDataButton"]);
11416
 
11417
		#如果取消按鈕建立失敗
11418
		if($cancleButton["status"]==="false"){
11419
 
11420
			#設置執行錯誤
11421
			$result["status"]="false";
11422
 
11423
			#設置錯誤訊息
11424
			$result["error"]=$cancleButton;
11425
 
11426
			#回傳結果
11427
			return $result;
11428
 
11429
			}#if end
11430
 
11431
		#串接取消按鈕的語法
11432
		$conf["table.printColumn"]["tdContent"][]=$cancleButton["content"];
11433
 
11434
		#創建提示文字的css樣式
11435
		#函式說明:
11436
		#創建 css 樣式
11437
		#回傳結果:
11438
		#$result["css"],css設定內容
11439
		#$result["error"],函式錯誤訊息,若爲""則表示沒有錯誤
11440
		#必填參數:
11441
		$conf["css.createCssStyle"]["cssStyleName"]="__removeConfiremStrCssStyle";#為該 css 樣式的名稱,不能以數字開頭。
11442
		$conf["css.createCssStyle"]["attributes"]=array("text-align","font-size","color");#為屬性名稱,須為陣列值
11443
		$conf["css.createCssStyle"]["content"]=array("center","30px",$conf["itemNameFontColor"]);#為屬性值,須為陣列值
11444
		$css=css::createCssStyle($conf["css.createCssStyle"]);
11445
		unset($conf["css.createCssStyle"]);
11446
 
11447
		#如果css樣式建立失敗
11448
		if($css["status"]=="false"){
11449
 
11450
			#設置執行失敗
11451
			$result["status"]="false";
11452
 
11453
			#設置錯誤訊息
11454
			$result["error"]=$css;
11455
 
11456
			#回傳結果
11457
			return $result;
11458
 
11459
			}#if end
11460
 
11461
		#傳接css語法
11462
		$result["content"]=$result["content"].$css["content"];
11463
 
11464
		#確認移除的文字
11465
		#函式說明:
11466
		#<span>區塊,裡面可以指定css的class樣式,可以指定提示文字.
11467
		#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.
11468
		#$result["functin"],字串,當前函數的名稱.
11469
		#$result["error"],陣列,錯訊訊息.
11470
		#$result["content"],字串,含有<span>標籤的內容.
11471
		#必填參數:
11472
		#$conf["contentArray"],字串陣列,要放入的內容陣列.
11473
		$conf["css::spanSection"]["contentArray"]=array("您確定要移除該 「".$conf["itemName"]."」 嗎?");
11474
		#可省略參數
11475
		#$conf["class"],字串,div區段要套用的css樣式.
11476
		$conf["css::spanSection"]["class"]="__removeConfiremStrCssStyle";
11477
		#$conf["title"],陣列,滑鼠移到上面時要顯示的內容,每個元素代表一列內容
11478
		#$conf["title"]=array();
11479
		$spanSection=css::divSection($conf["css::spanSection"]);
11480
		unset($conf["css::spanSection"]);
11481
 
11482
		#如果 spanSection 建立失敗
11483
		if($spanSection["status"]=="false"){
11484
 
11485
			#設置執行失敗
11486
			$result["status"]="false";
11487
 
11488
			#設置錯誤訊息
11489
			$result["error"]=$spanSection;
11490
 
11491
			#回傳結果
11492
			return $result;
11493
 
11494
			}#if end
11495
 
11496
		#串接提示訊息
11497
		$conf["table.printColumn"]["tdContent"][]=$spanSection["content"];
11498
 
11499
		#如果 $conf["indexColumnValue"] 有設定
11500
		if(isset($conf["indexColumnValue"]) && isset($conf["dbName"]) && isset($conf["dbAddress"]) && isset($conf["dbAccount"]) && isset($conf["dtName"])){
11501
 
11502
			#如果 $conf["columnForComment"] 有設定
11503
			if(isset($conf["columnForComment"])){
11504
 
11505
				#函式說明:
11506
				#<span>區塊,裡面可以指定css的class樣式,可以指定提示文字.
11507
				#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.
11508
				#$result["functin"],字串,當前函數的名稱.
11509
				#$result["error"],陣列,錯訊訊息.
11510
				#$result["content"],字串,含有<span>標籤的內容.
11511
				#必填參數:
11512
				#$conf["contentArray"],字串陣列,要放入的內容陣列.
11513
				$conf["css::spanSection"]["contentArray"]=array("相關資訊如下所示:");
11514
				#可省略參數
11515
				#$conf["class"],字串,div區段要套用的css樣式.
11516
				$conf["css::spanSection"]["class"]="__removeConfiremStrCssStyle";
11517
				#$conf["title"],陣列,滑鼠移到上面時要顯示的內容,每個元素代表一列內容
11518
				#$conf["title"]=array();
11519
				$spanSection=css::divSection($conf["css::spanSection"]);
11520
				unset($conf["css::spanSection"]);
11521
 
11522
				#如果 spanSection 建立失敗
11523
				if($spanSection["status"]=="false"){
11524
 
11525
					#設置執行失敗
11526
					$result["status"]="false";
11527
 
11528
					#設置錯誤訊息
11529
					$result["error"]=$spanSection;
11530
 
11531
					#回傳結果
11532
					return $result;
11533
 
11534
					}#if end
11535
 
11536
				#串接提示訊息
11537
				$conf["table.printColumn"]["tdContent"][]=$spanSection["content"];
11538
 
11539
				#取得特定資料的指定欄位資料
11540
				#函式說明:
11541
				#一次取得資料庫、表的資料
11542
				#回傳的結果
11543
				#$result["status"],執行結果"true"為成功;"false"為執行失敗。
11544
				#$result["error"],錯誤訊息陣列。
11545
				#$result["dataColumnName"],抓取的資料欄位名稱陣列.
11546
					#$result["dataColumnName"][$i]代表第$i+1個欄位名稱
11547
				#$result["dataContent"],爲資料的內容。
11548
				#$result["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]
11549
					#$dataSetNum 爲第$dataSetNum+1筆資料
11550
					#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱
11551
				#$result["dataCount"],爲取得的資料筆數。
11552
				#$result["sql"],執行的sql字串.
11553
				#必填參數:
11554
				$conf["db.fastGetDbData"]["dbAddress"]=$conf["dbAddress"];#爲dbServer的位置。
11555
				$conf["db.fastGetDbData"]["dbAccount"]=$conf["dbAccount"];#爲登入dbServer的帳號。
11556
				$conf["db.fastGetDbData"]["dbName"]=$conf["dbName"];#爲要存取的資料庫名稱
11557
				$conf["db.fastGetDbData"]["tableName"]=$conf["dtName"];#爲要存取的資料表名稱
11558
				$conf["db.fastGetDbData"]["columnYouWant"]=$conf["columnForComment"];#你想要的欄位!,若設為「array("*")」則代表全部欄位.
11559
				#可省略參數:
11560
 
11561
				#如果 $conf["dbPassword"] 有設定
11562
				if(isset($conf["dbPassword"])){
11563
 
11564
					$conf["db.fastGetDbData"]["dbPassword"]=$conf["dbPassword"];#爲要存取dbServer的密碼
11565
 
11566
					}#if end
11567
 
11568
				$conf["db.fastGetDbData"]["WhereColumnName"]=array($conf["indexColumnName"]);#用於判斷語句的欄位項目陣列。
11569
				$conf["db.fastGetDbData"]["WhereColumnValue"]=array($conf["indexColumnValue"]);#用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。
11570
				#$conf["WhereColumnCombine"]=array("");#用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。
11571
				#$conf["WhereColumnOperator"]=array("");#用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。
11572
				#$conf["WhereColumnAndOr"]=array("");#用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。
11573
				#$conf["orderItem"]="";#爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。
11574
				#$conf["ascORdesc"]="";#爲要低增還是遞減排序,asc爲遞增;desc爲遞減。
11575
				#$conf["numberStart"]="0";#為從第幾筆開始讀取,預設為0,代筆第一筆。
11576
				#$conf["numLimit"]="30";#為要取幾筆資料,可以省略,省略則表示不限制數目。
11577
				#$conf["groupBy"]=array("");#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。
11578
				$getDbDataResult=db::fastGetDbData($conf["db.fastGetDbData"]);
11579
				unset($conf["db.fastGetDbData"]);
11580
 
11581
				#如果 查詢要刪除的資料失敗
11582
				if($getDbDataResult["status"]=="false"){
11583
 
11584
					#設置執行失敗
11585
					$result["status"]="false";
11586
 
11587
					#設置錯誤訊息
11588
					$result["error"]=$getDbDataResult;
11589
 
11590
					#回傳結果
11591
					return $result;
11592
 
11593
					}#if end
11594
 
11595
				#如果資料不足一筆
11596
				if($getDbDataResult["dataCount"]==0){
11597
 
11598
					#設置執行失敗
11599
					$result["status"]="false";
11600
 
11601
					#設置錯誤訊息
11602
					$result["error"][]="查不到要刪除的資料";
11603
 
11604
					#回傳結果
11605
					return $result;
11606
 
11607
					}#if end
11608
 
11609
				#有幾個欄位就執行幾次
11610
				for($i=0;$i<count($conf["columnForComment"]);$i++){
11611
 
11612
					#函式說明:
11613
					#可以輸入文字的區塊
11614
					#回傳結果:
11615
					#$result,語法
11616
					#必填參數:
11617
					$conf["form.inputTextArea"]["name"]="readOnly-".$i;#爲文字輸入框的名稱,供接收端辨識用。
11618
					$conf["form.inputTextArea"]["readOnly"]="true";#爲是否要爲唯讀,如果爲"true",則爲唯讀。反之則爲"false"。
11619
					#可省略參數:
11620
					#$conf["cols"]="";#爲文字輸入框的欄位數(寬),預設爲按照瀏覽器設定值。
11621
					#$conf["rows"]="";#爲文字輸入框的列數(高),預設爲按照瀏覽器設定值。
11622
					#$conf["maxInputLength"]="";#爲文字輸入的長度限制,預設無限制。
11623
					$conf["form.inputTextArea"]["defaultText"]=$getDbDataResult["dataContent"][$conf["columnForComment"][$i]][0];#爲文字輸入框裏面的預設文字內容,預設是空的。
11624
					#$conf["class"]=;#爲要套用的css樣式。如果沒有指定 ,則採用預設的css樣式,其屬性爲 "width:100%","height:120px","font-size:30px"
11625
					#$conf["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。
11626
					#$conf["jsAction"]="";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
11627
					#$conf["comment"],字串,輸入方框上面要放哪些註解文字.
11628
					$conf["form.inputTextArea"]["comment"]=$conf["commentsName"][$i];
11629
					#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
11630
					#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
11631
					#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
11632
					#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
11633
					$columnData=form::inputTextArea($conf["form.inputTextArea"]);
11634
					unset($conf["form.inputTextArea"]);
11635
 
11636
					#如果 inputTextArea 建立失敗
11637
					if($columnData["status"]=="false"){
11638
 
11639
						#設置執行失敗
11640
						$result["status"]="false";
11641
 
11642
						#設置錯誤訊息
11643
						$result["error"]=$columnData;
11644
 
11645
						#回傳結果
11646
						return $result;
11647
 
11648
						}#if end
11649
 
11650
					#接上描述資訊
11651
					$conf["table.printColumn"]["tdContent"][]=$columnData["content"];
11652
 
11653
					}#for end
11654
 
11655
				}#if end
11656
 
11657
			}#if end
11658
 
11659
		#確認移除的按鈕
11660
		#函式說明:
11661
		#一個簡單的按鈕,按了可以到指定的頁面,同時也可以傳送多個隱藏的變數
11662
		#回傳的結果
11663
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
11664
		#$result["error"],錯誤訊息陣列
11665
		#$result["function"],當前執行的函數名稱.
11666
		#$result["content"],語法內容
11667
		#必填參數:
11668
		$conf["form::sendHugeDataButton"]["buttonDisplayValue"]=$conf["removeButtonDisplayName"];#按鈕上要顯示的文字
11669
		#可省略參數:
11670
		$conf["form::sendHugeDataButton"]["buttonStyleName"]=$conf["removeButtonStyle"];#按鈕的css樣式應該爲何,若省略的話預設會採用 __simpleButtonLinkDefaultButtonCssStyle 的樣式,其設定為"width:100%;height:50;font-size:30;text-align:center;
11671
 
11672
		#如果 $conf["removeSendingVarName"] 有存在
11673
		if(isset($conf["removeSendingVarName"])){
11674
 
11675
			$conf["form::sendHugeDataButton"]["hiddenVarName"]=$conf["removeSendingVarName"];#要傳送的隱藏變數名稱,與 $conf["hiddenVarContent"] 相對應。
11676
 
11677
			}#if end
11678
 
11679
		#如果 $conf["removeSendingVarValue"] 有設定
11680
		if(isset($conf["removeSendingVarValue"])){
11681
 
11682
			$conf["form::sendHugeDataButton"]["hiddenVarContent"]=$conf["removeSendingVarValue"];#要傳誦的隱藏變數內容,與 $conf["hiddenVarName"] 相對應。
11683
 
11684
			}#if end
11685
 
11686
		#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".
11687
		$conf["form::sendHugeDataButton"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設爲"false".
11688
		#$conf["form::sendHugeDataButton"]["method"]=;#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
11689
		#$conf["formName"]="";#該表單的名稱
11690
		$conf["form::sendHugeDataButton"]["actionPage"]=$conf["removeActionPage"];#按鈕按了之後要到哪個地方?若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面。
11691
		#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。
11692
			#可以是"document.forms.formName.submit()"(傳送名爲testForm的表單內容).
11693
		$conf["form::sendHugeDataButton"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設爲"false"
11694
		#$conf["tableStart"]="true";#爲是否要表格開始,"true"表示"是",預設為"false".
11695
		#$conf["tableClass"]="__withoutBorder";#爲表格要採用的css樣式名稱,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder".
11696
		#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
11697
		#$conf["trClass"]="__withoutBorder";#列開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder"
11698
		#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false"
11699
		#$conf["tdClass"]="__withoutBorder";#行開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder"
11700
		#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
11701
		#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
11702
		$conf["form::sendHugeDataButton"]["displayTarget"]=$conf["removeActionDisplayMethod"];#頁面的呈現方法,可以是開新視窗(_blank)、在目前頁面、頁框裏面(_self)、在父頁面(_parent)、最上層頁面(_top),預設為"_top"。
11703
		#$conf["tableEnd"]="true";#爲是否要表格結束,"true"表示"是",預設為"false".
11704
		$confirmButton=form::sendHugeDataButton($conf["form::sendHugeDataButton"]);
11705
		unset($conf["form::sendHugeDataButton"]);
11706
 
11707
		#如果取消按鈕建立失敗
11708
		if($confirmButton["status"]=="false"){
11709
 
11710
			#設置執行錯誤
11711
			$result["status"]="false";
11712
 
11713
			#設置錯誤訊息
11714
			$result["error"]=$confirmButton;
11715
 
11716
			#回傳結果
11717
			return $result;
11718
 
11719
			}#if end
11720
 
11721
		#串接確認移除按鈕的語法
11722
		$conf["table.printColumn"]["tdContent"][]=$confirmButton["content"];
11723
 
11724
		#函式說明:
11725
		#建立欄的元素,以及指定裏面要放什麼內容
11726
		#回傳的變數:
11727
		#$result["content"],建立欄元素的語法
11728
		#$result["status"],"true"代表執行成功;"false"代表執行失敗。
11729
		#$result["error"],錯誤訊息陣列
11730
		#必填參數:
11731
		$conf["table.printColumn"]["trClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
11732
		$conf["table.printColumn"]["tdClass"]="__withoutBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
11733
		#列裏面要放的元素是?如果要空一列則可以輸array("&nbsp;")
11734
		#$conf["table.printColumn"]["tdContent"][]="";
11735
		#可省略參數:
11736
		$conf["table.printColumn"]["tableStartClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
11737
		$conf["table.printColumn"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。
11738
		$conf["table.printColumn"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。
11739
		#$conf["formStart"]="true";#是否要有表單的開始
11740
		#$conf["formName"]="";#該表單的名稱
11741
		#$conf["formAction"]="";#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置
11742
		#$conf["formTarget"]="_self";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
11743
		#$conf["formEnd"]="true";#是否要有表單的結束
11744
		$conf["table.printColumn"]["spaceBlockAferPerElement"]="true";#是否每個欄元素(除了最後一個元素)後面都要空一列。"true"代表要空一列.預設是不空一列.
11745
		$fullTable=table::printColumn($conf["table.printColumn"]);
11746
		unset($conf["table.printColumn"]);
11747
 
11748
		#如果 表格建立失敗
11749
		if($fullTable["status"]=="false"){
11750
 
11751
			#設置執行失敗
11752
			$result["status"]="false";
11753
 
11754
			#設置錯誤訊息
11755
			$result["error"]=$fullTable;
11756
 
11757
			#回傳結果
11758
			return $result;
11759
 
11760
			}#if end
11761
 
11762
		#串接整個表格
11763
		$result["content"]=$result["content"].$fullTable["content"];
11764
 
11765
		#設置執行正常
11766
		$result["status"]="true";
11767
 
11768
		#回傳結果
11769
		return $result;
11770
 
11771
		}#function removeConfirm end
11772
 
11773
	/*
11774
	#函式說明:
11775
	#確認執行的視窗
11776
	#回傳結果:
11777
	#$result,確認執行的視窗語法
11778
	#必填參數:
11779
	$conf["actionName"]="";#要執行的動作
11780
	$conf["itemName"]="";#爲要執行的物件提示名稱,格式爲字串。
11781
	$conf["cancleActionPage"]="";#爲按下取消按鈕後,要交給那個頁面處理。
11782
	$conf["confirmActionPage"]="";#爲移除按鈕傳送的內容要交給哪一個頁面處理。
11783
	#可省略參數:
11784
	#$conf["actionFontCss"]="";#可省略,爲動作提示的字型css樣式,預設為"__actionFontCssStyle"
11785
	#$conf["itemNameFontCss"]="";#可省略預,爲物件提示的字型css樣式,預設為"__itemNameFontCssStyle"
11786
	#$conf["cancleActionDisplayMethod"]="";#可省略,預設爲"_self",爲按下取消按鈕後,交給的處理的頁面要怎麼顯現,類型爲字串,可能值有 "_top" "_self" "_blank" "_blank"
11787
	#$conf["cancleButtonStyle"]="";#可省略,爲取消鈕的css樣式類別名稱。
11788
	#$conf["cancleRequestMethod"],字串,取消要求的表單要用什麼方式傳送,預設為"post",也可以為"get".
11789
	#$conf["cancleRequestMethod"]="get";
11790
	#$conf["cancleButtonDisplayName"]="";#可省略,預設爲"取消",爲取消鈕的顯示名稱。
11791
	#$conf["cancleSendingVarName"]=array("");#爲按下取消按鈕後要傳送的數值名稱
11792
	#$conf["cancleSendingVarValue"]=array("");#爲按下取消按鈕後要傳送的數值內容
11793
	#$conf["confirmActionDisplayMethod"]="";#可省略預設爲"_self",爲處理移除內容的頁面要如何顯現,類型爲字串,可能值有 "_top" "_self" "_blank" "_blank"
11794
	#$conf["confirmButtonStyle"]="";#可省略,爲移除按鈕的css樣式類別名稱。
11795
	#$conf["confirmRequestMethod"],字串,確認要求的表單要用什麼方式傳送,預設為"post",也可以為"get".
11796
	#$conf["confirmRequestMethod"]="get";
11797
	#$conf["confirmButtonDisplayName"]="";#可省略,預設爲"確認移除",爲移除按鈕的顯示文字內容
11798
	#$conf["confirmSendingVarName"]=array("");#爲按下移除按鈕後要傳送的數值名稱
11799
	#$conf["confirmSendingVarValue"]=array("");#爲按下移除按鈕後要傳送的數值內容
11800
	#參考資料:
11801
	#無.
11802
	#備註:
11803
	#要執行動作的物件提示名稱,如果可以擺方多個資訊將會更方便。
11804
	*/
11805
	public static function customConfirm(&$conf){
11806
 
11807
		#初始化要回傳的內容
11808
		$result=array();
11809
 
11810
		#初始化要回傳的語法
11811
		$result["content"]="";
11812
 
11813
		#記錄當前執行的函數名稱
11814
		$result["function"]=__FUNCTION__;
11815
 
11816
		#如果 $conf 不為陣列
11817
		if(gettype($conf)!="array"){
11818
 
11819
			#設置執行失敗
11820
			$result["status"]="false";
11821
 
11822
			#設置執行錯誤訊息
11823
			$result["error"][]="\$conf變數須為陣列形態";
11824
 
11825
			#如果傳入的參數為 null
11826
			if($conf==null){
11827
 
11828
				#設置執行錯誤訊息
11829
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
11830
 
11831
				}#if end
11832
 
11833
			#回傳結果
11834
			return $result;
11835
 
11836
			}#if end
11837
 
11838
		#檢查參數
11839
		#函式說明:
11840
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
11841
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
11842
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
11843
		#$result["function"],當前執行的函式名稱.
11844
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
11845
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
11846
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
11847
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
11848
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
11849
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
11850
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
11851
		#必填參數:
11852
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
11853
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
11854
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
11855
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("actionName","itemName","cancleActionPage","confirmActionPage");
11856
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
11857
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string","string");
11858
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
11859
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
11860
		#可省略參數:
11861
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
11862
		#$conf["canBeEmptyString"]="false";
11863
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
11864
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("actionFontCss","itemNameFontCss","cancleActionDisplayMethod","cancleRequestMethod","confirmRequestMethod");
11865
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
11866
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string");
11867
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
11868
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("__qbpwcf_actionFontCssStyle","__qbpwcf_itemNameFontCssStyle","_self","post","post");
11869
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
11870
		#$conf["arrayCountEqualCheck"][]=array();
11871
		#參考資料:
11872
		#array_keys=>http://php.net/manual/en/function.array-keys.php
11873
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
11874
		unset($conf["variableCheck::checkArguments"]);
11875
 
11876
		#如果檢查不通過
11877
		if($checkResult["passed"]=="fasle"){
11878
 
11879
			#設置錯誤
11880
			$result["status"]="false";
11881
 
11882
			#設置錯誤訊息
11883
			$result["error"]=$checkResult;
11884
 
11885
			#回傳結果
11886
			return $result;
11887
 
11888
			}#if end
11889
 
11890
		#如果有指定 $conf["actionFontCss"]
11891
		if(isset($conf["actionFontCss"])){
11892
 
11893
			#套用其css樣式
11894
			$conf["actionName"]="<span class=".$conf["actionFontCss"].">".$conf["actionName"]."</span>";
11895
 
11896
			}#if end
11897
 
11898
		#如果有指定 $conf["itemNameFontCss"]
11899
		if(isset($conf["itemNameFontCss"])){
11900
 
11901
			#套用其css樣式
11902
			$conf["itemName"]="<span class=".$conf["itemNameFontCss"].">".$conf["itemName"]."</span>";
11903
 
11904
			}#if end
11905
 
11906
		#函式說明:
11907
		#表格形式的文字描述:
11908
		#回傳結果:
11909
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
11910
		#$result["error"],函式錯誤訊息陣列.
11911
		#$result["content"],表格形式文字描述的語法.
11912
		#$result["function"],當前執行的函式名稱.
11913
		#必填參數:
11914
		$conf["table"]["text"]["outputString"]="您確定要 「".$conf["actionName"]."」 「".$conf["itemName"]."」 嗎?";#要印出來的文字
11915
		#可省略參數:
11916
		$conf["table"]["text"]["tableStart"]="true";#是否要表格開始<table>,"true"代表是。
11917
		$conf["table"]["text"]["tableClass"]="__withoutBorder";#為表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
11918
		$conf["table"]["text"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
11919
		$conf["table"]["text"]["trClass"]="__textCssType";#爲tr的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
11920
		$conf["table"]["text"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
11921
		$conf["table"]["text"]["tdClass"]="__withoutBorder";#該 td 要套用套用的 css 樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
11922
		$conf["table"]["text"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
11923
		$conf["table"]["text"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
11924
		$conf["table"]["text"]["tableEnd"]="true";#是否要表格結束</table>,"true"代表是。
11925
		$message=table::text($conf["table"]["text"]);
11926
		unset($conf["table"]);
11927
 
11928
		#如果表格文字建立失敗
11929
		if($message["status"]=="false"){
11930
 
11931
			#設置執行失敗
11932
			$result["status"]="false";
11933
 
11934
			#設置錯誤訊息
11935
			$result["error"]=$message;
11936
 
11937
			#回傳結果
11938
			return $result;
11939
 
11940
			}#if end
11941
 
11942
		#如果 $conf["cancleButtonDisplayName"] 沒有設定
11943
		if(!isset($conf["cancleButtonDisplayName"])){
11944
 
11945
			$conf["cancleButtonDisplayName"]="取消";
11946
 
11947
			}#if end
11948
 
11949
		#函式說明:
11950
		#一個簡單的按鈕,按了可以到指定的頁面。同時也可以傳送多個隱藏的變數
11951
		#回傳的結果
11952
		#$result,語法內容
11953
		#必填參數:
11954
		$conf["form"]["sendHugeDataButton"]["actionPage"]=$conf["cancleActionPage"];#按鈕按了之後要到哪個地方?若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面。
11955
		$conf["form"]["sendHugeDataButton"]["buttonDisplayValue"]=$conf["cancleButtonDisplayName"];#按鈕上要顯示的文字
11956
		#可省略參數:
11957
 
11958
		#如果有設置 $conf["cancleButtonStyle"]
11959
		if(isset($conf["cancleButtonStyle"])){
11960
 
11961
			$conf["form"]["sendHugeDataButton"]["buttonStyleName"]=$conf["cancleButtonStyle"];#按鈕的css樣式應該爲何,若省略的話預設會採用 __simpleButtonLinkDefaultButtonCssStyle 的樣式
11962
			#其屬性爲   "width","height","font-size","text-align"
11963
			#其屬性值爲 "300"  ,  "50"  ,    "30"   ,   "center"
11964
		#備註:
11965
		# __simpleButtonLinkDefaultButtonCssStyle,爲預設的按鈕css樣式,請勿使用相同類別名稱的css樣式,以免衝突。
11966
 
11967
			}#if end
11968
 
11969
		#如果 $conf["cancleSendingVarName"] 有設定
11970
		if(isset($conf["cancleSendingVarName"])){
11971
 
11972
			$conf["form"]["sendHugeDataButton"]["hiddenVarName"]=$conf["cancleSendingVarName"];#要傳送的隱藏變數名稱,與 $conf["hiddenVarContent"] 相對應。
11973
 
11974
			}#if end
11975
 
11976
		#如果 $conf["cancleSendingVarValue"] 有設定
11977
		if(isset($conf["cancleSendingVarValue"])){
11978
 
11979
			$conf["form"]["sendHugeDataButton"]["hiddenVarContent"]=$conf["cancleSendingVarValue"];#要傳誦的隱藏變數內容,與 $conf["hiddenVarName"] 相對應。
11980
 
11981
			}#if end
11982
 
11983
		$conf["form"]["sendHugeDataButton"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設爲"false".
11984
		$conf["form"]["sendHugeDataButton"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設爲"false"
11985
		#$conf["form"]["sendHugeDataButton"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。
11986
		#$conf["form"]["sendHugeDataButton"]["tableClass"]="__withoutBorder";#爲表格要採用的css樣式名稱,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式
11987
		#$conf["form"]["sendHugeDataButton"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
11988
		#$conf["form"]["sendHugeDataButton"]["trClass"]="__withoutBorder";#列開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式
11989
		#$conf["form"]["sendHugeDataButton"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
11990
		#$conf["form"]["sendHugeDataButton"]["tdClass"]="__withoutBorder";#行開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式
11991
		#$conf["form"]["sendHugeDataButton"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
11992
		#$conf["form"]["sendHugeDataButton"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
11993
 
11994
		$conf["form"]["sendHugeDataButton"]["method"]=$conf["cancleRequestMethod"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
11995
 
11996
		#如果 $conf["confirmActionDisplayMethod"] 有設定
11997
		if(isset($conf["confirmActionDisplayMethod"])){
11998
 
11999
			$conf["form"]["sendHugeDataButton"]["displayTarget"]=$conf["confirmActionDisplayMethod"];#頁面的呈現方法,可以是開新視窗(_blank)、在目前頁面、頁框裏面(_self)、在父頁面(_parent)、最上層頁面(_top)。
12000
 
12001
			}#if end
12002
 
12003
		#$conf["form"]["sendHugeDataButton"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。
12004
		$cancle=form::sendHugeDataButton($conf["form"]["sendHugeDataButton"]);
12005
		unset($conf["form"]["sendHugeDataButton"]);
12006
 
12007
		#如果取消的按鈕建立失敗
12008
		if($cancle["status"]=="false"){
12009
 
12010
			#設置執行失敗
12011
			$result["status"]="false";
12012
 
12013
			#設置錯誤訊息
12014
			$result["error"]=$cancle;
12015
 
12016
			#回傳結果
12017
			return $result;
12018
 
12019
			}#if end
12020
 
12021
		#如果 $conf["confirmButtonDisplayName"] 沒有設定
12022
		if(!isset($conf["confirmButtonDisplayName"])){
12023
 
12024
			$conf["confirmButtonDisplayName"]="確認";
12025
 
12026
			}#if end
12027
 
12028
		#函式說明:
12029
		#一個簡單的按鈕,按了可以到指定的頁面。同時也可以傳送多個隱藏的變數
12030
		#回傳的結果
12031
		#$result,語法內容
12032
		#必填參數:
12033
		$conf["form"]["sendHugeDataButton"]["actionPage"]=$conf["confirmActionPage"];#按鈕按了之後要到哪個地方?若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面。
12034
		$conf["form"]["sendHugeDataButton"]["buttonDisplayValue"]=$conf["confirmButtonDisplayName"];#按鈕上要顯示的文字
12035
		#可省略參數:
12036
 
12037
		#如果 $conf["confirmButtonStyle"] 存在
12038
		if(isset($conf["confirmButtonStyle"])){
12039
 
12040
			$conf["form"]["sendHugeDataButton"]["buttonStyleName"]=$conf["confirmButtonStyle"];#按鈕的css樣式應該爲何,若省略的話預設會採用 __simpleButtonLinkDefaultButtonCssStyle 的樣式
12041
			#其屬性爲   "width","height","font-size","text-align"
12042
			#其屬性值爲 "300"  ,  "50"  ,    "30"   ,   "center"
12043
		#備註:
12044
		# __simpleButtonLinkDefaultButtonCssStyle,爲預設的按鈕css樣式,請勿使用相同類別名稱的css樣式,以免衝突。
12045
 
12046
			}#if end
12047
 
12048
		#如果 $conf["confirmSendingVarName"] 有設定
12049
		if(isset($conf["confirmSendingVarName"])){
12050
 
12051
			$conf["form"]["sendHugeDataButton"]["hiddenVarName"]=$conf["confirmSendingVarName"];#要傳送的隱藏變數名稱,與 $conf["hiddenVarContent"] 相對應。
12052
 
12053
			}#if end
12054
 
12055
		#如果 $conf["confirmSendingVarValue"] 有設定
12056
		if(isset($conf["confirmSendingVarValue"])){
12057
 
12058
			$conf["form"]["sendHugeDataButton"]["hiddenVarContent"]=$conf["confirmSendingVarValue"];#要傳誦的隱藏變數內容,與 $conf["hiddenVarName"] 相對應。
12059
 
12060
			}#if end
12061
 
12062
		$conf["form"]["sendHugeDataButton"]["method"]=$conf["confirmRequestMethod"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
12063
		$conf["form"]["sendHugeDataButton"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設爲"false".
12064
		$conf["form"]["sendHugeDataButton"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設爲"false"
12065
		#$conf["form"]["sendHugeDataButton"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。
12066
		#$conf["form"]["sendHugeDataButton"]["tableClass"]="__withoutBorder";#爲表格要採用的css樣式名稱,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式
12067
		#$conf["form"]["sendHugeDataButton"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
12068
		#$conf["form"]["sendHugeDataButton"]["trClass"]="__withoutBorder";#列開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式
12069
		#$conf["form"]["sendHugeDataButton"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
12070
		#$conf["form"]["sendHugeDataButton"]["tdClass"]="__withoutBorder";#行開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式
12071
		#$conf["form"]["sendHugeDataButton"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
12072
		#$conf["form"]["sendHugeDataButton"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
12073
 
12074
		#如果 $conf["confirmActionDisplayMethod"] 有設定
12075
		if(isset($conf["confirmActionDisplayMethod"])){
12076
 
12077
			$conf["form"]["sendHugeDataButton"]["displayTarget"]=$conf["confirmActionDisplayMethod"];#頁面的呈現方法,可以是開新視窗(_blank)、在目前頁面、頁框裏面(_self)、在父頁面(_parent)、最上層頁面(_top)。
12078
 
12079
			}#if end
12080
 
12081
		#$conf["form"]["sendHugeDataButton"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。
12082
		$confirm=form::sendHugeDataButton($conf["form"]["sendHugeDataButton"]);
12083
		unset($conf["form"]["sendHugeDataButton"]);
12084
 
12085
		#如果確認的按鈕建立失敗
12086
		if($confirm["status"]=="false"){
12087
 
12088
			#設置執行失敗
12089
			$result["status"]="false";
12090
 
12091
			#設置錯誤訊息
12092
			$result["error"]=$confirm;
12093
 
12094
			#回傳結果
12095
			return $result;
12096
 
12097
			}#if end
12098
 
12099
		#建立一欄表格
12100
		#函式說明:
12101
		#建立欄的元素,以及指定裏面要放什麼內容
12102
		#回傳的變數:
12103
		#$result["content"],建立欄元素的語法
12104
		#$result["status"],"true"代表執行成功;"false"代表執行失敗。
12105
		#$result["error"],錯誤訊息陣列
12106
		#必填參數:
12107
		$conf["table::printColumn"]["trClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
12108
		$conf["table::printColumn"]["tdClass"]="__withoutBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
12109
		$conf["table::printColumn"]["tdContent"]=array($cancle["content"],$message["content"],$confirm["content"]);#列裏面要放的元素是?如果要空一列則可以輸array("&nbsp;")
12110
		#可省略參數:
12111
		$conf["table::printColumn"]["tableStartClass"]="__withoutBorder";#列的樣式,預設為"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
12112
		$conf["table::printColumn"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是",預設為"false".
12113
		$conf["table::printColumn"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是",預設為"false".
12114
		#$conf["formStart"]="true";#是否要有表單的開始,預設為"false".
12115
		#$conf["formName"]="";#該表單的名稱
12116
		#$conf["formAction"]="";#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置
12117
		#$conf["formTarget"]="_self";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
12118
		#$conf["formEnd"]="true";#是否要有表單的結束,預設為"false".
12119
		$conf["spaceBlockAferPerElement"]="true";#是否每個欄元素(除了最後一個元素)後面都要空一列。"true"代表要空一列.預設是不空一列.
12120
		$printColumn=table::printColumn($conf["table::printColumn"]);
12121
		unset($conf["table::printColumn"]);
12122
 
12123
		#如果建立一欄表格失敗
12124
		if($printColumn["status"]=="false"){
12125
 
12126
			#設置執行失敗
12127
			$result["status"]="false";
12128
 
12129
			#設置錯誤訊息
12130
			$result["error"]=$printColumn;
12131
 
12132
			#回傳結果
12133
			return $result;
12134
 
12135
			}#if end
12136
 
12137
		#取得一欄表格的語法
12138
		$result["content"]=$result["content"].$printColumn["content"];
12139
 
12140
		#設置執行正常
12141
		$result["status"]="true";
12142
 
12143
		#回傳結果
12144
		return $result;
12145
 
12146
		}#function customConfirm end
12147
 
12148
	/*
12149
	#函式說明:
12150
	#上傳檔案的表單
12151
	#回傳結果:
12152
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
12153
	#$result["function"],當前執行的函數.
12154
	#$result["error"],錯誤訊息陣列.
12155
	#$result["content"],上傳檔案的語法.
12156
	#必填參數:
12157
	#$conf["formFileName"],字串,該檔案上傳時的表單名稱。
12158
	$conf["formFileName"]="";
12159
	#可省略參數:
12160
	#$conf["acceptType"],字串,限定檔案的類型為"video/*","audio/*","image/*",預設不限定.
12161
	#$conf["acceptType"]="";
12162
	#$conf["class"],字串,該上傳表單所要套用的css樣式,若省略則採用預設的css樣式"__qbpwcf_inputFileCssStyle",其屬性爲 width:100% font-size:30px
12163
	#$conf["class"]="";
12164
	#$conf["id"],字串,爲該上傳表單的id,預設跟$conf["formFileName"]一樣.
12165
	#$conf["id"]="";
12166
	#$conf["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
12167
	#$conf["required"]="true";
12168
	#$conf["comment"],字串,輔助說明的文字,會出現在檔案上傳的上一行.
12169
	#$conf["comment"]="";
12170
	#$conf["formStart"],字串,爲是否要以<form>開頭,"true"表示"是",也可以看成表單的開始,預設為"false".
12171
	#$conf["formStart"]="true";
12172
	#$conf["formAction"],字串,表單遞交的目的地,若$conf["formStart"]為"true",則該參數不能省略,預設為"false".
12173
	#$conf["formAction"]="";
12174
	#$conf["formName"],字串,爲該表單的名稱
12175
	#$conf["formName"]="";
12176
	#$conf["formMethod"],字串,爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
12177
	#$conf["formMethod"]="";
12178
	#$conf["formTarget"],字串,為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
12179
	#$conf["formTarget"]="";
12180
	#$conf["formEnd"],字串,爲是否要以<form>結尾,"true"表示"是",也可以看成表單的結束,預設為"false".
12181
	#$conf["formEnd"]="true";
12182
	#參考資料:
12183
	#http://www.w3schools.com/tags/tag_input.asp
12184
	#備註:
12185
	#無.
12186
	*/
12187
	public static function inputFile(&$conf){
12188
 
12189
		#初始化要回傳的變數
12190
		$result=array();
12191
 
12192
		#設置當前執行的函式
12193
		$result["function"]=__FUNCTION__;
12194
 
12195
		#初始化表單開始的語法
12196
		$result["content"]="";
12197
 
12198
		#如果 $conf 不為陣列
12199
		if(gettype($conf)!="array"){
12200
 
12201
			#設置執行失敗
12202
			$result["status"]="false";
12203
 
12204
			#設置執行錯誤訊息
12205
			$result["error"][]="\$conf變數須為陣列形態";
12206
 
12207
			#如果傳入的參數為 null
12208
			if($conf==null){
12209
 
12210
				#設置執行錯誤訊息
12211
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
12212
 
12213
				}#if end
12214
 
12215
			#回傳結果
12216
			return $result;
12217
 
12218
			}#if end
12219
 
12220
		#檢查參數
12221
		#函式說明:
12222
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
12223
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
12224
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
12225
		#$result["function"],當前執行的函式名稱.
12226
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
12227
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
12228
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
12229
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
12230
		#必填參數:
12231
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
12232
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
12233
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
12234
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("formFileName");
12235
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
12236
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
12237
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
12238
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
12239
		#可省略參數:
12240
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
12241
		#$conf["canBeEmptyString"]="false";
12242
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
12243
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("acceptType","class","id","comment","formStart","formAction","formName","formMethod","formTarget","formEnd","required");
12244
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
12245
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string","string","string","string","string");
12246
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
12247
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,"__qbpwcf_inputFileCssStyle","\$conf[\"formFileName\"]",null,"false",null,null,"post","_self","false","false");
12248
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
12249
		#$conf["arrayCountEqualCheck"][]=array();
12250
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
12251
		unset($conf["variableCheck::checkArguments"]);
12252
 
12253
		#如果檢查參數失敗
12254
		if($checkResult["status"]=="false"){
12255
 
12256
			#設置執行失敗
12257
			$result["status"]="false";
12258
 
12259
			#設置執行錯誤
12260
			$result["error"]=$checkResult;
12261
 
12262
			#回傳結果
12263
			return $result;
12264
 
12265
			}#if end
12266
 
12267
		#如果檢查參數不通過
12268
		if($checkResult["passed"]=="false"){
12269
 
12270
			#設置執行失敗
12271
			$result["status"]="false";
12272
 
12273
			#設置執行錯誤
12274
			$result["error"]=$checkResult;
12275
 
12276
			#回傳結果
12277
			return $result;
12278
 
12279
			}#if end
12280
 
12281
		#如果 $conf["formStart"] 等於 "true"
12282
		if($conf["formStart"]=="true"){
12283
 
12284
			#函式說明:
12285
			#表單開始
12286
			#回傳結果:
12287
			#$result,表單開始的語法
12288
			#必填參數:
12289
			$conf["form"]["start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容
12290
			#可省略參數:
12291
 
12292
			#如果 $conf["formName"] 有設置
12293
			if(isset($conf["formName"])){
12294
 
12295
				#則設定其數值
12296
				$conf["form"]["start"]["name"]=$conf["formName"];#爲該表單的名稱
12297
 
12298
				}#if end
12299
 
12300
			#設定 method 參數
12301
			$conf["form"]["start"]["method"]=$conf["formMethod"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
12302
 
12303
			#設定 "formTarget" 參數
12304
			$conf["form"]["start"]["target"]=$conf["formTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
12305
 
12306
			#$conf["form"]["start"]["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是;
12307
			#$conf["form"]["start"]["tableClass"]=$conf["tableClass"];#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
12308
			$formStart=form::start($conf["form"]["start"]);
12309
			unset($conf["form"]["start"]);
12310
 
12311
			#串接表單開始
12312
			$result["content"]=$result["content"].$formStart["content"];
12313
 
12314
			}#if end
12315
 
12316
		#過濾 $conf["formFileName"] 避免錯誤
12317
		#函式說明:
12318
		#處理字串避免網頁出錯
12319
		#回傳結果:
12320
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
12321
		#$result["function"],當前執行的函數.
12322
		#$result["content"],爲處理好的字串.
12323
		#$result["error"],錯誤訊息陣列.
12324
		#必填參數:
12325
		$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["formFileName"];#爲要處理的字串
12326
		#可省略的參數:
12327
		$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
12328
			#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
12329
			#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
12330
		#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
12331
		$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
12332
		unset($conf["stringProcess::correctCharacter"]);
12333
 
12334
		#debug
12335
		#var_dump($correctCharacter);
12336
 
12337
		#如果過濾字串失敗
12338
		if($correctCharacter["status"]=="false"){
12339
 
12340
			#設置執行失敗
12341
			$result["status"]="false";
12342
 
12343
			#設置執行錯誤訊息
12344
			$result["error"]=$correctCharacter;
12345
 
12346
			#回傳結果
12347
			return $result;
12348
 
12349
			}#if end
12350
 
12351
		#置換過濾好了的$conf["name"]
12352
		$conf["formFileName"]=$correctCharacter["content"];
12353
 
12354
		#過濾 $conf["id"] 避免錯誤
12355
		#函式說明:
12356
		#處理字串避免網頁出錯
12357
		#回傳結果:
12358
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
12359
		#$result["function"],當前執行的函數.
12360
		#$result["content"],爲處理好的字串.
12361
		#$result["error"],錯誤訊息陣列.
12362
		#必填參數:
12363
		$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["id"];#爲要處理的字串
12364
		#可省略的參數:
12365
		$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
12366
			#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
12367
			#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
12368
		#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
12369
		$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
12370
		unset($conf["stringProcess::correctCharacter"]);
12371
 
12372
		#debug
12373
		#var_dump($correctCharacter);
12374
 
12375
		#如果過濾字串失敗
12376
		if($correctCharacter["status"]=="false"){
12377
 
12378
			#設置執行失敗
12379
			$result["status"]="false";
12380
 
12381
			#設置執行錯誤訊息
12382
			$result["error"]=$correctCharacter;
12383
 
12384
			#回傳結果
12385
			return $result;
12386
 
12387
			}#if end
12388
 
12389
		#置換過濾好了的$conf["id"]
12390
		$conf["id"]=$correctCharacter["content"];
12391
 
12392
		#設定id
12393
		$conf["id"]=" id=".$conf["id"]." ";
12394
 
12395
		#設定 css 樣式
12396
		$conf["class"]=" class=".$conf["class"]." ";
12397
 
12398
		#如果 $conf["comment"] 有設置
12399
		if(isset($conf["comment"])){
12400
 
12401
			#放置說明文字
12402
			$result["content"]=$result["content"]."<span ".$conf["class"]." >".$conf["comment"]."</span><br>";
12403
 
12404
			}#if end
12405
 
12406
		#如果有設置 $conf["acceptType"]
12407
		if(isset($conf["acceptType"])){
12408
 
12409
			#設置 "accept" 屬性
12410
			$conf["acceptType"]=" accept=".$conf["acceptType"]." ";
12411
 
12412
			}#if end
12413
 
12414
		#反之
12415
		else{
12416
 
12417
			#設置為 ""
12418
			$conf["acceptType"]="";
12419
 
12420
			}#else end
12421
 
12422
		#如果 $conf["required"] 為 "true"
12423
		if($conf["required"]=="true"){
12424
 
12425
			#設置 "required" 屬性
12426
			$conf["required"]="required";
12427
 
12428
			}#if end
12429
 
12430
		#反之
12431
		else{
12432
 
12433
			#設置為 ""
12434
			$conf["required"]="";
12435
 
12436
			}#else end
12437
 
12438
		#放置上傳檔案表單的語法
12439
		$result["content"]=$result["content"]."<input type = file ".$conf["class"]." name = ".$conf["formFileName"]." ".$conf["id"]." ".$conf["acceptType"]." ".$conf["required"]." >";
12440
 
12441
		#如果 $conf["formEnd"] 等於 "true"
12442
		if($conf["formEnd"]=="true"){
12443
 
12444
			$conf["form"]["end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。
12445
			$formEnd=form::end($conf["form"]["end"]);
12446
			unset($conf["form"]["end"]);
12447
 
12448
			#如果表單結束失敗
12449
			if($formEnd["status"]=="false"){
12450
 
12451
				#設置執行失敗
12452
				$result["status"]="false";
12453
 
12454
				#設置執行錯誤
12455
				$result["error"]=$formEnd;
12456
 
12457
				#回傳結果
12458
				return $result;
12459
 
12460
				}#if end
12461
 
12462
			#串接表單結束
12463
			$result["content"]=$result["content"].$formEnd["content"];
12464
 
12465
			}#if end
12466
 
12467
		#設置執行正常
12468
		$result["status"]="true";
12469
 
12470
		#回傳語法
12471
		return $result;
12472
 
12473
		}#function inputFile end
12474
 
12475
	/*
12476
	#函式說明:
12477
	#可以瀏覽要上傳的檔案
12478
	#回傳結果:
12479
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
12480
	#$result["function"],當前執行的函數.
12481
	#$result["error"],錯誤訊息陣列.
12482
	#$result["content"],上傳檔案的語法.
12483
	#必填參數:
12484
	#$conf["formFileName"],字串,該上傳檔案的表單名稱.
12485
	$conf["formFileName"]="";
12486
	#可省略參數:
12487
	#$conf["maxFileSize"],字串,檔案的最大限制,單位是位元組(byte)。1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設是10240000(10MB)
12488
	#$conf["maxFileSize"]="10240000";
12489
	#$conf["browseButtonClass"],字串,瀏覽檔案的按鈕樣式,預設為"__qbpwcf_inputFileCssStyle".
12490
	#$conf["browseButtonClass"]="__inputFileCssStyle";
12491
	#$conf["acceptType"],字串,限定檔案的類型為"video/*","audio/*","image/*",預設不限定.
12492
	#$conf["acceptType"]="";
12493
	#$conf["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
12494
	#$conf["required"]="true";
12495
	#$conf["trStart"],字串,爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設為"false".
12496
	#$conf["trStart"]="true";
12497
	#$conf["trClass"],字串,列的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式,預設為"__withoutBorder".
12498
	#$conf["trClass"]="__withoutBorder";
12499
	#$conf["tdStart"],字串,爲是否要以<td>開頭,"true"表示"是",也可以看成列裏面的元素開始,預設為"false".
12500
	#$conf["tdStart"]="false";
12501
	#$conf["tdClass"],字串,行的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式,預設為"__withoutBorder".
12502
	#$conf["tdClass"]="__withoutBorder";
12503
	#$conf["tdEnd"],字串,爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設為"false".
12504
	#$conf["tdEnd"]="true";
12505
	#$conf["trEnd"],字串,爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設為"false".
12506
	#$conf["trEnd"]="true";
12507
	#$conf["formStart"],字串,是否為表單的開始,"true"為是,預設為"false".
12508
	#$conf["formStart"]="true";
12509
	#$conf["formName"],字串,表單的名稱
12510
	#$conf["formName"]="";
12511
	#$conf["formAction"],字串,表單的目標,若有設置$conf["formStart"]為"true",則預設為php檔案自己
12512
	#$conf["formAction"]="";
12513
	#$conf["formTarget"],字串,表單要呈現回應的位置,預設為"_self".
12514
	#$conf["formTarget"]="_self";
12515
	#$conf["formEnd"],字串,是否為表單的結束,"true"為是,預設為"false".
12516
	#$conf["formEnd"]="true";
12517
	#$conf["comment"],字串,該上傳檔案的註解,預設不顯示.
12518
	#$conf["comment"]="";
12519
	#參考資料:
12520
	#無.
12521
	#備註:
12522
	#無.
12523
	*/
12524
	public static function uploadOneFile(&$conf){
12525
 
12526
		#初始化要回傳的變數
12527
		$result=array();
12528
 
12529
		#設置當前執行的函式
12530
		$result["function"]=__FUNCTION__;
12531
 
12532
		#初始化表單開始的語法
12533
		$result["content"]="";
12534
 
12535
		#如果 $conf 不為陣列
12536
		if(gettype($conf)!="array"){
12537
 
12538
			#設置執行失敗
12539
			$result["status"]="false";
12540
 
12541
			#設置執行錯誤訊息
12542
			$result["error"][]="\$conf變數須為陣列形態";
12543
 
12544
			#如果傳入的參數為 null
12545
			if($conf==null){
12546
 
12547
				#設置執行錯誤訊息
12548
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
12549
 
12550
				}#if end
12551
 
12552
			#回傳結果
12553
			return $result;
12554
 
12555
			}#if end
12556
 
12557
		#檢查參數
12558
		#函式說明:
12559
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
12560
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
12561
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
12562
		#$result["function"],當前執行的函式名稱.
12563
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
12564
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
12565
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
12566
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
12567
		#必填參數:
12568
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
12569
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
12570
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
12571
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("formFileName");
12572
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
12573
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
12574
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
12575
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
12576
		#可省略參數:
12577
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
12578
		#$conf["canBeEmptyString"]="false";
12579
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
12580
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("maxFileSize","browseButtonClass","trStart","trClass","tdStart","tdClass","tdEnd","trEnd","formStart","formAction","formTarget","formEnd","comment","formName","acceptType","required");
12581
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
12582
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string");
12583
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
12584
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("10240000","__qbpwcf_inputFileCssStyle","false","withoutBorder","false","withoutBorder","false","false","false",null,"_self","false",null,null,null,"false");
12585
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
12586
		#$conf["arrayCountEqualCheck"][]=array();
12587
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
12588
		unset($conf["variableCheck::checkArguments"]);
12589
 
12590
		#如果檢查參數失敗
12591
		if($checkResult["status"]=="false"){
12592
 
12593
			#設置執行失敗
12594
			$result["status"]="false";
12595
 
12596
			#設置執行錯誤
12597
			$result["error"]=$checkResult;
12598
 
12599
			#回傳結果
12600
			return $result;
12601
 
12602
			}#if end
12603
 
12604
		#如果檢查參數不通過
12605
		if($checkResult["passed"]=="false"){
12606
 
12607
			#設置執行失敗
12608
			$result["status"]="false";
12609
 
12610
			#設置執行錯誤
12611
			$result["error"]=$checkResult;
12612
 
12613
			#回傳結果
12614
			return $result;
12615
 
12616
			}#if end
12617
 
12618
		#建立沒有框線的表單css樣式
12619
		#函式說明:
12620
		#創建 css 樣式
12621
		#必填參數:
12622
		$conf_createCssStyle["cssStyleName"]="__withoutBorderUploadOneFileCssStyle";#為該 css 樣式的名稱,不能以數字開頭。
12623
		$conf_createCssStyle["attributes"]=array("width","font-size","border","border-style");#為屬性名稱,須為陣列值
12624
		$conf_createCssStyle["content"]=array("100%","30px","0px","solid");#為屬性值,須為陣列值
12625
		$css=css::createCssStyle($conf_createCssStyle);
12626
		unset($conf_createCssStyle);
12627
 
12628
		#若創建css樣式失敗
12629
		if($css["status"]=="false"){
12630
 
12631
			#設置執行失敗
12632
			$result["status"]="false";
12633
 
12634
			#設置執行錯誤
12635
			$result["error"]=$css;
12636
 
12637
			#回傳結果
12638
			return $result;
12639
 
12640
			}#if end
12641
 
12642
		#串接css語法
12643
		$result["content"]=$result["content"].$css["content"];
12644
 
12645
		#建立有框線的表單css樣式
12646
		#函式說明:
12647
		#創建 css 樣式
12648
		#必填參數:
12649
		$conf_createCssStyle["cssStyleName"]="__withBorderUploadOneFileCssStyle";#為該 css 樣式的名稱,不能以數字開頭。
12650
		$conf_createCssStyle["attributes"]=array("width","font-size","border","border-style");#為屬性名稱,須為陣列值
12651
		$conf_createCssStyle["content"]=array("100%","30px","1px","solid");#為屬性值,須為陣列值
12652
		$css=css::createCssStyle($conf_createCssStyle);
12653
		unset($conf_createCssStyle);
12654
 
12655
		#若創建css樣式失敗
12656
		if($css["status"]=="false"){
12657
 
12658
			#設置執行失敗
12659
			$result["status"]="false";
12660
 
12661
			#設置執行錯誤
12662
			$result["error"]=$css;
12663
 
12664
			#回傳結果
12665
			return $result;
12666
 
12667
			}#if end
12668
 
12669
		#串接css語法
12670
		$result["content"]=$result["content"].$css["content"];
12671
 
12672
		#如果 $conf["trStart"] 等於 "true"
12673
		if($conf["trStart"]=="true"){
12674
 
12675
			#套用指定的css樣式
12676
			$conf["table"]["trStart"]["class"]=$conf["trClass"];
12677
 
12678
			#函式說明:
12679
			#列開始
12680
			#回傳結果:
12681
			#$result,列開始的語法
12682
			#必填寫的參數:
12683
			#$conf["table"]["trStart"]["class"]="";#該 tr 要套用套用的 css 樣式若爲 "" 則會採用預設的css樣式 __defaultTrCsssStyle,其屬性爲 border:1px solid blue
12684
			$trStart=table::trStart($conf["table"]["trStart"]);
12685
			unset($conf["table"]["trStart"]);
12686
 
12687
			#如果列歐開始結束
12688
			if($trStart["status"]=="false"){
12689
 
12690
				#設置執行失敗
12691
				$result["status"]="false";
12692
 
12693
				#設置執行錯誤
12694
				$result["error"]=$trStart;
12695
 
12696
				#回傳結果
12697
				return $result;
12698
 
12699
				}#if end
12700
 
12701
			#串接列開始
12702
			$result["content"]=$result["content"].$trStart["content"];
12703
 
12704
			}#if end
12705
 
12706
		#如果 $conf["tdStart"] 等於 "true"
12707
		if($conf["tdStart"]=="true"){
12708
 
12709
			#套用指定的css樣式
12710
			$conf["table"]["tdStart"]["class"]=$conf["tdClass"];
12711
 
12712
			#函式說明:
12713
			#列開始
12714
			#回傳結果:
12715
			#$result,列開始的語法
12716
			#必填寫的參數:
12717
			#$conf["table"]["tdStart"]["class"]="";#該 td 要套用套用的 css 樣式若爲 "" 則會採用預設的css樣式 __defaultTrCsssStyle,其屬性爲 border:1px solid blue
12718
			$tdStart=table::tdStart($conf["table"]["tdStart"]);
12719
			unset($conf["table"]["tdStart"]);
12720
 
12721
			#如果欄開始結束
12722
			if($tdStart["status"]=="false"){
12723
 
12724
				#設置執行失敗
12725
				$result["status"]="false";
12726
 
12727
				#設置執行錯誤
12728
				$result["error"]=$tdStart;
12729
 
12730
				#回傳結果
12731
				return $result;
12732
 
12733
				}#if end
12734
 
12735
			#串接欄開始
12736
			$result["content"]=$result["content"].$tdStart["content"];
12737
 
12738
			}#if end
12739
 
12740
		#如果 $conf["formStart"] 為 "true"
12741
		if($conf["formStart"]=="true"){
12742
 
12743
			#函式說明:
12744
			#表單開始
12745
			#回傳結果:
12746
			#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
12747
			#$result["error"],錯誤訊息陣列.
12748
			#$resutl["function"],當前執行的函式名稱.
12749
			#$result["content"],表單開始的語法.
12750
			#必填參數:
12751
			$conf["form::start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容
12752
			#可省略參數:
12753
			#$conf["legend"]="";#顯示表單的標題
12754
 
12755
			#如果 $conf["formName"] 有設置
12756
			if(isset($conf["formName"])){
12757
 
12758
				$conf["form::start"]["name"]=$conf["formName"];#爲該表單的名稱
12759
 
12760
				}#if end
12761
 
12762
			#$conf["method"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
12763
			$conf["form::start"]["target"]=$conf["formTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
12764
			#$conf["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是,"false"為否,預設為"false".
12765
			#$conf["tableClass"]="";#表格要套用的css樣式,預設爲"__withoutBorder"無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
12766
			#$conf["showFieldsetBorder"]="false";#是否要顯示表單區域的框線,預設為"false"不顯示,"true"代表要顯示.
12767
			#參考資料:
12768
			#http://www.w3schools.com/html/html_forms.asp
12769
			#http://www.w3schools.com/tags/tag_fieldset.asp
12770
			$formStart=form::start($conf["form::start"]);
12771
			unset($conf["form::start"]);
12772
 
12773
			#如果表單開始失敗
12774
			if($formStart["status"]=="false"){
12775
 
12776
				#設置執行失敗
12777
				$result["status"]="false";
12778
 
12779
				#設置執行錯誤
12780
				$result["error"]=$formStart;
12781
 
12782
				#回傳結果
12783
				return $result;
12784
 
12785
				}#if end
12786
 
12787
			#串接表單的開始
12788
			$result["content"]=$result["content"].$formStart["content"];
12789
 
12790
			}#if end
12791
 
12792
		#設定上傳到檔案最大大小限制,單位爲byte
12793
		$conf_inputHidden["name"]="max_file_size";
12794
		$conf_inputHidden["value"]=$conf["maxFileSize"];
12795
		$hiddenVar=form::inputHidden($conf_inputHidden);
12796
		unset($conf_inputHidden);#清空變數避免出錯
12797
 
12798
		#建立隱藏的表單失敗
12799
		if($hiddenVar["status"]=="false"){
12800
 
12801
			#設置執行失敗
12802
			$result["status"]="false";
12803
 
12804
			#設置執行錯誤
12805
			$result["error"]=$hiddenVar;
12806
 
12807
			#回傳結果
12808
			return $result;
12809
 
12810
			}#if end
12811
 
12812
		#串接檔案大小的限制
12813
		$result["content"]=$result["content"].$hiddenVar["content"];
12814
 
12815
		#函式說明:
12816
		#上傳檔案的表單
12817
		#回傳結果:
12818
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
12819
		#$result["function"],當前執行的函數.
12820
		#$result["error"],錯誤訊息陣列.
12821
		#$result["content"],上傳檔案的語法.
12822
		#必填參數:
12823
		#$conf["formFileName"],字串,該檔案上傳時的表單名稱。
12824
		$conf["form::inputFile"]["formFileName"]=$conf["formFileName"];
12825
		#可省略參數:
12826
 
12827
		#如果已有設置 $conf["acceptType"]
12828
		if(isset($conf["acceptType"])){
12829
 
12830
			#$conf["form::inputFile"]["acceptType"],字串,限定檔案的類型為"video/*","audio/*","image/*",預設不限定.
12831
			$conf["form::inputFile"]["acceptType"]=$conf["acceptType"];
12832
 
12833
			}#if end
12834
 
12835
		#$conf["form::inputFile"]["class"],字串,該上傳表單所要套用的css樣式,若省略則採用預設的css樣式"__inputFileCssStyle",其屬性爲 width:100% font-size:30px
12836
		$conf["form::inputFile"]["class"]=$conf["browseButtonClass"];
12837
		#$conf["id"],字串,爲該上傳表單的id,預設跟$conf["formFileName"]一樣.
12838
		#$conf["id"]="";
12839
 
12840
		#如果有設置 $conf["required"]
12841
		if(isset($conf["required"])){
12842
 
12843
			#$conf["form::inputFile"]["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
12844
			$conf["form::inputFile"]["required"]=$conf["required"];
12845
 
12846
			}#if end
12847
 
12848
		#有設置註解
12849
		if(isset($conf["comment"])){
12850
 
12851
			#$conf["form::inputFile"]["comment"],字串,輔助說明的文字,會出現在檔案上傳的上一行.
12852
			$conf["form::inputFile"]["comment"]=$conf["comment"];
12853
 
12854
			}#if end
12855
 
12856
		#$conf["form::inputFile"]["formStart"],字串,爲是否要以<form>開頭,"true"表示"是",也可以看成表單的開始,預設為"false".
12857
		#$conf["form::inputFile"]["formStart"]=$conf["formStart"];
12858
		#$conf["form::inputFile"]["formAction"],字串,表單遞交的目的地,若$conf["formStart"]為"true",則該參數不能省略,預設為"false".
12859
		#$conf["form::inputFile"]["formAction"]=$conf["formAction"];
12860
		#$conf["form::inputFile"]["formName"],字串,爲該表單的名稱
12861
		#$conf["form::inputFile"]["formName"]=$conf["formName"];
12862
		#$conf["form::inputFile"]["formMethod"],字串,爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
12863
		#$conf["form::inputFile"]["formMethod"]="";
12864
		#$conf["form::inputFile"]["formTarget"],字串,為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
12865
		#$conf["form::inputFile"]["formTarget"]=$conf["formTarget"];
12866
		#$conf["form::inputFile"]["formEnd"],字串,爲是否要以<form>結尾,"true"表示"是",也可以看成表單的結束,預設為"false".
12867
		$conf["form::inputFile"]["formEnd"]=$conf["formEnd"];
12868
		#參考資料:
12869
		#http://www.w3schools.com/tags/tag_input.asp
12870
		$inputFile=form::inputFile($conf["form::inputFile"]);
12871
		unset($conf["form::inputFile"]);
12872
 
12873
		#如果上傳檔案的表單建立失敗
12874
		if($inputFile["status"]=="false"){
12875
 
12876
			#設置執行失敗
12877
			$result["status"]="false";
12878
 
12879
			#設置執行錯誤
12880
			$result["error"]=$inputFile;
12881
 
12882
			#回傳結果
12883
			return $result;
12884
 
12885
			}#if end
12886
 
12887
		#串接上傳檔案的表單
12888
		$result["content"]=$result["content"].$inputFile["content"];
12889
 
12890
		#如果 $conf["tdEnd"] 等於 "true"
12891
		if($conf["tdEnd"]=="true"){
12892
 
12893
			#串接欄的結束tag
12894
			$result["content"]=$result["content"]."</td>";
12895
 
12896
			}#if end
12897
 
12898
		#如果 $conf["trEnd"] 等於 "true"
12899
		if($conf["trEnd"]=="true"){
12900
 
12901
			#串接列的結束tag
12902
			$result["content"]=$result["content"]."</tr>";
12903
 
12904
			}#if end
12905
 
12906
		#設置執行正常
12907
		$result["status"]="true";
12908
 
12909
		#回傳結果
12910
		return $result;
12911
 
12912
		}#function uploadOneFile end
12913
 
12914
	/*
12915
	#函式說明:
12916
	#上傳一個檔案,包含送出鈕與回上頁的按鈕
12917
	#回傳結果:
12918
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
12919
	#$result["function"],當前執行的函數.
12920
	#$result["error"],錯誤訊息陣列.
12921
	#$result["content"],語法.
12922
	#必填參數:
12923
	#$conf["formFileName"],字串,該上傳檔案的表單名稱.
12924
	$conf["formFileName"]="";
12925
	#$conf["actionPage"],字串,處理表單資訊的頁面.
12926
	$conf["actionPage"]="";
12927
	#可省略參數:
12928
	#$conf["backButtonName"],字串,退回上一頁的按鈕要顯示的名稱,預設爲"回上頁"
12929
	#$conf["backButtonName"]="回上頁";
12930
	#$conf["backPage"],字串,返回的按鈕點了之後要到哪個頁面,預設是不使用.
12931
	#$conf["backPage"]="";
12932
	#$conf["backTarget"],字串,返回按鈕的顯示區塊.
12933
	#$conf["backTarget"]="";
12934
	#$conf["backButtonClass"],字串,回上頁按鈕的css樣式,預設為"__simpleButtonLinkDefaultButtonCssStyle".
12935
	#$conf["backButtonClass"]="__simpleButtonLinkDefaultButtonCssStyle";
12936
	#$conf["comment"],字串,該上傳檔案的註解,預設不顯示.
12937
	#$conf["comment"]="";
12938
	#$conf["formName"],字串,表單的名稱
12939
	#$conf["formName"]="";
12940
	#$conf["formTarget"],字串,表單要呈現回應的位置,預設為"_self".
12941
	#$conf["formTarget"]="_self";
12942
	#$conf["acceptType"],字串,限定檔案的類型為"video/*","audio/*","image/*",預設不限定.
12943
	#$conf["acceptType"]="";
12944
	#$conf["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
12945
	#$conf["required"]="true";
12946
	#$conf["maxFileSize"],字串,檔案的最大限制,單位是位元組(byte),1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設爲"102400000"(100MB)
12947
	#$conf["maxFileSize"]="102400000";
12948
	#$conf["browseButtonClass"],字串,瀏覽要上傳檔案的css樣式,預設為"__qbpwcf_inputFileCssStyle".
12949
	#$conf["browseButtonClass"]="__inputFileCssStyle";
12950
	#$conf["submitButtonClass"],字串,上傳按鈕的css樣式,預設為"__simpleButtonLinkDefaultButtonCssStyle".
12951
	#$conf["submitButtonClass"]="__simpleButtonLinkDefaultButtonCssStyle";
12952
	#$conf["submitButtonName"],字串,送出鈕要顯示的名稱,預設爲"上傳"
12953
	#$conf["submitButtonName"]="上傳";
12954
	#參考資料:
12955
	#無.
12956
	#備註:
12957
	#無.
12958
	*/
12959
	public static function uploadOneFileCom(&$conf){
12960
 
12961
		#初始化要回傳的變數
12962
		$result=array();
12963
 
12964
		#設置當前執行的函式
12965
		$result["function"]=__FUNCTION__;
12966
 
12967
		#初始化表單開始的語法
12968
		$result["content"]="";
12969
 
12970
		#如果 $conf 不為陣列
12971
		if(gettype($conf)!="array"){
12972
 
12973
			#設置執行失敗
12974
			$result["status"]="false";
12975
 
12976
			#設置執行錯誤訊息
12977
			$result["error"][]="\$conf變數須為陣列形態";
12978
 
12979
			#如果傳入的參數為 null
12980
			if($conf==null){
12981
 
12982
				#設置執行錯誤訊息
12983
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
12984
 
12985
				}#if end
12986
 
12987
			#回傳結果
12988
			return $result;
12989
 
12990
			}#if end
12991
 
12992
		#檢查參數
12993
		#函式說明:
12994
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
12995
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
12996
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
12997
		#$result["function"],當前執行的函式名稱.
12998
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
12999
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
13000
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
13001
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
13002
		#必填參數:
13003
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
13004
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
13005
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
13006
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("formFileName","actionPage");
13007
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
13008
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
13009
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
13010
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
13011
		#可省略參數:
13012
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
13013
		#$conf["canBeEmptyString"]="false";
13014
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
13015
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("browseButtonClass","submitButtonClass","backPage","backButtonClass","maxFileSize","submitButtonName","backButtonName","comment","formTarget","acceptType","required","formName","backTarget");
13016
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
13017
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string","string","string","string","string","string","string");
13018
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
13019
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("__qbpwcf_inputFileCssStyle","__qbpwcf_button",null,"__qbpwcf_button","102400000","上傳","回上頁",null,"_self",null,"false",null,"_self");
13020
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
13021
		#$conf["arrayCountEqualCheck"][]=array();
13022
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
13023
		unset($conf["variableCheck::checkArguments"]);
13024
 
13025
		#如果檢查參數失敗
13026
		if($checkResult["status"]=="false"){
13027
 
13028
			#設置執行失敗
13029
			$result["status"]="false";
13030
 
13031
			#設置執行錯誤
13032
			$result["error"]=$checkResult;
13033
 
13034
			#回傳結果
13035
			return $result;
13036
 
13037
			}#if end
13038
 
13039
		#如果檢查參數不通過
13040
		if($checkResult["passed"]=="false"){
13041
 
13042
			#設置執行失敗
13043
			$result["status"]="false";
13044
 
13045
			#設置執行錯誤
13046
			$result["error"]=$checkResult;
13047
 
13048
			#回傳結果
13049
			return $result;
13050
 
13051
			}#if end
13052
 
13053
		#如果$conf["backPage"]有存在,則放置回上頁的按鈕
13054
		if(isset($conf["backPage"])){
13055
 
13056
			#函式說明:
13057
			#放置按鈕
13058
			#回傳結果:
13059
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
13060
			#$result["function"],當前執行的函數.
13061
			#$result["error"],錯誤訊息陣列.
13062
			#$result["content"],按鈕語法.
13063
			#必填參數:
13064
			$conf["form::button"]["buttonDisplayValue"]=$conf["backButtonName"];#爲按鈕上顯示的文字。
13065
			#可省略參數:
13066
			$conf["form::button"]["buttonStyleName"]=$conf["backButtonClass"];#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __simpleButtonLinkDefaultButtonCssStyle 。
13067
				#其屬性爲   "width","height","font-size","text-align"
13068
				#其屬性值爲 "100%" ,  "50"  ,    "30"   ,   "center"
13069
			#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。
13070
				#"document.forms.formName.submit()"爲傳送名爲testForm的表單內容
13071
				#"window.print()"爲使用瀏覽器內建工具列印當前網頁
13072
			#$conf["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。
13073
			#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".
13074
			#$conf["tableStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"false"。
13075
			#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。
13076
			#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
13077
			#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",亦即沒有框線的樣式;"__withBorder"則爲有框線的樣式
13078
			#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".
13079
			#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
13080
			#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
13081
			#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
13082
			#$conf["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是,預設爲"false"。
13083
			$conf["form::button"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".
13084
			$conf["form::button"]["action"]=$conf["backPage"];#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用
13085
			$conf["form::button"]["target"]=$conf["backTarget"];#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用
13086
			$conf["form::button"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".
13087
			#參考資料:
13088
			#http://stackoverflow.com/questions/3014649/how-to-disable-html-button-using-javascript
13089
			$prePageButton=form::button($conf["form::button"]);
13090
			unset($conf["form::button"]);
13091
 
13092
			#如果回上頁的按鈕建立失敗
13093
			if($prePageButton["status"]=="false"){
13094
 
13095
				#設置執行失敗
13096
				$result["status"]="false";
13097
 
13098
				#設置執行錯誤
13099
				$result["error"]=$prePageButton;
13100
 
13101
				#回傳結果
13102
				return $result;
13103
 
13104
				}#if end
13105
 
13106
			#放置回上頁的按鈕
13107
			$conf["table::printColumn"]["tdContent"][]=$prePageButton["content"];
13108
 
13109
			}#if end
13110
 
13111
		#上傳檔案的表單
13112
		#函式說明:
13113
		#可以瀏覽要上傳的檔案
13114
		#回傳結果:
13115
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
13116
		#$result["function"],當前執行的函數.
13117
		#$result["error"],錯誤訊息陣列.
13118
		#$result["content"],上傳檔案的語法.
13119
		#必填參數:
13120
		#$conf["formFileName"],字串,該上傳檔案的表單名稱.
13121
		$conf["form::uploadOneFile"]["formFileName"]=$conf["formFileName"];
13122
		#可省略參數:
13123
		#$conf["form::uploadOneFile"]["maxFileSize"],字串,檔案的最大限制,單位是位元組(byte)。1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設是10240000(10MB)
13124
		$conf["form::uploadOneFile"]["maxFileSize"]=$conf["maxFileSize"];
13125
		#$conf["browseButtonClass"],字串,瀏覽檔案的按鈕樣式,預設為"__inputFileCssStyle".
13126
		$conf["form::uploadOneFile"]["browseButtonClass"]=$conf["browseButtonClass"];
13127
 
13128
		#如果有設定 $conf["acceptType"]
13129
		if(isset($conf["acceptType"])){
13130
 
13131
			#$conf["form::uploadOneFile"][["acceptType"],字串,限定檔案的類型為"video/*","audio/*","image/*",預設不限定.
13132
			$conf["form::uploadOneFile"]["acceptType"]=$conf["acceptType"];
13133
 
13134
			}#if end
13135
 
13136
		#$conf["form::uploadOneFile"]["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
13137
		$conf["form::uploadOneFile"]["required"]=$conf["required"];
13138
 
13139
		#$conf["trStart"],字串,爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設為"false".
13140
		#$conf["trStart"]="true";
13141
		#$conf["trClass"],字串,列的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式,預設為"__withoutBorder".
13142
		#$conf["trClass"]="__withoutBorder";
13143
		#$conf["tdStart"],字串,爲是否要以<td>開頭,"true"表示"是",也可以看成列裏面的元素開始,預設為"false".
13144
		#$conf["tdStart"]="false";
13145
		#$conf["tdClass"],字串,行的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式,預設為"__withoutBorder".
13146
		#$conf["tdClass"]="__withoutBorder";
13147
		#$conf["tdEnd"],字串,爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設為"false".
13148
		#$conf["tdEnd"]="true";
13149
		#$conf["trEnd"],字串,爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設為"false".
13150
		#$conf["trEnd"]="true";
13151
		#$conf["formStart"],字串,是否為表單的開始,"true"為是,預設為"false".
13152
		$conf["form::uploadOneFile"]["formStart"]="true";
13153
 
13154
		#如果有設置 $conf["formName"]
13155
		if(isset($conf["formName"])){
13156
 
13157
			#$conf["formName"],字串,表單的名稱
13158
			$conf["form::uploadOneFile"]["formName"]=$conf["formName"];
13159
 
13160
			}#if end
13161
 
13162
		#$conf["formAction"],字串,表單的目標,若有設置$conf["formStart"]為"true",則預設為php檔案自己
13163
		$conf["form::uploadOneFile"]["formAction"]=$conf["actionPage"];
13164
		#$conf["form::uploadOneFile"]["formTarget"],字串,表單要呈現回應的位置,預設為"_self".
13165
		$conf["form::uploadOneFile"]["formTarget"]=$conf["formTarget"];
13166
		#$conf["formEnd"],字串,是否為表單的結束,"true"為是,預設為"false".
13167
		#$conf["form::uploadOneFile"]["formEnd"]="false";
13168
 
13169
		#如果 $conf["comment"] 有設定
13170
		if(isset($conf["comment"])){
13171
 
13172
			#$conf["form::uploadOneFile"]["comment"],字串,該上傳檔案的註解,預設不顯示.
13173
			$conf["form::uploadOneFile"]["comment"]=$conf["comment"];
13174
 
13175
			}#if end
13176
 
13177
		$uploadOneFile=form::uploadOneFile($conf["form::uploadOneFile"]);
13178
		unset($conf["form::uploadOneFile"]);
13179
 
13180
		#如果建立上傳的表單失敗
13181
		if($uploadOneFile["status"]=="false"){
13182
 
13183
			#設置執行失敗
13184
			$result["status"]="false";
13185
 
13186
			#設置執行錯誤
13187
			$result["error"]=$uploadOneFile;
13188
 
13189
			#回傳結果
13190
			return $result;
13191
 
13192
			}#if end
13193
 
13194
		#放置上傳檔案的表單
13195
		$conf["table::printColumn"]["tdContent"][]=$uploadOneFile["content"];
13196
 
13197
		#上傳的按鈕
13198
		#函式說明:
13199
		#放置按鈕
13200
		#回傳結果:
13201
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
13202
		#$result["function"],當前執行的函數.
13203
		#$result["error"],錯誤訊息陣列.
13204
		#$result["content"],按鈕語法.
13205
		#必填參數:
13206
		$conf["form::button"]["buttonDisplayValue"]=$conf["submitButtonName"];#爲按鈕上顯示的文字。
13207
		#可省略參數:
13208
		$conf["form::button"]["buttonStyleName"]=$conf["submitButtonClass"];#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __simpleButtonLinkDefaultButtonCssStyle 。
13209
			#其屬性爲   "width","height","font-size","text-align"
13210
			#其屬性值爲 "100%" ,  "50"  ,    "30"   ,   "center"
13211
		#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。
13212
			#"document.forms.formName.submit()"爲傳送名爲testForm的表單內容
13213
			#"window.print()"爲使用瀏覽器內建工具列印當前網頁
13214
		#$conf["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。
13215
		#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".
13216
		#$conf["tableStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"false"。
13217
		#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。
13218
		#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
13219
		#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",亦即沒有框線的樣式;"__withBorder"則爲有框線的樣式
13220
		#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".
13221
		#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
13222
		#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
13223
		#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
13224
		#$conf["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是,預設爲"false"。
13225
		#$conf["form::button"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".
13226
		#$conf["form::button"]["action"]=$conf["backPage"];#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用
13227
		#$conf["target"]="";#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用
13228
		$conf["form::button"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".
13229
		#參考資料:
13230
		#http://stackoverflow.com/questions/3014649/how-to-disable-html-button-using-javascript
13231
		$submitButton=form::button($conf["form::button"]);
13232
		unset($conf["form::button"]);
13233
 
13234
		#如果回上頁的按鈕建立失敗
13235
		if($submitButton["status"]=="false"){
13236
 
13237
			#設置執行失敗
13238
			$result["status"]="false";
13239
 
13240
			#設置執行錯誤
13241
			$result["error"]=$submitButton;
13242
 
13243
			#回傳結果
13244
			return $result;
13245
 
13246
			}#if end
13247
 
13248
		#放置上傳的按鈕
13249
		$conf["table::printColumn"]["tdContent"][]=$submitButton["content"];
13250
 
13251
		#建立一欄表格
13252
		#函式說明:
13253
		#建立欄的元素,以及指定裏面要放什麼內容
13254
		#回傳的變數:
13255
		#$result["content"],建立欄元素的語法
13256
		#$result["status"],"true"代表執行成功;"false"代表執行失敗。
13257
		#$result["error"],錯誤訊息陣列
13258
		#必填參數:
13259
		$conf["table::printColumn"]["trClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
13260
		$conf["table::printColumn"]["tdClass"]="__withoutBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
13261
		#$conf["table::printColumn"]["tdContent"]=array();#列裏面要放的元素是?如果要空一列則可以輸array("&nbsp;")
13262
		#可省略參數:
13263
		#$conf["table::printColumn"]["formData"],字串,$conf["tdContent"]裡面要放的元素是否含有表單,"true"代表有,"false"代表沒有,預設為"false".
13264
		$conf["table::printColumn"]["formData"]="true";
13265
		$conf["table::printColumn"]["tableStartClass"]="__withoutBorder";#列的樣式,預設為"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
13266
		$conf["table::printColumn"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是",預設為"false".
13267
		$conf["table::printColumn"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是",預設為"false".
13268
		#$conf["formStart"]="true";#是否要有表單的開始,預設為"false".
13269
		#$conf["formName"]="";#該表單的名稱
13270
		#$conf["formAction"]="";#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置
13271
		#$conf["formTarget"]="_self";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
13272
		#$conf["formEnd"]="true";#是否要有表單的結束,預設為"false".
13273
		#$conf["table::printColumn"]["spaceBlockAferPerElement"]="true";#是否每個欄元素(除了最後一個元素)後面都要空一列。"true"代表要空一列.預設是不空一列.
13274
		$printColumn=table::printColumn($conf["table::printColumn"]);
13275
		unset($conf["table::printColumn"]);
13276
 
13277
		#串接一欄表格
13278
		$result["content"]=$result["content"].$printColumn["content"];
13279
 
13280
		#設置執行正常
13281
		$result["status"]="true";
13282
 
13283
		#回傳結果
13284
		return $result;
13285
 
13286
		}#function uploadOneFileCom end
13287
 
13288
	/*
13289
	#函式說明:
13290
	#檢測接收的檔案是否符合條件
13291
	#回傳的內容:
13292
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
13293
	#$result["function"],當前執行的函數.
13294
	#$result["error"],錯誤訊息陣列.
13295
	#$result["passed"],檢查是否都通過.
13296
	#$result["fileNameCheck"],若爲"true"則代表檔案名稱正確,"false"檔案名稱不正確.
13297
	#$result["fileSizeCheck"],若爲"true"則代表檔案大小正確。
13298
	#$result["fileTypeCheck"],若爲"true"則代表檔案類型正確。
13299
	#必填參數:
13300
	$conf["formFileName"]="";#爲該檔案上傳時候的表單名稱
13301
	#可省略參數:
13302
	#$conf["uploadedFileName"]="";#爲檔案上傳時的檔案名稱,省略則跳過此部分驗證
13303
	#$conf["uploadedFileSize"]="";#爲檔案上傳時的檔案大小,省略則跳過此部分驗證
13304
	#$conf["uploadedFileType"]=array("");#爲檔案上傳時的檔案型別,需爲陣列型別,省略則跳過此部分驗證
13305
	#參考資料:
13306
	#無.
13307
	#備註:
13308
	#無.
13309
	*/
13310
	public static function simpleFileAuthentication(&$conf){
13311
 
13312
		#初始化要回傳的變數
13313
		$result=array();
13314
 
13315
		#設置當前執行的函式
13316
		$result["function"]=__FUNCTION__;
13317
 
13318
		#初始化表單開始的語法
13319
		$result["content"]="";
13320
 
13321
		#如果 $conf 不為陣列
13322
		if(gettype($conf)!="array"){
13323
 
13324
			#設置執行失敗
13325
			$result["status"]="false";
13326
 
13327
			#設置執行錯誤訊息
13328
			$result["error"][]="\$conf變數須為陣列形態";
13329
 
13330
			#如果傳入的參數為 null
13331
			if($conf==null){
13332
 
13333
				#設置執行錯誤訊息
13334
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
13335
 
13336
				}#if end
13337
 
13338
			#回傳結果
13339
			return $result;
13340
 
13341
			}#if end
13342
 
13343
		#檢查參數
13344
		#函式說明:
13345
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
13346
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
13347
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
13348
		#$result["function"],當前執行的函式名稱.
13349
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
13350
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
13351
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
13352
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
13353
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
13354
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
13355
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
13356
		#必填參數:
13357
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
13358
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
13359
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
13360
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("formFileName");
13361
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
13362
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
13363
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
13364
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
13365
		#可省略參數:
13366
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
13367
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
13368
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
13369
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("uploadedFileName","uploadedFileSize","uploadedFileType");
13370
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
13371
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","array");
13372
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
13373
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null,null);
13374
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
13375
		#$conf["arrayCountEqualCheck"][]=array();
13376
		#參考資料:
13377
		#array_keys=>http://php.net/manual/en/function.array-keys.php
13378
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
13379
		unset($conf["variableCheck::checkArguments"]);
13380
 
13381
		#如果 $checkArguments["status"] 等於 "false"
13382
		if($checkArguments["status"]=="false"){
13383
 
13384
			#設置錯誤識別
13385
			$result["status"]="false";
13386
 
13387
			#設置錯誤訊息
13388
			$result["error"]=$checkArguments;
13389
 
13390
			#回傳結果
13391
			return $result;
13392
 
13393
			}#if end
13394
 
13395
		#如果 $checkArguments["passed"] 等於 "false"
13396
		if($checkArguments["passed"]=="false"){
13397
 
13398
			#設置錯誤識別
13399
			$result["status"]="false";
13400
 
13401
			#設置錯誤訊息
13402
			$result["error"]=$checkArguments;
13403
 
13404
			#回傳結果
13405
			return $result;
13406
 
13407
			}#if end
13408
 
13409
		#預設為檢查通過
13410
		$result["passed"]="true";
13411
 
13412
		#檢查上傳的檔案表單名稱是否正確
13413
		if(!isset($_FILES[$conf["formFileName"]])){
13414
 
13415
			#設置錯誤識別
13416
			$result["status"]="false";
13417
 
13418
			#設置錯誤訊息
13419
			$result["error"][]="未接收到名為 ".$conf["formFileName"]." 的表單變數";
13420
 
13421
			#回傳結果
13422
			return $result;
13423
 
13424
			}#if end
13425
 
13426
		#如果$conf["uploadedFileName"]有設定
13427
		if(isset($conf["uploadedFileName"])){
13428
 
13429
			#如果 $_FILES[$conf["formFileName"]]["name"] 有設定
13430
			if(isset($_FILES[$conf["formFileName"]]["name"])){
13431
 
13432
				#則驗證檔案名稱
13433
				if($_FILES[$conf["formFileName"]]["name"]==$conf["uploadedFileName"]){
13434
 
13435
					#$result["fileNameCheck"]設爲"true"
13436
					$result["fileNameCheck"]="true";
13437
 
13438
					}#if end
13439
 
13440
				#若檔案名稱驗證失敗
13441
				else{
13442
 
13443
					#$result["fileNameCheck"]設爲"false"
13444
					$result["fileNameCheck"]="false";
13445
 
13446
					#設置驗證失敗
13447
					$result["passed"]="false";
13448
 
13449
					}#if end
13450
 
13451
				}#if end
13452
 
13453
			}#if end
13454
 
13455
		#如果$conf["uploadedFileSize"]有設定
13456
		if(isset($conf["uploadedFileSize"])) {
13457
 
13458
			#如果 $_FILES[$conf["formFileName"]]["name"] 有設定
13459
			if(isset($_FILES[$conf["formFileName"]]["name"])){
13460
 
13461
				#則驗證檔案大小
13462
				if($_FILES[$conf["formFileName"]]["size"]==$conf["uploadedFileSize"]){
13463
 
13464
					#$result["fileSizeCheck"]設爲"true"
13465
					$result["fileSizeCheck"]="true";
13466
 
13467
					}#if end
13468
 
13469
				#反之檔案大小不正確
13470
				else{
13471
 
13472
					#$result["fileSizeCheck"]設爲"false"
13473
					$result["fileSizeCheck"]="false";
13474
 
13475
					#設置驗證失敗
13476
					$result["passed"]="false";
13477
 
13478
					}#else end
13479
 
13480
				}#if end
13481
 
13482
			}#if end
13483
 
13484
		#如果有設定$conf["uploadedFileType"]則檢查檔案形態是否符合規定
13485
		if(isset($conf["uploadedFileType"])){
13486
 
13487
			#如果 $_FILES[$conf["formFileName"]]["name"] 有設定
13488
			if(isset($_FILES[$conf["formFileName"]]["name"])){
13489
 
13490
				#取得可以通過驗證的檔案類型數量
13491
				$fileTypeCount=count($conf["uploadedFileType"]);
13492
 
13493
				#檔案類型只要是以下其中一種即可
13494
				for($i=0;$i<$fileTypeCount;$i++){
13495
 
13496
					#中間的幾種,若有符合的
13497
					if($_FILES[$conf["formFileName"]]['type']==$conf["uploadedFileType"][$i]){
13498
 
13499
						#符合檔案形態則設爲"true"
13500
						$result["fileTypeCheck"]="true";
13501
 
13502
						#挑出迴圈
13503
						break;
13504
 
13505
						}#if end
13506
 
13507
					#反之代表
13508
					else{
13509
 
13510
						#不符合檔案形態則設爲"false"
13511
						$result["fileTypeCheck"]="false";
13512
 
13513
						#設置驗證失敗
13514
						$result["passed"]="false";
13515
 
13516
						}#else end
13517
 
13518
					}#for end
13519
 
13520
				}#if end
13521
 
13522
			}#if end
13523
 
13524
		#如果 $result["status"] 沒有設置
13525
		if(!isset($result["status"])){
13526
 
13527
			#代表執行到這邊代表執行正常
13528
			$result["status"]="true";
13529
 
13530
			}#if end
13531
 
13532
		#回傳結果
13533
		return $result;
13534
 
13535
		}#function simpleFileAuthentication end
13536
 
13537
	/*
13538
	#函式說明:
13539
	#處理一個已上傳的檔案,用作驗證
13540
	#回傳結果:
13541
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
13542
	#$result["function"],當前執行的函數.
13543
	#$result["error"],錯誤訊息陣列.
13544
	#$result["passed"],驗證成功為"true"失敗則為false".
13545
	#$result["fileNameCheck"],若爲"true"則代表檔案名稱正確,"false"檔案名稱不正確.
13546
	#$result["fileSizeCheck"],若爲"true"則代表檔案大小正確。
13547
	#$result["fileTypeCheck"],若爲"true"則代表檔案類型正確。
13548
	#必填參數:
13549
	$conf["formFileName"]="";#該上傳檔案的表單名稱
13550
	$conf["uploadFileName"]="";#如果上傳的檔案名稱等於 $conf["uploadFileName"] 則通過第一階段驗證
13551
	$conf["uploadFileSize"]="";#如果上傳的檔案大小等於 $conf["uploadFileSize"] 則通過第二階段驗證
13552
	$conf["uploadedFileType"]="";#如果上傳的檔案類型等於 $conf["uploadedFileType"] 則通過第三階段驗證
13553
	$conf["password"]="";#供驗證用的內容。
13554
	#用戶段會取得的變數內容:
13555
	#$_SESSION["password"],用來做檢查,是否通過認證的session變數,若php設定檔沒有自動啓用session的話,此行前面必須要有 session_start();
13556
	#可省略參數:
13557
	#$conf["passAction"]="";#如果檔案驗證成功,轉址到?沒設定則不轉址
13558
	#$conf["failedAction"]="";#如果檔案驗正不通過則,轉址到?沒設定則不轉址
13559
	#參考資料:
13560
	#無.
13561
	#備註:
13562
	#無.
13563
	*/
13564
	public static function responseOneFileForAuthentication($conf){
13565
 
13566
		#初始化要回傳的變數
13567
		$result=array();
13568
 
13569
		#設置當前執行的函式
13570
		$result["function"]=__FUNCTION__;
13571
 
13572
		#初始化表單開始的語法
13573
		$result["content"]="";
13574
 
13575
		#如果 $conf 不為陣列
13576
		if(gettype($conf)!="array"){
13577
 
13578
			#設置執行失敗
13579
			$result["status"]="false";
13580
 
13581
			#設置執行錯誤訊息
13582
			$result["error"][]="\$conf變數須為陣列形態";
13583
 
13584
			#如果傳入的參數為 null
13585
			if($conf==null){
13586
 
13587
				#設置執行錯誤訊息
13588
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
13589
 
13590
				}#if end
13591
 
13592
			#回傳結果
13593
			return $result;
13594
 
13595
			}#if end
13596
 
13597
		#檢查參數
13598
		#函式說明:
13599
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
13600
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
13601
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
13602
		#$result["function"],當前執行的函式名稱.
13603
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
13604
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
13605
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
13606
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
13607
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
13608
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
13609
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
13610
		#必填參數:
13611
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
13612
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
13613
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
13614
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("formFileName","uploadedFileName","uploadedFileSize","uploadedFileType");
13615
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
13616
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string","array");
13617
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
13618
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
13619
		#可省略參數:
13620
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
13621
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
13622
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
13623
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("passAction","failedAction");
13624
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
13625
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
13626
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
13627
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null);
13628
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
13629
		#$conf["arrayCountEqualCheck"][]=array();
13630
		#參考資料:
13631
		#array_keys=>http://php.net/manual/en/function.array-keys.php
13632
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
13633
		unset($conf["variableCheck::checkArguments"]);
13634
 
13635
		#如果 $checkArguments["status"] 等於 "false"
13636
		if($checkArguments["status"]=="false"){
13637
 
13638
			#設置錯誤識別
13639
			$result["status"]="false";
13640
 
13641
			#設置錯誤訊息
13642
			$result["error"]=$checkArguments;
13643
 
13644
			#回傳結果
13645
			return $result;
13646
 
13647
			}#if end
13648
 
13649
		#如果 $checkArguments["passed"] 等於 "false"
13650
		if($checkArguments["passed"]=="false"){
13651
 
13652
			#設置錯誤識別
13653
			$result["status"]="false";
13654
 
13655
			#設置錯誤訊息
13656
			$result["error"]=$checkArguments;
13657
 
13658
			#回傳結果
13659
			return $result;
13660
 
13661
			}#if end
13662
 
13663
		#取得驗證的結果
13664
		#函式說明:
13665
		#檢測接收的檔案是否符合條件
13666
		#回傳的內容:
13667
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
13668
		#$result["function"],當前執行的函數.
13669
		#$result["error"],錯誤訊息陣列.
13670
		#$result["passed"],檢查是否都通過.
13671
		#$result["fileNameCheck"],若爲"true"則代表檔案名稱正確,"false"檔案名稱不正確.
13672
		#$result["fileSizeCheck"],若爲"true"則代表檔案大小正確。
13673
		#$result["fileTypeCheck"],若爲"true"則代表檔案類型正確。
13674
		#必填參數:
13675
		$conf["form::simpleFileAuthentication"]["formFileName"]=$conf["formFileName"];#爲該檔案上傳時候的表單名稱
13676
		#可省略參數:
13677
		$conf["form::simpleFileAuthentication"]["uploadedFileName"]=$conf["uploadFileName"];#爲檔案上傳時的檔案名稱,省略則跳過此部分驗證
13678
		$conf["form::simpleFileAuthentication"]["uploadedFileSize"]=$conf["uploadedFileSize"];#爲檔案上傳時的檔案大小,省略則跳過此部分驗證
13679
		$conf["form::simpleFileAuthentication"]["uploadedFileType"]=$conf["uploadedFileType"];#爲檔案上傳時的檔案型別,需爲陣列型別,省略則跳過此部分驗證
13680
		$simpleFileAuthentication=form::simpleFileAuthentication($conf["form::simpleFileAuthentication"]);
13681
		unset($conf["form::simpleFileAuthentication"]);
13682
 
13683
		#如果驗證出錯
13684
		if($simpleFileAuthentication["status"]=="false"){
13685
 
13686
			#設置錯誤識別
13687
			$result["status"]="false";
13688
 
13689
			#設置錯誤訊息
13690
			$result["error"]=$simpleFileAuthentication;
13691
 
13692
			#回傳結果
13693
			return $result;
13694
 
13695
			}#if end
13696
 
13697
		#如果驗證不通過
13698
		if($simpleFileAuthentication["passed"]=="false"){
13699
 
13700
			#設置執行正常
13701
			$result["status"]="true";
13702
 
13703
			#設置驗證不通過
13704
			$result["passed"]="false";
13705
 
13706
			#設置檢查結果資訊
13707
			$result["fileNameCheck"]=$simpleFileAuthentication["fileNameCheck"];
13708
			$result["fileSizeCheck"]=$simpleFileAuthentication["fileNameCheck"];
13709
			$result["fileTypeCheck"]=$simpleFileAuthentication["fileNameCheck"];
13710
 
13711
			#如果 $conf["failedAction"] 有設定
13712
			if(isset($conf["failedAction"])){
13713
 
13714
				#轉址到 $conf["failedAction"]
13715
				$conf["header"]["headerLocation"]["headerLocation"]=$conf["failedAction"];
13716
				header::redirectionNow($conf["header"]["headerLocation"]);
13717
				unset($conf["header"]["headerLocation"]);
13718
 
13719
				}#if end
13720
 
13721
			#回傳結果
13722
			return $result;
13723
 
13724
			}#if end
13725
 
13726
		#如果 $authenticalResult["passed"] 等於 "true"
13727
		if($authenticalResult["passed"]=="true"){
13728
 
13729
			#給予通行碼
13730
			$_SESSION["password"]=$conf["password"];
13731
 
13732
			#如果 $conf["passAction"] 有設定
13733
			if(isset($conf["passAction"])){
13734
 
13735
				#轉址到	$conf["passAction"]
13736
				$conf["header"]["headerLocation"]["headerLocation"]=$conf["passAction"];
13737
				header::redirectionNow($conf["header"]["headerLocation"]);
13738
				unset($conf["header"]["headerLocation"]);
13739
 
13740
				}#if end
13741
 
13742
			#設置驗證通過
13743
			$result["passed"]="true";
13744
 
13745
			}#if end
13746
 
13747
		#設置執行正常
13748
		$result["status"]="true";
13749
 
13750
		#回傳結果
13751
		return $result;
13752
 
13753
		}#function responseOneFileForAuthentication end
13754
 
13755
	/*
13756
	#函式說明:
13757
	#處理上傳到暫存目錄的檔案,可以移動到指定的位置,並指定檔案的名稱。並且可以指定刪除舊有的檔案,然後將新檔案的相對位置寫入到資料庫裏面。
13758
	#回傳的變數:
13759
	#$result["status"],整體上傳有無成功。"true"代表完整成功 "false"代表有過程有錯誤
13760
	#$result["error"],錯誤訊息陣列,$result["error"][0] 為"沒有接收到上傳的檔案",則代表沒有上傳檔案.
13761
	#$result["warning"],警告訊息陣列
13762
	#$result["ServerFileName"],檔案名稱
13763
	#$result["ServerFileType"],檔案類型
13764
	#$result["ServerFileSize"],檔案大小
13765
	#$result["fileRelativePosition"],檔案的相對位置,包含檔案名稱與附檔名。
13766
	#必填參數:
13767
	#$conf["formFileName"],字串,為上傳檔案時表單傳送時的名稱
13768
	$conf["formFileName"]="";
13769
	#$conf["fileArgu"],字串,__FILE__的內容
13770
	$conf["fileArgu"]=__FILE__;
13771
	#可省略參數:
13772
	#$conf["uploadDirUserDefine"],字串,為存放上傳檔案的目錄,如果沒設定則會自行建立依照系統時間的年月日十分秒來替資料夾命名,並將上傳的檔案存在裏面。
13773
	#$conf["uploadDirUserDefine"]="";
13774
	#$conf["ServerFilenameUserDefine"],字串,為存放在伺服器上的檔案名稱,如果沒設定則依照台灣時間的年月日時分秒命名
13775
	#$conf["ServerFilenameUserDefine"]="";
13776
	#$conf["NoFileExtension"],字串,若為 "true" 則表 指定了檔案名稱後,不用再加上檔案型的副檔名,預設為"false".
13777
	#$conf["NoFileExtension"]="true";
13778
	#$conf["limitPage"],字串陣列,限制只能從哪些網頁檔案過來。
13779
	#$conf["limitPage"]=array("");
13780
	#$conf["taskName"],字串,爲該上傳作業的名稱,若沒設定,則預設爲"上傳作業"。
13781
	#$conf["taskName"]="";
13782
	#$conf["eraseOldFile"],字串,如果為"true"的話會移除同名的舊檔案,其值爲檔案的相對位置,預設為"false",不移除同名的檔案,並透過編號保留新的檔案.
13783
	#$conf["eraseOldFile"]="";
13784
	#$conf["dbProcess"],字串,如果爲"true",則會進行資料表資料更新的動作,亦即要設定 $conf["updatingMysqlServerAddress"] $conf["updatingMysqlAccount"] $conf["updatingDataBaseName"] $conf["updatingDataTableName"] $conf["updatingConditionDataTableColumnName"] $conf["updatingConditionDataTableColumnValue"] $conf["updatingTargetDataTableColumnName"] $conf["updatingTargetDataTableColumnValue"] 的內容,預設為"false".
13785
	#$conf["dbProcess"]="true";
13786
	#$conf["updatingMysqlServerAddress"],字串,資料庫位於網路上的哪個位置.
13787
	#$conf["updatingMysqlServerAddress"]=$dbAddress;
13788
	#$conf["updatingMysqlAccount"],字串,連線時要使用的帳號,省略時代表不用密碼進行連線.
13789
	#$conf["updatingMysqlAccount"]=$dbAccount;
13790
	#$conf["updatingMysqlPassword"],字串,連線時要使用的密碼.
13791
	#$conf["updatingMysqlPassword"]=$dbPassword;
13792
	#$conf["updatingDataBaseName"],字串,要更新的目標資料所屬資料庫名稱.
13793
	#$conf["updatingDataBaseName"]=$dbName;
13794
	#$conf["updatingDataTableName"],字串,要更新的目標資料位於哪個資料表.
13795
	#$conf["updatingDataTableName"]="";
13796
	#$conf["updatingConditionDataTableColumnName"],字串陣列,要用哪些欄位來識別要更新哪一筆資料,預設為array("id").
13797
	#$conf["updatingConditionDataTableColumnName"]=array("id");
13798
	#$conf["updatingConditionDataTableColumnValue"],字串陣列,該條件欄位內容的數值要爲多少,才是我們要修改的那筆資料。
13799
	#$conf["updatingConditionDataTableColumnValue"]=array("");
13800
	#$conf["updatingTargetDataTableColumnName"],字串陣列,要更新的資料欄位有?
13801
	#$conf["updatingTargetDataTableColumnName"]=array("");
13802
	#$conf["updatingTargetDataTableColumnValue"],字串陣列,目標資料欄位要改成什麼樣的數值,如果其元素含有"filePosition",則會替換成新檔案的相對位置
13803
	#$conf["updatingTargetDataTableColumnValue"]=array("");
13804
	#參考資料:
13805
	#file_exist()的用法
13806
	#http://php.net/manual/en/function.file-exists.php
13807
	#備註:
13808
	#無.
13809
	*/
13810
	public static function processUploadedFile($conf){
13811
 
13812
		#初始化要回傳的內容
13813
		$result=array();
13814
 
13815
		#設置當前執行的函數
13816
		$result["function"]=__FUNCTION__;
13817
 
13818
		#如果 $conf 不為陣列
13819
		if(gettype($conf)!="array"){
13820
 
13821
			#設置執行失敗
13822
			$result["status"]="false";
13823
 
13824
			#設置執行錯誤訊息
13825
			$result["error"][]="\$conf變數須為陣列形態";
13826
 
13827
			#如果傳入的參數為 null
13828
			if($conf==null){
13829
 
13830
				#設置執行錯誤訊息
13831
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
13832
 
13833
				}#if end
13834
 
13835
			#回傳結果
13836
			return $result;
13837
 
13838
			}#if end
13839
 
13840
		#檢查參數
13841
		#函式說明:
13842
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
13843
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
13844
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
13845
		#$result["function"],當前執行的函式名稱.
13846
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
13847
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
13848
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
13849
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
13850
		#必填參數:
13851
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
13852
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
13853
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
13854
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("formFileName","fileArgu");
13855
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
13856
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string","string");
13857
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
13858
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
13859
		#可省略參數:
13860
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
13861
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
13862
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
13863
		$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("uploadDirUserDefine","ServerFilenameUserDefine","NoFileExtension","limitPage","taskName","eraseOldFile","dbProcess","updatingMysqlServerAddress","updatingMysqlAccount","updatingMysqlPassword","updatingDataBaseName","updatingDataTableName","updatingConditionDataTableColumnName","updatingConditionDataTableColumnValue","updatingTargetDataTableColumnName","updatingTargetDataTableColumnValue");
13864
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
13865
		$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string","string","array","string","string","string","string","string","string","string","string","array","array","array","array");
13866
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
13867
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array(null,null,"false",null,"上傳作業","false","false",null,null,null,null,null,array("id"),null,null,null);
13868
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
13869
		unset($conf["variableCheck.checkArguments"]);
13870
 
13871
		#如果檢查失敗
13872
		if($checkResult["status"]=="false"){
13873
 
13874
			#設置執行不正常
13875
			$result["status"]="false";
13876
 
13877
			#程式停止執行
13878
			$result["error"]=$checkResult;
13879
 
13880
			#回傳結果
13881
			return $result;
13882
 
13883
			}#if end
13884
 
13885
		#如果檢查不通過
13886
		if($checkResult["passed"]=="false"){
13887
 
13888
			#設置執行不正常
13889
			$result["status"]="false";
13890
 
13891
			#程式停止執行
13892
			$result["error"]=$checkResult;
13893
 
13894
			#回傳結果
13895
			return $result;
13896
 
13897
			}#if end
13898
 
13899
		#過濾 $conf["formFileName"] 避免錯誤
13900
		#函式說明:
13901
		#處理字串避免網頁出錯
13902
		#回傳結果:
13903
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
13904
		#$result["function"],當前執行的函數.
13905
		#$result["content"],爲處理好的字串.
13906
		#$result["error"],錯誤訊息陣列.
13907
		#必填參數:
13908
		$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["formFileName"];#爲要處理的字串
13909
		#可省略的參數:
13910
		$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
13911
			#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
13912
			#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
13913
		#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
13914
		$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
13915
		unset($conf["stringProcess::correctCharacter"]);
13916
 
13917
		#如果過濾字串失敗
13918
		if($correctCharacter["status"]=="false"){
13919
 
13920
			#設置執行失敗
13921
			$result["status"]="false";
13922
 
13923
			#設置執行錯誤訊息
13924
			$result["error"]=$correctCharacter;
13925
 
13926
			#回傳結果
13927
			return $result;
13928
 
13929
			}#if end
13930
 
13931
		#置換成處理過後的 $conf["formFileName"]
13932
		$conf["formFileName"]=$correctCharacter["content"];
13933
 
13934
		#如果檔案的表單變數存在
13935
		if(isset($_FILES[$conf["formFileName"]])){
13936
 
13937
			#如果原始檔案名稱爲空的
13938
			if($_FILES[$conf["formFileName"]]["name"]==""){
13939
 
13940
				#設置錯誤識別
13941
				$result["status"]="false";
13942
 
13943
				#設置錯誤訊息
13944
				$result["error"][]="沒有接收到上傳的檔案";
13945
 
13946
				#回傳結果
13947
				return $result;
13948
 
13949
				}#if end
13950
 
13951
			}#if end
13952
 
13953
		#如果檔案的表單變數不存在
13954
		else{
13955
 
13956
			#設置錯誤識別
13957
			$result["status"]="false";
13958
 
13959
			#設置錯誤訊息
13960
			$result["error"][]="沒有接收到上傳的檔案";
13961
 
13962
			#回傳結果
13963
			return $result;
13964
 
13965
			}#else end
13966
 
13967
		#取得系統時間
13968
		#函式說明:
13969
		#回傳西元的目前時間,格式為2010年07月24日15時30分33秒
13970
		#回傳結果:
13971
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
13972
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
13973
		#$result["function"],當前執行的函式名稱.
13974
		#$result["content"],西元的目前時間.
13975
		#必填參數:
13976
		$conf["time::getFullDateAndTime"]["timeZone"]="Asia/Taipei";#時區代號,可以設定的時區列表:http://www.php.net/manual/en/timezones.php
13977
			#ex:"Asia/Taipei"
13978
		#可省略參數:
13979
		$conf["time::getFullDateAndTime"]["showSecond"]="true";#若爲"true"則會顯示秒數,預設為"true".
13980
		#參考資料:
13981
		#date函數用法=>http://php.net/manual/en/function.date.php.
13982
		$getFullDateAndTime=time::getFullDateAndTime($conf["time::getFullDateAndTime"]);
13983
		unset($conf["time::getFullDateAndTime"]);
13984
 
13985
		#如果取得取得時間失敗
13986
		if($getFullDateAndTime["status"]=="false"){
13987
 
13988
			#設置錯誤識別
13989
			$result["status"]="false";
13990
 
13991
			#設置錯誤訊息
13992
			$result["error"]=$getFullDateAndTime;
13993
 
13994
			#回傳結果
13995
			return $result;
13996
 
13997
			}#if end
13998
 
13999
		#取得格林威治時間+八小時
14000
		$timeTw=$getFullDateAndTime["content"];
14001
 
14002
		#如果$conf["uploadDirUserDefine"]有設定
14003
		if(isset($conf["uploadDirUserDefine"])){
14004
 
14005
			#則套用存放上傳檔案的目錄
14006
			$uploadDir=$conf["uploadDirUserDefine"] ;
14007
 
14008
			}#if end
14009
 
14010
		#否則存放的資料夾名稱爲臺灣的時間
14011
		else{
14012
 
14013
			$uploadDir=$timeTw;
14014
 
14015
			#建立特定資料夾
14016
			#函式說明:
14017
			#建立資料夾
14018
			#回傳結果:
14019
			#$result,true爲建立成功,false爲建立失敗
14020
			#必填參數:
14021
			$conf["fileAccess"]["createNewFolder"]["dirPositionAndName"]=$uploadDir;#新建的位置與名稱
14022
			#可省略參數:
14023
			#$conf["dirPermission"]="";新建資料夾的權限設定,預設爲0777,亦即所有人皆可以讀、寫、存取
14024
			#參考資料:
14025
			#http:#php.net/manual/en/function.mkdir.php
14026
			#範本:
14027
			# mkdir("/path/to/my/dir", 0700);
14028
			$createFolder=fileAccess::createNewFolder($conf["fileAccess"]["createNewFolder"]);
14029
			unset($conf["fileAccess"]["createNewFolder"]);
14030
 
14031
			#如果 $createFolder 等於 "false"
14032
			if($createFolder["status"]==="false"){
14033
 
14034
				#設置錯誤識別
14035
				$result["status"]="false";
14036
 
14037
				#設置錯誤訊息
14038
				$result["error"]=$createFolder;
14039
 
14040
				#回傳結果
14041
				return $result;
14042
 
14043
				}#if end
14044
 
14045
			}#else end
14046
 
14047
		#如果$conf["uploadDirUserDefine"]有設定
14048
		if(isset($conf["ServerFilenameUserDefine"])){
14049
 
14050
			#給予伺服器檔案的名稱
14051
			$ServerFilename=$conf["ServerFilenameUserDefine"];
14052
 
14053
			}#if end
14054
 
14055
		#否則檔案名稱指定為臺灣時間
14056
		else{
14057
 
14058
			$ServerFilename=$timeTw;
14059
 
14060
			}#else end
14061
 
14062
		#原始檔案名稱
14063
		$fileOrginalName=$_FILES[$conf["formFileName"]]["name"];
14064
 
14065
		#初始化儲存檔案副檔名的變數
14066
		$FileExtension="";
14067
 
14068
		#檔案的附檔名爲上傳的檔案名稱最後一個小數點後面的內容。
14069
 
14070
		#函式說明:
14071
		#將固定格式的字串分開,並回傳分開的結果。
14072
		#回傳的參數:
14073
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
14074
		#$result["error"],錯誤訊息陣列
14075
		#$result["oriStr"],要分割的原始字串內容
14076
		#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
14077
		#$result["dataCounts"],爲總共分成幾段
14078
		#必填參數:
14079
		$conf["stringProcess::spiltString"]["stringIn"]=$fileOrginalName;#要處理的字串。
14080
		$conf["stringProcess::spiltString"]["spiltSymbol"]=".";#爲以哪個符號作爲分割
14081
		#備註:
14082
		#建議新增如果透過" "分割後的內容含有""的元素,將其移除,並將後面有內容的元素補上,key也重新排序。
14083
		$stringProcessedResult=stringProcess::spiltString($conf["stringProcess::spiltString"]);
14084
		unset($conf["stringProcess::spiltString"]);
14085
 
14086
		#如果分割字串失敗
14087
		if($stringProcessedResult["status"]=="false"){
14088
 
14089
			#設置錯誤識別
14090
			$result["status"]="false";
14091
 
14092
			#設置錯誤訊息
14093
			$result["error"]=$stringProcessedResult;
14094
 
14095
			#回傳結果
14096
			return $result;
14097
 
14098
			}#if end
14099
 
14100
		#如果分割後的段數只有1段
14101
		if($stringProcessedResult["dataCounts"]<2){
14102
 
14103
			#設置警告訊息
14104
			$result["warning"][]="上傳的檔案沒有副檔名";
14105
 
14106
			#設置副檔名為"unknow"
14107
			$FileExtension=".unknow";
14108
 
14109
			}#if end
14110
 
14111
		#反之代表有副檔名
14112
		else{
14113
 
14114
			#將第一個小數點後的內容視為副檔名
14115
 
14116
			#檔案名稱分成幾段就執行其減1幾次
14117
			for($i=1;$i<$stringProcessedResult["dataCounts"];$i++){
14118
 
14119
				#串接副檔名
14120
				$FileExtension=$FileExtension.".".$stringProcessedResult["dataArray"][$i];
14121
 
14122
				}#for end
14123
 
14124
			}#else end
14125
 
14126
		#將檔案的類型傳遞到變數
14127
		$FileType = $_FILES[$conf["formFileName"]]["type"];
14128
 
14129
		/*
14130
		#由於隨着瀏覽器不同,其檔案類型的名稱也會不同,所以我們就不從檔案類型去類推其副檔名爲何。
14131
 
14132
		#取得原始檔案副檔名的陣列,目前僅適用於firefox
14133
 
14134
		#照片類別
14135
		if($FileType=="image/png"){
14136
 
14137
			$FileExtension = "png";
14138
 
14139
			}
14140
 
14141
		else if($FileType=="image/jpeg"){
14142
 
14143
			$FileExtension = "jpg";
14144
 
14145
			}
14146
 
14147
		else if($FileType=="image/gif"){
14148
 
14149
			$FileExtension = "gif";
14150
			}
14151
 
14152
		#聲音類別
14153
		else if($FileType=="audio/x-ms-wma"){
14154
 
14155
			$FileExtension = "wma";
14156
 
14157
			}
14158
 
14159
		else if($FileType=="audio/mpeg"){
14160
 
14161
			$FileExtension = "mp3";
14162
 
14163
			}
14164
 
14165
		else if($FileType=="video/ogg"){
14166
 
14167
			$FileExtension = "ogg";
14168
			}
14169
 
14170
		#影片類別
14171
		else if($FileType=="video/x-ms-wmv"){
14172
 
14173
			$FileExtension = "wmv";
14174
 
14175
			}
14176
 
14177
		else if($FileType=="video/x-msvideo"){
14178
 
14179
			$FileExtension = "avi";
14180
			}
14181
 
14182
		else if($FileType=="video/ogg"){
14183
 
14184
			$FileExtension = "ogv";
14185
 
14186
			}
14187
 
14188
		else if($FileType=="video/webm"){
14189
 
14190
			$FileExtension = "webm";
14191
 
14192
			}
14193
 
14194
		#純文字類別
14195
		else if($FileType=="text/plain"){
14196
 
14197
			$FileExtension = "txt";
14198
			}
14199
 
14200
		#壓縮檔類別
14201
		else if($FileType=="application/x-tar"){
14202
 
14203
			$FileExtension = "tar";
14204
 
14205
			}
14206
 
14207
		else if($FileType=="application/x-7z-compressed"){
14208
 
14209
			$FileExtension = "7z";
14210
 
14211
			}
14212
 
14213
		else if($FileType=="application/zip"){
14214
 
14215
			$FileExtension = "zip";
14216
 
14217
			}
14218
 
14219
		#2元碼檔案
14220
		else if($FileType=="application/octet-stream"){
14221
 
14222
			$FileExtension = "exe";
14223
 
14224
			}
14225
 
14226
		#如果不是以上的類別
14227
		else{
14228
 
14229
			#則賦予 "unknow" 這個副檔名
14230
			$FileExtension = "unknow";
14231
 
14232
			}
14233
 
14234
		*/
14235
 
14236
		#將原始檔案的大小單位換算成KB
14237
		$storeFileSizeKb = (($_FILES[$conf["formFileName"]]["size"])/1024);
14238
 
14239
		#將原始檔案的大小(KB)小數點全部捨棄,
14240
		$storeFileSizeKb = round($storeFileSizeKb,0);
14241
 
14242
		#將上傳檔案的錯誤代碼傳遞到變數 $file_error
14243
		$FileError =  $_FILES[$conf["formFileName"]]["error"];
14244
 
14245
		#如果上傳的檔案是空的
14246
		if(!isset($_FILES[$conf["formFileName"]]['tmp_name'])){
14247
 
14248
			#設置錯誤識別
14249
			$result["status"]="false";
14250
 
14251
			#設置錯誤訊息
14252
			$result["error"][]="找不到暫存的已上傳檔案";
14253
 
14254
			#回傳結果
14255
			return $result;
14256
 
14257
			}#if end
14258
 
14259
		#如果 $NoFileExtension 有設定
14260
		if(isset($conf["NoFileExtension"])){
14261
 
14262
			#如果 $NoFileExtension 等於 true,
14263
			if($conf["NoFileExtension"]=="true"){
14264
 
14265
				#則副檔名爲""。
14266
				$FileExtension="";
14267
 
14268
				}#if end
14269
 
14270
			}#if end
14271
 
14272
		#檢查目標資料夾是否存在
14273
		#函式說明:檢查多個檔案與資料夾是否存在.
14274
		#回傳的結果:
14275
		#$result["varName"][$i],爲第$i個資料夾或檔案的名稱。
14276
		#$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
14277
		#必填參數:
14278
		$conf["fileAccess"]["checkMutiFileExist"]["fileArray"]=array($uploadDir);#要檢查書否存在的檔案有哪些,須爲一維陣列數值。
14279
		$conf["fileAccess"]["checkMutiFileExist"]["fileArgu"]=$conf["fileArgu"];
14280
		#參考資料來源:
14281
		#http://php.net/manual/en/function.file-exists.php
14282
		#http://php.net/manual/en/control-structures.foreach.php
14283
		$checkResult=fileAccess::checkMultiFileExist($conf["fileAccess"]["checkMutiFileExist"]);
14284
		unset($conf["fileAccess"]["checkMutiFileExist"]);
14285
 
14286
		#如果檢查失敗
14287
		if($checkResult["status"]=="false"){
14288
 
14289
			#設置錯誤識別
14290
			$result["status"]="false";
14291
 
14292
			#設置錯誤訊息
14293
			$result["error"]=$checkResult;
14294
 
14295
			#回傳結果
14296
			return $result;
14297
 
14298
			}#if end
14299
 
14300
		#如果 目標資料夾 不存在
14301
		if($checkResult["varExist"][0]=="false"){
14302
 
14303
			#建立特定資料夾
14304
			#函式說明:
14305
			#建立資料夾
14306
			#回傳結果:
14307
			#$result,true爲建立成功,false爲建立失敗
14308
			#必填參數:
14309
			$conf["fileAccess"]["createNewFolder"]["dirPositionAndName"]=$uploadDir;#新建的位置與名稱
14310
			#可省略參數:
14311
			#$conf["dirPermission"]="";新建資料夾的權限設定,預設爲0777,亦即所有人皆可以讀、寫、存取
14312
			#參考資料:
14313
			#http:#php.net/manual/en/function.mkdir.php
14314
			#範本:
14315
			# mkdir("/path/to/my/dir", 0700);
14316
			$createFolder=fileAccess::createNewFolder($conf["fileAccess"]["createNewFolder"]);
14317
			unset($conf["fileAccess"]["createNewFolder"]);
14318
 
14319
			#如果 $createFolder 等於 "false"
14320
			if($createFolder=="false"){
14321
 
14322
				#設置錯誤識別
14323
				$result["status"]="false";
14324
 
14325
				#設置錯誤訊息
14326
				$result["error"][]="建立資料夾失敗";
14327
 
14328
				#回傳結果
14329
				return $result;
14330
 
14331
				}#if end
14332
 
14333
			}#if end
14334
 
14335
		#如果要移除同名的檔案
14336
		if($conf["eraseOldFile"]=="true"){
14337
 
14338
			#檢查指定的上傳檔案是否已經存在
14339
			#如果有同名的檔案存在
14340
			#函式說明:檢查多個檔案與資料夾是否存在.
14341
			#回傳的結果:
14342
			#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
14343
			#$result["error"],錯誤訊息陣列.
14344
			#$resutl["function"],當前執行的函式名稱.
14345
			#$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
14346
			#$result["varName"][$i],爲第$i個資料夾或檔案的名稱。
14347
			#$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
14348
			#必填參數:
14349
			$conf["fileAccess::checkMultiFileExist"]["fileArray"]=array($uploadDir."/".$ServerFilename.$FileExtension);#要檢查書否存在的檔案有哪些,須爲一維陣列數值。
14350
			$conf["fileAccess::checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];
14351
			#參考資料來源:
14352
			#http://php.net/manual/en/function.file-exists.php
14353
			#http://php.net/manual/en/control-structures.foreach.php
14354
			$checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);
14355
			unset($conf["fileAccess::checkMultiFileExist"]);
14356
 
14357
			#如果檢查失敗
14358
			if($checkMultiFileExist["status"]=="false"){
14359
 
14360
				#設置錯誤識別
14361
				$result["status"]="false";
14362
 
14363
				#設置錯誤訊息
14364
				$result["error"]=$checkMultiFileExist;
14365
 
14366
				#回傳結果
14367
				return $result;
14368
 
14369
				}#if end
14370
 
14371
			#如果指定的上傳檔案名稱已經存在
14372
			if($checkMultiFileExist["varExist"][0]=="true"){
14373
 
14374
				#移除舊的同名檔案
14375
				#函式說明:
14376
				#移除檔案
14377
				#回傳結果:
14378
				#$result["status"],"true"代表移除成功,"false"代表移除失敗.
14379
				#$result["error"],錯誤訊息陣列
14380
				#$result["warning"],警告訊息陣列
14381
				#$result["function"],當前執行的函數名稱
14382
				#必填參數:
14383
				$conf["form::delFile"]["fileAddress"]=$uploadDir."/".$ServerFilename.$FileExtension;#要移除檔案的位置
14384
				#可省略參數:
14385
				#$conf["commentsArray"],字串陣列,提示的文字描述,$conf["commentsArray"][$i]代表第($+1)行的描述.
14386
				#$conf["commentsArray"]=array("");
14387
				$delFile=fileAccess::delFile($conf["form::delFile"]);
14388
				unset($conf["form::delFile"]);
14389
 
14390
				#如果移除檔案失敗
14391
				if($delFile["status"]=="false"){
14392
 
14393
					#設置錯誤識別
14394
					$result["status"]="false";
14395
 
14396
					#設置錯誤訊息
14397
					$result["error"]=$delFile;
14398
 
14399
					#回傳結果
14400
					return $result;
14401
 
14402
					}#if end
14403
 
14404
				}#if end
14405
 
14406
			}#if end
14407
 
14408
		#反之沒有要移除同名的既有檔案
14409
		else{
14410
 
14411
			#檢查是否有同名的檔案
14412
			#檢查加上編號的上傳檔案名稱是否已經存在
14413
			#檢查指定的上傳檔案是否已經存在
14414
			#如果有同名的檔案存在
14415
			#函式說明:檢查多個檔案與資料夾是否存在.
14416
			#回傳的結果:
14417
			#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
14418
			#$result["error"],錯誤訊息陣列.
14419
			#$resutl["function"],當前執行的函式名稱.
14420
			#$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
14421
			#$result["varName"][$i],爲第$i個資料夾或檔案的名稱。
14422
			#$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
14423
			#必填參數:
14424
			$conf["fileAccess::checkMultiFileExist"]["fileArray"]=array($uploadDir."/".$ServerFilename.$FileExtension);#要檢查書否存在的檔案有哪些,須爲一維陣列數值。
14425
			$conf["fileAccess::checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];
14426
			#參考資料來源:
14427
			#http://php.net/manual/en/function.file-exists.php
14428
			#http://php.net/manual/en/control-structures.foreach.php
14429
			$checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);
14430
			unset($conf["fileAccess::checkMultiFileExist"]);
14431
 
14432
			#如果檢查失敗
14433
			if($checkMultiFileExist["status"]=="false"){
14434
 
14435
				#設置錯誤識別
14436
				$result["status"]="false";
14437
 
14438
				#設置錯誤訊息
14439
				$result["error"]=$checkMultiFileExist;
14440
 
14441
				#回傳結果
14442
				return $result;
14443
 
14444
				}#if end
14445
 
14446
			#如果指定的上傳檔案名稱存在
14447
			if($checkMultiFileExist["varExist"][0]=="true"){
14448
 
14449
				#無窮迴圈
14450
				for($i=1;$i>0;$i++){
14451
 
14452
					#將上傳檔案的名稱加上編號
14453
					$ServerFilename=$ServerFilename."(".$i.")";
14454
 
14455
					#檢查加上編號的上傳檔案名稱是否已經存在
14456
					#檢查指定的上傳檔案是否已經存在
14457
					#如果有同名的檔案存在
14458
					#函式說明:檢查多個檔案與資料夾是否存在.
14459
					#回傳的結果:
14460
					#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
14461
					#$result["error"],錯誤訊息陣列.
14462
					#$resutl["function"],當前執行的函式名稱.
14463
					#$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
14464
					#$result["varName"][$i],爲第$i個資料夾或檔案的名稱。
14465
					#$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
14466
					#必填參數:
14467
					$conf["fileAccess::checkMultiFileExist"]["fileArray"]=array($uploadDir."/".$ServerFilename.$FileExtension);#要檢查書否存在的檔案有哪些,須爲一維陣列數值。
14468
					$conf["fileAccess::checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];
14469
					#參考資料來源:
14470
					#http://php.net/manual/en/function.file-exists.php
14471
					#http://php.net/manual/en/control-structures.foreach.php
14472
					$checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);
14473
					unset($conf["fileAccess::checkMultiFileExist"]);
14474
 
14475
					#如果檢查失敗
14476
					if($checkMultiFileExist["status"]=="false"){
14477
 
14478
						#設置錯誤識別
14479
						$result["status"]="false";
14480
 
14481
						#設置錯誤訊息
14482
						$result["error"]=$checkMultiFileExist;
14483
 
14484
						#回傳結果
14485
						return $result;
14486
 
14487
						}#if end
14488
 
14489
					#如果指定的上傳檔案名稱不存在
14490
					if($checkMultiFileExist["varExist"][0]=="false"){
14491
 
14492
						#跳出迴圈
14493
						break;
14494
 
14495
						}#if end
14496
 
14497
					}#for end
14498
 
14499
				}#if end
14500
 
14501
			}#else end
14502
 
14503
		#移動暫存檔案到指定的位置
14504
		if(move_uploaded_file($_FILES[$conf["formFileName"]]["tmp_name"],$uploadDir."/".$ServerFilename.$FileExtension)){
14505
 
14506
			#函式說明:
14507
			#呼叫shell執行系統命令,並取得回傳的內容.
14508
			#回傳結果:
14509
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
14510
			#$result["error"],錯誤訊息陣列.
14511
			#$result["function"],當前執行的函數名稱.
14512
			#$result["argu"],使用的參數.
14513
			#$result["cmd"],執行的指令內容.
14514
			#$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.
14515
			#$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.
14516
			#$result["tmpFileOutput"],儲存輸出的暫存檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.
14517
			#$result["running"],是否還在執行.
14518
			#$result["pid"],pid.
14519
			#$result["statusCode"],執行結束後的代碼.
14520
			#$result["escape"],陣列,儲存出新排序過且已經escape過的指令(key為"cmd")與參數(key為"argu").
14521
			#必填參數:
14522
			#$conf["command"],字串,要執行的指令.
14523
			$conf["external::callShell"]["command"]="chmod";
14524
			#$conf["fileArgu"],字串,變數__FILE__的內容.
14525
			$conf["external::callShell"]["fileArgu"]=__FILE__;
14526
			#可省略參數:
14527
			#$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
14528
			$conf["external::callShell"]["argu"]=array("0770",$uploadDir);
14529
			#$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
14530
			#$conf["arguIsAddr"]=array();
14531
			#$conf["pre"],陣列,要在本指令前執行的每個指令與參數.
14532
			#$conf["pre"][$i]["cmd"],字串,要在本指令前執行的第$i+1個指令.
14533
			#$conf["pre"][$i]["param"],陣列字串,要在本指令前執行的第$i+1個指令的參數.
14534
			#$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
14535
			#$conf["enablePrintDescription"]="true";
14536
			#$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容加上使用的$conf["argu"]參數.
14537
			#$conf["printDescription"]="";
14538
			#$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".如果參數為"< 、<< 、> 、>> 、| 、2>&1"之一則不會過濾.
14539
			$conf["external::callShell"]["escapeshellarg"]="true";
14540
			#$conf["thereIsShellVar"],陣列字串,指令搭配的參數"argu",若含有「\'」,則取代為「"」.每個argu參數都要有對應的元素."true"代表要置換.
14541
			#$conf["thereIsShellVar"]=array();
14542
			#$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.
14543
			#$conf["username"]="";
14544
			#$conf["password"],字串,root的使用者密碼,預設不使用密碼,該參數不適用於apache環境.
14545
			#$conf["password"]="";
14546
			#$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".
14547
			#$conf["useScript"]="";
14548
			#$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".
14549
			#$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";
14550
			#$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.
14551
			#$conf["inBackGround"]="";
14552
			#$conf["getErr"],字串,"true"代表將錯誤輸出變成標準輸出,反之"false"為不變動.
14553
			#$conf["getErr"]="false";
14554
			#$conf["doNotRun"],字串,"true"代表不執行指令,預設為"false"會執行指令.
14555
			#$conf["doNotRun"]="false";
14556
			#參考資料:
14557
			#exec=>http://php.net/manual/en/function.exec.php
14558
			#escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php
14559
			#escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php
14560
			#備註:
14561
			#不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.
14562
			#若使用的 command、argu 參數,含有 ~ 則會被視為字串,若有需要其於 shell 中代表的家目錄位置,可用 fileAccess::tildeToPath 來進行轉換.
14563
			$changePermission=external::callShell($conf["external::callShell"]);
14564
			unset($conf["external::callShell"]);
14565
 
14566
			#如果 $changePermission["status"] 等於 "false"
14567
			if($changePermission["status"]=="false"){
14568
 
14569
				#設置錯誤識別
14570
				$result["status"]="false";
14571
 
14572
				#設置錯誤訊息
14573
				$result["error"]=$changePermission;
14574
 
14575
				#回傳結果
14576
				return $result;
14577
 
14578
				}#if end
14579
 
14580
			#函式說明:
14581
			#呼叫shell執行系統命令,並取得回傳的內容.
14582
			#回傳結果:
14583
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
14584
			#$result["error"],錯誤訊息陣列.
14585
			#$result["function"],當前執行的函數名稱.
14586
			#$result["argu"],使用的參數.
14587
			#$result["cmd"],執行的指令內容.
14588
			#$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.
14589
			#$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.
14590
			#$result["tmpFileOutput"],儲存輸出的暫存檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.
14591
			#$result["running"],是否還在執行.
14592
			#$result["pid"],pid.
14593
			#$result["statusCode"],執行結束後的代碼.
14594
			#$result["escape"],陣列,儲存出新排序過且已經escape過的指令(key為"cmd")與參數(key為"argu").
14595
			#必填參數:
14596
			#$conf["command"],字串,要執行的指令.
14597
			$conf["external"]["callShell"]["command"]="chmod";
14598
			#$conf["fileArgu"],字串,變數__FILE__的內容.
14599
			$conf["external"]["callShell"]["fileArgu"]=__FILE__;
14600
			#可省略參數:
14601
			#$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
14602
			$conf["external"]["callShell"]["argu"]=array("0777",$uploadDir."/".$ServerFilename.$FileExtension);
14603
			#$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
14604
			#$conf["arguIsAddr"]=array();
14605
			#$conf["pre"],陣列,要在本指令前執行的每個指令與參數.
14606
			#$conf["pre"][$i]["cmd"],字串,要在本指令前執行的第$i+1個指令.
14607
			#$conf["pre"][$i]["param"],陣列字串,要在本指令前執行的第$i+1個指令的參數.
14608
			#$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
14609
			#$conf["enablePrintDescription"]="true";
14610
			#$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容加上使用的$conf["argu"]參數.
14611
			#$conf["printDescription"]="";
14612
			#$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".如果參數為"< 、<< 、> 、>> 、| 、2>&1"之一則不會過濾.
14613
			$conf["external"]["callShell"]["escapeshellarg"]="true";
14614
			#$conf["thereIsShellVar"],陣列字串,指令搭配的參數"argu",若含有「\'」,則取代為「"」.每個argu參數都要有對應的元素."true"代表要置換.
14615
			#$conf["thereIsShellVar"]=array();
14616
			#$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.
14617
			#$conf["username"]="";
14618
			#$conf["password"],字串,root的使用者密碼,預設不使用密碼,該參數不適用於apache環境.
14619
			#$conf["password"]="";
14620
			#$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".
14621
			#$conf["useScript"]="";
14622
			#$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".
14623
			#$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";
14624
			#$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.
14625
			#$conf["inBackGround"]="";
14626
			#$conf["getErr"],字串,"true"代表將錯誤輸出變成標準輸出,反之"false"為不變動.
14627
			#$conf["getErr"]="false";
14628
			#$conf["doNotRun"],字串,"true"代表不執行指令,預設為"false"會執行指令.
14629
			#$conf["doNotRun"]="false";
14630
			#參考資料:
14631
			#exec=>http://php.net/manual/en/function.exec.php
14632
			#escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php
14633
			#escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php
14634
			#備註:
14635
			#不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.
14636
			#若使用的 command、argu 參數,含有 ~ 則會被視為字串,若有需要其於 shell 中代表的家目錄位置,可用 fileAccess::tildeToPath 來進行轉換.
14637
			$changePermission=external::callShell($conf["external"]["callShell"]);
14638
			unset($conf["external"]["callShell"]);
14639
 
14640
			#如果 $changePermission["status"] 等於 "false"
14641
			if($changePermission["status"]=="false"){
14642
 
14643
				#設置錯誤識別
14644
				$result["status"]="false";
14645
 
14646
				#設置錯誤訊息
14647
				$result["error"]=$changePermission;
14648
 
14649
				#回傳結果
14650
				return $result;
14651
 
14652
				}#if end
14653
 
14654
			}#if end
14655
 
14656
		#反之檔案移動失敗
14657
		else{
14658
 
14659
			#設置錯誤識別
14660
			$result["status"]="false";
14661
 
14662
			#設置移動檔案失敗的訊息
14663
			$result["error"][]="移動檔案失敗";
14664
 
14665
			#回傳錯誤訊息
14666
			return $result;
14667
 
14668
			}#else end
14669
 
14670
		#將指定的檔案名稱與偵測到的副檔名合併在一塊
14671
		$storeFileName=$ServerFilename.$FileExtension;
14672
 
14673
		#如果有要將新檔案的相對位置用修改既有資料的方式寫入到資料表裏面
14674
		#如果 $dbProcess 等於 "true"
14675
		if($conf["dbProcess"]=="true"){
14676
 
14677
			#將新檔案的相對位置用修改既有資料的方式寫入到資料表裏面
14678
			#函式說明:
14679
			#更新資料表裏面的資料
14680
			#回傳的結果:
14681
			#$result["status"],爲查詢是否成功,若爲0則成功,若爲1則表示失敗了
14682
			#$result["error"],錯誤訊息
14683
			#$result["sql"],執行的sql語法.
14684
			#必填參數:
14685
			$conf["db"]["updateDataTableContent"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
14686
			$conf["db"]["updateDataTableContent"]["dbAccount"]=$conf["$dbAccount"];#爲用於連入mysql-Server時要使用的帳號
14687
			$conf["db"]["updateDataTableContent"]["selectedDataBaseName"]=$conf["dbName"];#要選取的資料庫名稱
14688
			$conf["db"]["updateDataTableContent"]["tableName"]=$conf["updatingDataTableName"];#要修改的資料表名稱
14689
			$conf["db"]["updateDataTableContent"]["whereColumn"]=$conf["updatingConditionDataTableColumnName"];#爲用來判斷要更新的哪筆資料的欄位名稱,須爲陣列值
14690
			$conf["db"]["updateDataTableContent"]["whereValue"]=$conf["updatingConditionDataTableColumnValue"];#為用來判斷是要更新哪筆資料的欄位對應數值,須爲陣列值
14691
			$conf["db"]["updateDataTableContent"]["tableColumnName"]=$conf["updatingTargetDataTableColumnName"];#資料表項目的名稱陣列
14692
			$conf["db"]["updateDataTableContent"]["updateDataValue"]=$conf["updatingTargetDataTableColumnValue"];#要更改成對應資料表項目的內容,須為陣列值
14693
 
14694
			#如果 $conf["db"]["updateDataTableContent"]["updateDataValue"] 裏面其中一個元素爲 "filePosition" ,則會替換成檔案的新位置。
14695
			for($i=0;$i<count($conf["updatingTargetDataTableColumnValue"]);$i++){
14696
 
14697
				#如果其中一項元素內容爲 "filePosition"
14698
				if($conf["db"]["updateDataTableContent"]["updateDataValue"][$i]=="filePosition"){
14699
 
14700
					#將其更改爲新檔案的位置
14701
					$conf["db"]["updateDataTableContent"]["updateDataValue"][$i]=$uploadDir."/".$storeFileName;
14702
 
14703
					}#if end
14704
 
14705
				}#for end
14706
 
14707
			#可省略參數:
14708
 
14709
			#如果 $conf["dbPassword"] 有設置
14710
			if(isset($conf["dbPassword"])){
14711
 
14712
				$conf["db"]["updateDataTableContent"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
14713
 
14714
				}#if end
14715
 
14716
			$db["updateDataTableContent"]=db::updateDataTableContent($conf["db"]["updateDataTableContent"]);
14717
			unset($conf["db"]["updateDataTableContent"]);
14718
 
14719
			#如果 $db["updateDataTableContent"]["status"] 等於 "false"
14720
			if($db["updateDataTableContent"]["status"]=="false"){
14721
 
14722
				#設置錯誤識別
14723
				$result["status"]="false";
14724
 
14725
				#設置錯誤訊息
14726
				$result["error"]=$db["updateDataTableContent"];
14727
 
14728
				#回傳結果
14729
				return $result;
14730
 
14731
				}#if end
14732
 
14733
			#取得執行的sql語法
14734
			$result["sql"]=$db["updateDataTableContent"]["sql"];
14735
 
14736
			}#if end
14737
 
14738
		#將各項結果存進 $result 陣列變數裏面
14739
		$result["ServerFileName"]=$storeFileName;#檔案名稱
14740
		$result["ServerFileType"]=$FileType;#檔案類型
14741
		$result["ServerFileSize"]=$storeFileSizeKb;#檔案大小
14742
		$result["fileRelativePosition"]=$uploadDir."/".$storeFileName;#檔案的相對位置
14743
		$result["error"]["uploadErrorCode"]=$FileError;#上傳的錯誤訊息
14744
 
14745
		#根據錯誤編號
14746
		switch($result["error"]["uploadErrorCode"]){
14747
 
14748
			#如果編號等於0
14749
			case 0:
14750
 
14751
				#代表沒有錯誤
14752
 
14753
				#卸除錯誤識別編號
14754
				unset($result["error"]);
14755
 
14756
				#設置錯誤識別
14757
				$result["status"]="true";
14758
 
14759
				#回傳結果
14760
				return $result;
14761
 
14762
				#跳出switch
14763
				break;
14764
 
14765
			#如果編號等於1
14766
			case 1:
14767
 
14768
				#設置錯誤訊息
14769
				$result["error"][]="檔案大小超出 php.ini 設定檔中的 upload_max_filesize";
14770
 
14771
				#設置錯誤識別
14772
				$result["status"]="false";
14773
 
14774
				#回傳結果
14775
				return $result;
14776
 
14777
				#跳出switch
14778
				break;
14779
 
14780
			#如果編號等於2
14781
			case 2:
14782
 
14783
				#設置錯誤訊息
14784
				$result["error"][]="檔案大小超出網頁所限定的 MAX_FILE_SIZE 大小";
14785
 
14786
				#設置錯誤識別
14787
				$result["status"]="false";
14788
 
14789
				#回傳結果
14790
				return $result;
14791
 
14792
				#跳出switch
14793
				break;
14794
 
14795
			#如果編號等於3
14796
			case 3:
14797
 
14798
				#設置錯誤訊息
14799
				$result["error"][]="檔案僅上傳成功部份";
14800
 
14801
				#設置錯誤識別
14802
				$result["status"]="false";
14803
 
14804
				#回傳結果
14805
				return $result;
14806
 
14807
				#跳出switch
14808
				break;
14809
 
14810
			#如果編號等於4
14811
			case 4:
14812
 
14813
				#設置錯誤訊息
14814
				$result["error"][]="沒有上傳的檔案";
14815
 
14816
				#設置錯誤識別
14817
				$result["status"]="false";
14818
 
14819
				#回傳結果
14820
				return $result;
14821
 
14822
				#跳出switch
14823
				break;
14824
 
14825
			#如果編號等於6
14826
			case 6:
14827
 
14828
				#設置錯誤訊息
14829
				$result["error"][]="暫存資料夾遺失";
14830
 
14831
				#設置錯誤識別
14832
				$result["status"]="false";
14833
 
14834
				#回傳結果
14835
				return $result;
14836
 
14837
				#跳出switch
14838
				break;
14839
 
14840
			#如果編號等於7
14841
			case 7:
14842
 
14843
				#設置錯誤訊息
14844
				$result["error"][]="檔案寫入硬碟失敗";
14845
 
14846
				#設置錯誤識別
14847
				$result["status"]="false";
14848
 
14849
				#回傳結果
14850
				return $result;
14851
 
14852
				#跳出switch
14853
				break;
14854
 
14855
			#如果編號等於8
14856
			case 8:
14857
 
14858
				#設置錯誤訊息
14859
				$result["error"][]="某些擴充套件導致檔案上傳功能不能使用,可用phpinfo()來檢查";
14860
 
14861
				#設置錯誤識別
14862
				$result["status"]="false";
14863
 
14864
				#回傳結果
14865
				return $result;
14866
 
14867
				#跳出switch
14868
				break;
14869
 
14870
			}#switch end
14871
 
14872
		#執行到這邊代表執行正常
14873
 
14874
		#將其處理結果設為 "true"
14875
		$result["status"]="true";
14876
 
14877
		#回傳結果
14878
		return $result;
14879
 
14880
		}#function processUploadedFile end
14881
 
14882
	/*
14883
	#函式說明:
14884
	#處理多個上傳到暫存目錄的檔案,可以移動到指定的位置,並指定檔案的名稱。並且可以指定刪除舊有的檔案,然後將新檔案的相對位置寫入到資料庫裏面。
14885
	#回傳的變數:
14886
	#$result["ServerFileName"][$i]#第$i-1個檔案的名稱.
14887
	#$result["ServerFileType"][$i]#第$i-1個檔案的類型.
14888
	#$result["ServerFileSize"][$i]#第$i-1個檔案的大小.
14889
	#$result["status"]#整體上傳有無成功,"true"代表完整成功,"false"代表有過程有錯誤.
14890
	#$result["error"],錯誤訊息陣列.
14891
	#$result["fileRelativePosition"][$i]#第$i-1個檔案的相對位置,包含檔案名稱與附檔名。
14892
	#必填參數:
14893
	#$conf["formFileName"],為上傳檔案時表單傳送時的名稱陣列.
14894
	$conf["formFileName"]=array();
14895
	#可省略參數:
14896
	#$conf["uploadDirUserDefine"],字串陣列,為存放上傳檔案的目錄,如果沒設定則會自行建立依照系統時間的年月日十分秒來替資料夾命名,並將上傳的檔案存在裏面。
14897
	#$conf["uploadDirUserDefine"]=array("");
14898
	#$conf["ServerFilenameUserDefine"],字串陣列,為存放在伺服器上的檔案名稱,如果沒設定則依照台灣時間的年月日時分秒命名
14899
	#$conf["ServerFilenameUserDefine"]=array("");
14900
	#$conf["NoFileExtension"],字串陣列,若為 "true" 則表 指定了檔案名稱後,不用再加上檔案型的副檔名,預設皆為為"false".
14901
	#$conf["NoFileExtension"]=array("true");
14902
	#$conf["limitPage"],字串陣列,限制只能從哪些網頁檔案過來。
14903
	#$conf["limitPage"]=array("");
14904
	#$conf["taskName"],字串,爲該上傳作業的名稱,若沒設定,則預設爲"上傳作業"。
14905
	#$conf["taskName"]="";
14906
	#$conf["eraseOldFile"],字串陣列,如果為"true"的話會移除同名的舊檔案,其值爲檔案的相對位置,預設為"false",不移除同名的檔案,並透過編號保留新的檔案.
14907
	#$conf["eraseOldFile"]=array("");
14908
	#$conf["dbProcess"],字串,如果爲"true",則會進行資料表資料更新的動作,亦即要設定 $conf["updatingMysqlServerAddress"] $conf["updatingMysqlAccount"] $conf["updatingDataBaseName"] $conf["updatingDataTableName"] $conf["updatingConditionDataTableColumnName"] $conf["updatingConditionDataTableColumnValue"] $conf["updatingTargetDataTableColumnName"] $conf["updatingTargetDataTableColumnValue"] 的內容,預設為"false".
14909
	#$conf["dbProcess"]="true";
14910
	#$conf["updatingMysqlServerAddress"],字串,資料庫位於網路上的哪個位置.
14911
	#$conf["updatingMysqlServerAddress"]=$dbAddress;
14912
	#$conf["updatingMysqlAccount"],字串,連線時要使用的帳號,省略時代表不用密碼進行連線.
14913
	#$conf["updatingMysqlAccount"]=$dbAccount;
14914
	#$conf["updatingMysqlPassword"],字串,連線時要使用的密碼.
14915
	#$conf["updatingMysqlPassword"]=$dbPassword;
14916
	#$conf["updatingDataBaseName"],字串,要更新的目標資料所屬資料庫名稱.
14917
	#$conf["updatingDataBaseName"]=$dbName;
14918
	#$conf["updatingDataTableName"],字串,要更新的目標資料位於哪個資料表.
14919
	#$conf["updatingDataTableName"]="";
14920
	#$conf["updatingConditionDataTableColumnName"],字串陣列,要用哪些欄位來識別要更新哪一筆資料,預設為array("id").
14921
	#$conf["updatingConditionDataTableColumnName"]=array("id");
14922
	#$conf["updatingConditionDataTableColumnValue"],字串陣列,該條件欄位內容的數值要爲多少,才是我們要修改的那筆資料。
14923
	#$conf["updatingConditionDataTableColumnValue"]=array("");
14924
	#$conf["updatingTargetDataTableColumnName"],字串陣列,要更新的資料欄位有?
14925
	#$conf["updatingTargetDataTableColumnName"]=array("");
14926
	#$conf["updatingTargetDataTableColumnValue"],字串陣列,目標資料欄位要改成什麼樣的數值,如果其元素含有"filePosition",則會替換成新檔案的相對位置
14927
	#$conf["updatingTargetDataTableColumnValue"]=array("");
14928
	#參考資料:
14929
	#file_exist()的用法
14930
	#http://php.net/manual/en/function.file-exists.php
14931
	#備註:
14932
	#無.
14933
	*/
14934
	public static function processMultiUploadedFile($conf){
14935
 
14936
		#初始化要回傳的內容
14937
		$result=array();
14938
 
14939
		#設置當前執行的函數
14940
		$result["function"]=__FUNCTION__;
14941
 
14942
		#如果 $conf 不為陣列
14943
		if(gettype($conf)!="array"){
14944
 
14945
			#設置執行失敗
14946
			$result["status"]="false";
14947
 
14948
			#設置執行錯誤訊息
14949
			$result["error"][]="\$conf變數須為陣列形態";
14950
 
14951
			#如果傳入的參數為 null
14952
			if($conf==null){
14953
 
14954
				#設置執行錯誤訊息
14955
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
14956
 
14957
				}#if end
14958
 
14959
			#回傳結果
14960
			return $result;
14961
 
14962
			}#if end
14963
 
14964
		#檢查參數
14965
		#函式說明:
14966
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
14967
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
14968
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
14969
		#$result["function"],當前執行的函式名稱.
14970
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
14971
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
14972
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
14973
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
14974
		#必填參數:
14975
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
14976
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
14977
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
14978
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("formFileName");
14979
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
14980
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("array");
14981
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
14982
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
14983
		#可省略參數:
14984
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
14985
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
14986
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
14987
		$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("uploadDirUserDefine","ServerFilenameUserDefine","NoFileExtension","limitPage","taskName","eraseOldFile","dbProcess","updatingMysqlServerAddress","updatingMysqlAccount","updatingMysqlPassword","updatingDataBaseName","updatingDataTableName","updatingConditionDataTableColumnName","updatingConditionDataTableColumnValue","updatingTargetDataTableColumnName","updatingTargetDataTableColumnValue");
14988
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
14989
		$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("array","array","array","array","string","array","array","string","string","string","string","string","array","array","array","array");
14990
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
14991
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array(null,null,null,null,"上傳作業",null,"false",null,null,null,null,null,array("id"),null,null,null);
14992
		#$conf["variableCheck.checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
14993
		$conf["variableCheck.checkArguments"]["arrayCountEqualCheck"][]=array("uploadDirUserDefine","ServerFilenameUserDefine","NoFileExtension","eraseOldFile");
14994
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
14995
		unset($conf["variableCheck.checkArguments"]);
14996
 
14997
		#如果檢查失敗
14998
		if($checkResult["status"]=="false"){
14999
 
15000
			#設置執行不正常
15001
			$result["status"]="false";
15002
 
15003
			#設置錯誤訊息
15004
			$result["error"]=$checkResult;
15005
 
15006
			#回傳結果
15007
			return $result;
15008
 
15009
			}#if end
15010
 
15011
		#如果檢查不通過
15012
		if($checkResult["passed"]=="false"){
15013
 
15014
			#設置執行不正常
15015
			$result["status"]="false";
15016
 
15017
			#設置錯誤訊息
15018
			$result["error"]=$checkResult;
15019
 
15020
			#回傳結果
15021
			return $result;
15022
 
15023
			}#if end
15024
 
15025
		#如果 count($conf["formFileName"]) 為 0
15026
		if(count($conf["formFileName"])==0){
15027
 
15028
			#設置執行失敗
15029
			$result["status"]="false";
15030
 
15031
			#設置執行錯誤
15032
			$result["error"][]="陣列變數 \"formFileName\" 裡面必須要有元素";
15033
 
15034
			#回傳結果
15035
			return $result;
15036
 
15037
			}#if end
15038
 
15039
		#有幾個要接收的檔案就執行幾次
15040
		for($i=0;$i<count($conf["formFileName"]);$i++){
15041
 
15042
			#如果 $conf["formFileName"][$i] 不存在
15043
			if(!isset($conf["formFileName"][$i])){
15044
 
15045
				#設置執行不正常
15046
				$result["status"]="false";
15047
 
15048
				#設置錯誤訊息
15049
				$result["error"][]="表單檔案變數名稱有缺";
15050
 
15051
				#回傳結果
15052
				return $result;
15053
 
15054
				}#if end
15055
 
15056
			#函式說明:
15057
			#處理上傳到暫存目錄的檔案,可以移動到指定的位置,並指定檔案的名稱。並且可以指定刪除舊有的檔案,然後將新檔案的相對位置寫入到資料庫裏面。
15058
			#回傳的變數:
15059
			#$result["status"],整體上傳有無成功。"true"代表完整成功 "false"代表有過程有錯誤
15060
			#$result["error"],錯誤訊息陣列,$result["error"][0] 為"沒有接收到上傳的檔案",則代表沒有上傳檔案.
15061
			#$result["warning"],警告訊息陣列
15062
			#$result["ServerFileName"],檔案名稱
15063
			#$result["ServerFileType"],檔案類型
15064
			#$result["ServerFileSize"],檔案大小
15065
			#$result["fileRelativePosition"],檔案的相對位置,包含檔案名稱與附檔名。
15066
			#必填參數:
15067
			#$conf["form::processUploadedFile"]["formFileName"],字串,為上傳檔案時表單傳送時的名稱
15068
			$conf["form::processUploadedFile"]["formFileName"]=$conf["formFileName"][$i];
15069
			#可省略參數:
15070
 
15071
			#如果 $conf["uploadDirUserDefine"] 存在
15072
			if(isset($conf["uploadDirUserDefine"])){
15073
 
15074
				#如果 $conf["uploadDirUserDefine"][$i] 有設置
15075
				if(isset($conf["uploadDirUserDefine"][$i])){
15076
 
15077
					#$conf["form::processUploadedFile"]["uploadDirUserDefine"],字串,為存放上傳檔案的目錄,如果沒設定則會自行建立依照系統時間的年月日十分秒來替資料夾命名,並將上傳的檔案存在裏面。
15078
					$conf["form::processUploadedFile"]["uploadDirUserDefine"]=$conf["uploadDirUserDefine"][$i];
15079
 
15080
					}#if end
15081
 
15082
				}#if end
15083
 
15084
			#如果 $conf["ServerFilenameUserDefine"] 有設置
15085
			if(isset($conf["ServerFilenameUserDefine"])){
15086
 
15087
				#如果 $conf["ServerFilenameUserDefine"][$i] 有設置
15088
				if(isset($conf["ServerFilenameUserDefine"][$i])){
15089
 
15090
					#$conf["form::processUploadedFile"]["ServerFilenameUserDefine"],字串,為存放在伺服器上的檔案名稱,如果沒設定則依照台灣時間的年月日時分秒命名
15091
					$conf["form::processUploadedFile"]["ServerFilenameUserDefine"]=$conf["ServerFilenameUserDefine"][$i];
15092
 
15093
					}#if end
15094
 
15095
				}#if end
15096
 
15097
			#如果 $conf["NoFileExtension"] 有設置
15098
			if(isset($conf["NoFileExtension"])){
15099
 
15100
				#如果 $conf["NoFileExtension"][$i] 有設置
15101
				if(isset($conf["NoFileExtension"][$i])){
15102
 
15103
					#$conf["form::processUploadedFile"]["NoFileExtension"],字串,若為 "true" 則表 指定了檔案名稱後,不用再加上檔案型的副檔名,預設為"false".
15104
					$conf["form::processUploadedFile"]["NoFileExtension"]="true";
15105
 
15106
					}#if end
15107
 
15108
				}#if end
15109
 
15110
			#如果 $conf["limitPage"] 有設置
15111
			if(isset($conf["limitPage"])){
15112
 
15113
				#$conf["form::processUploadedFile"]["limitPage"],字串陣列,限制只能從哪些網頁檔案過來。
15114
				$conf["form::processUploadedFile"]["limitPage"]=$conf["limitPage"];
15115
 
15116
				}#if end
15117
 
15118
			#如果 $conf["taskName"] 有設置
15119
			if(isset($conf["taskName"])){
15120
 
15121
				#$conf["form::processUploadedFile"]["taskName"],字串,爲該上傳作業的名稱,若沒設定,則預設爲"上傳作業"。
15122
				$conf["form::processUploadedFile"]["taskName"]=$conf["taskName"];
15123
 
15124
				}#if end
15125
 
15126
			#如果 $conf["eraseOldFile"] 有設置
15127
			if(isset($conf["eraseOldFile"])){
15128
 
15129
				#如果 $conf["eraseOldFile"][$i] 有設置
15130
				if(isset($conf["eraseOldFile"][$i])){
15131
 
15132
					#$conf["form::processUploadedFile"]["eraseOldFile"],字串,如果為"true"的話會移除同名的舊檔案,其值爲檔案的相對位置,預設為"false",不移除同名的檔案,並透過編號保留新的檔案.
15133
					$conf["form::processUploadedFile"]["eraseOldFile"]=$conf["eraseOldFile"][$i];
15134
 
15135
					}#if end
15136
 
15137
				}#if end
15138
 
15139
			#$conf["form::processUploadedFile"]["dbProcess"],字串,如果爲"true",則會進行資料表資料更新的動作,亦即要設定 $conf["updatingMysqlServerAddress"] $conf["updatingMysqlAccount"] $conf["updatingDataBaseName"] $conf["updatingDataTableName"] $conf["updatingConditionDataTableColumnName"] $conf["updatingConditionDataTableColumnValue"] $conf["updatingTargetDataTableColumnName"] $conf["updatingTargetDataTableColumnValue"] 的內容,預設為"false".
15140
			$conf["form::processUploadedFile"]["dbProcess"]=$conf["dbProcess"];
15141
 
15142
			#如果 $conf["updatingMysqlServerAddress"] 有設定
15143
			if(isset($conf["updatingMysqlServerAddress"])){
15144
 
15145
				#$conf["form::processUploadedFile"]["updatingMysqlServerAddress"],字串,資料庫位於網路上的哪個位置.
15146
				$conf["form::processUploadedFile"]["updatingMysqlServerAddress"]=$conf["updatingMysqlServerAddress"];
15147
 
15148
				}#if end
15149
 
15150
			#如果 $conf["updatingMysqlAccount"] 有設定
15151
			if(isset($conf["updatingMysqlAccount"])){
15152
 
15153
				#$conf["form::processUploadedFile"]["updatingMysqlAccount"],字串,連線時要使用的帳號,省略時代表不用密碼進行連線.
15154
				$conf["form::processUploadedFile"]["updatingMysqlAccount"]=$conf["updatingMysqlAccount"];
15155
 
15156
				}#if end
15157
 
15158
			#如果 $conf["updatingMysqlPassword"] 有設定
15159
			if(isset($conf["updatingMysqlPassword"])){
15160
 
15161
				#$conf["form::processUploadedFile"]["updatingMysqlPassword"],字串,連線時要使用的密碼.
15162
				$conf["form::processUploadedFile"]["updatingMysqlPassword"]=$conf["updatingMysqlPassword"];
15163
 
15164
				}#if end
15165
 
15166
			#如果 $conf["updatingDataBaseName"] 有設置
15167
			if(isset($conf["updatingDataBaseName"])){
15168
 
15169
				#$conf["form::processUploadedFile"]["updatingDataBaseName"],字串,要更新的目標資料所屬資料庫名稱.
15170
				$conf["form::processUploadedFile"]["updatingDataBaseName"]=$dbName;
15171
 
15172
				}#if end
15173
 
15174
			#如果 $conf["updatingDataTableName"] 有設置
15175
			if(isset($conf["updatingDataTableName"])){
15176
 
15177
				#$conf["form::processUploadedFile"]["updatingDataTableName"],字串,要更新的目標資料位於哪個資料表.
15178
				$conf["form::processUploadedFile"]["updatingDataTableName"]=$conf["updatingDataTableName"];
15179
 
15180
				}#if end
15181
 
15182
			#如果 $conf["updatingConditionDataTableColumnName"] 有設置
15183
			if(isset($conf["updatingConditionDataTableColumnName"])){
15184
 
15185
				#$conf["form::processUploadedFile"]["updatingConditionDataTableColumnName"],字串陣列,要用哪些欄位來識別要更新哪一筆資料,預設為array("id").
15186
				$conf["form::processUploadedFile"]["updatingConditionDataTableColumnName"]=$conf["updatingConditionDataTableColumnName"];
15187
 
15188
				}#if end
15189
 
15190
			#如果 $conf["updatingConditionDataTableColumnValue"] 有設置
15191
			if(isset($conf["updatingConditionDataTableColumnValue"])){
15192
 
15193
				#$conf["form::processUploadedFile"]["updatingConditionDataTableColumnValue"],字串陣列,該條件欄位內容的數值要爲多少,才是我們要修改的那筆資料。
15194
				$conf["form::processUploadedFile"]["updatingConditionDataTableColumnValue"]=$conf["updatingConditionDataTableColumnValue"];
15195
 
15196
				}#if end
15197
 
15198
			#如果 $conf["updatingTargetDataTableColumnName"] 有設置
15199
			if(isset($conf["updatingTargetDataTableColumnName"])){
15200
 
15201
				#$conf["form::processUploadedFile"]["updatingTargetDataTableColumnName"],字串陣列,要更新的資料欄位有?
15202
				$conf["form::processUploadedFile"]["updatingTargetDataTableColumnName"]=$conf["updatingTargetDataTableColumnName"];
15203
 
15204
				}#if end
15205
 
15206
			#如果 $conf["updatingTargetDataTableColumnValue"] 有設置
15207
			if(isset($conf["updatingTargetDataTableColumnValue"])){
15208
 
15209
				#$conf["form::processUploadedFile"]["updatingTargetDataTableColumnValue"],字串陣列,目標資料欄位要改成什麼樣的數值,如果其元素含有"filePosition",則會替換成新檔案的相對位置
15210
				$conf["form::processUploadedFile"]["updatingTargetDataTableColumnValue"]=$conf["updatingTargetDataTableColumnValue"];
15211
 
15212
				}#if end
15213
 
15214
			#參考資料:
15215
			#file_exist()的用法
15216
			#http://php.net/manual/en/function.file-exists.php
15217
			$processUploadedFile=form::processUploadedFile($conf["form::processUploadedFile"]);
15218
			unset($conf["form::processUploadedFile"]);
15219
 
15220
			#如果 form::processUploadedFile 執行失敗
15221
			if($processUploadedFile["status"]=="false"){
15222
 
15223
				#設置執行不正常
15224
				$result["status"]="false";
15225
 
15226
				#設置錯誤訊息
15227
				$result["error"]=$processUploadedFile;
15228
 
15229
				#回傳結果
15230
				return $result;
15231
 
15232
				}#if end
15233
 
15234
			#取得回傳的結果
15235
 
15236
			#$result["ServerFileName"][$i],第$i-1個檔案的名稱.
15237
			$result["ServerFileName"][$i]=$processUploadedFile["ServerFileName"];
15238
 
15239
			#$result["ServerFileType"][$i],第$i-1個檔案的類型.
15240
			$result["ServerFileType"][$i]=$processUploadedFile["ServerFileType"];
15241
 
15242
			#$result["ServerFileSize"][$i],第$i-1個檔案的大小.
15243
			$result["ServerFileSize"][$i]=$processUploadedFile["ServerFileSize"];
15244
 
15245
			#$result["fileRelativePosition"][$i],第$i-1個檔案的相對位置,包含檔案名稱與附檔名。
15246
			$result["fileRelativePosition"][$i]=$processUploadedFile["fileRelativePosition"];
15247
 
15248
			}#for end
15249
 
15250
		#設置執行正常
15251
		$result["status"]="true";
15252
 
15253
		#回傳結果
15254
		return $result;
15255
 
15256
		}#function processMultiUploadedFile
15257
 
15258
	/*
15259
	#函式說明:
15260
	#上傳多個檔案
15261
	#回傳結果:
15262
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
15263
	#$result["function"],當前執行的函數.
15264
	#$result["error"],錯誤訊息陣列.
15265
	#$result["content"],上傳檔案的語法.
15266
	#必填參數:
15267
	#$conf["formFileName"],字串陣列,每個要上傳檔案的表單名稱.
15268
	$conf["formFileName"]=array("");
15269
	#可省略參數:
15270
	#$conf["maxFileSize"],字串陣列,各個檔案的最大限制,單位是位元組(byte)。1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設是10240000(10MB)
15271
	#$conf["maxFileSize"]=array("10240000");
15272
	#$conf["browseButtonClass"],字串陣列,瀏覽檔案的按鈕樣式,預設為"__qbpwcf_inputFileCssStyle".
15273
	#$conf["browseButtonClass"]=array("__inputFileCssStyle");
15274
	#$conf["acceptType"],字串陣列,限定各個檔案的類型為"video/*","audio/*","image/*",預設不限定.
15275
	#$conf["acceptType"]=array("");
15276
	#$conf["required"],字串陣列,各個欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
15277
	#$conf["required"]=array("true");
15278
	#$conf["comment"],字串陣列,各個上傳檔案的註解,預設不顯示.
15279
	#$conf["comment"]=array("");
15280
	#$conf["formStart"],字串,是否為表單的開始,"true"為是,預設為"false".
15281
	#$conf["formStart"]="true";
15282
	#$conf["formName"],字串,表單的名稱
15283
	#$conf["formName"]="";
15284
	#$conf["formAction"],字串,表單的目標,若有設置$conf["formStart"]為"true",則預設為php檔案自己
15285
	#$conf["formAction"]="";
15286
	#$conf["formTarget"],字串,表單要呈現回應的位置,預設為"_self".
15287
	#$conf["formTarget"]="_self";
15288
	#參考資料:
15289
	#無.
15290
	#備註:
15291
	#無.
15292
	*/
15293
	public static function uploadMultiFile(&$conf){
15294
 
15295
		#初始化要回傳的變數
15296
		$result=array();
15297
 
15298
		#設置當前執行的函式
15299
		$result["function"]=__FUNCTION__;
15300
 
15301
		#初始化表單開始的語法
15302
		$result["content"]="";
15303
 
15304
		#如果 $conf 不為陣列
15305
		if(gettype($conf)!="array"){
15306
 
15307
			#設置執行失敗
15308
			$result["status"]="false";
15309
 
15310
			#設置執行錯誤訊息
15311
			$result["error"][]="\$conf變數須為陣列形態";
15312
 
15313
			#如果傳入的參數為 null
15314
			if($conf==null){
15315
 
15316
				#設置執行錯誤訊息
15317
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
15318
 
15319
				}#if end
15320
 
15321
			#回傳結果
15322
			return $result;
15323
 
15324
			}#if end
15325
 
15326
		#檢查參數
15327
		#函式說明:
15328
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
15329
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
15330
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
15331
		#$result["function"],當前執行的函式名稱.
15332
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
15333
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
15334
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
15335
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
15336
		#必填參數:
15337
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
15338
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
15339
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
15340
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("formFileName");
15341
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
15342
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
15343
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
15344
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
15345
		#可省略參數:
15346
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
15347
		#$conf["canBeEmptyString"]="false";
15348
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
15349
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("maxFileSize","browseButtonClass","formStart","formAction","formTarget","comment","formName","acceptType","required");
15350
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
15351
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array","array","string","string","string","array","string","array","array");
15352
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
15353
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null,"false",null,"_self",null,null,null,null);
15354
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
15355
		#$conf["arrayCountEqualCheck"][]=array();
15356
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
15357
		unset($conf["variableCheck::checkArguments"]);
15358
 
15359
		#如果檢查參數失敗
15360
		if($checkResult["status"]=="false"){
15361
 
15362
			#設置執行失敗
15363
			$result["status"]="false";
15364
 
15365
			#設置執行錯誤
15366
			$result["error"]=$checkResult;
15367
 
15368
			#回傳結果
15369
			return $result;
15370
 
15371
			}#if end
15372
 
15373
		#如果檢查參數不通過
15374
		if($checkResult["passed"]=="false"){
15375
 
15376
			#設置執行失敗
15377
			$result["status"]="false";
15378
 
15379
			#設置執行錯誤
15380
			$result["error"]=$checkResult;
15381
 
15382
			#回傳結果
15383
			return $result;
15384
 
15385
			}#if end
15386
 
15387
		#如果 $conf["formStart"] 跟 $conf["formAction"] 皆有設置
15388
		if(isset($conf["formStart"]) && isset($conf["formAction"])){
15389
 
15390
			#函式說明:
15391
			#表單開始
15392
			#回傳結果:
15393
			#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
15394
			#$result["error"],錯誤訊息陣列.
15395
			#$resutl["function"],當前執行的函式名稱.
15396
			#$result["content"],表單開始的語法.
15397
			#必填參數:
15398
			$conf["form::start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容
15399
			#可省略參數:
15400
			#$conf["legend"]="";#顯示表單的標題
15401
 
15402
			#如果 $conf["formName"] 有設置
15403
			if(isset($conf["formName"])){
15404
 
15405
				$conf["form::start"]["name"]=$conf["formName"];#爲該表單的名稱
15406
 
15407
				}#if end
15408
 
15409
			#$conf["form::start"]["method"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
15410
 
15411
			#如果 $conf["formTarget"] 有設置
15412
			if(isset($conf["formTarget"])){
15413
 
15414
				$conf["form::start"]["target"]=$conf["formTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
15415
 
15416
				}#if end
15417
 
15418
			#$conf["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是,"false"為否,預設為"false".
15419
			#$conf["tableClass"]="";#表格要套用的css樣式,預設爲"__withoutBorder"無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
15420
			#$conf["showFieldsetBorder"]="false";#是否要顯示表單區域的框線,預設為"false"不顯示,"true"代表要顯示.
15421
			#參考資料:
15422
			#http://www.w3schools.com/html/html_forms.asp
15423
			#http://www.w3schools.com/tags/tag_fieldset.asp
15424
			$formStart=form::start($conf["form::start"]);
15425
			unset($conf["form::start"]);
15426
 
15427
			#如果表單開始失敗
15428
			if($formStart["status"]=="false"){
15429
 
15430
				#設置執行失敗
15431
				$result["status"]="false";
15432
 
15433
				#設置執行錯誤
15434
				$result["error"]=$formStart;
15435
 
15436
				#回傳結果
15437
				return $result;
15438
 
15439
				}#if end
15440
 
15441
			#串接表單開始
15442
			$result["content"]=$result["content"].$formStart["content"];
15443
 
15444
			}#if end
15445
 
15446
		#陣列 $conf["formFileName"] 中有幾個元素,就執行幾次
15447
		for($i=0;$i<count($conf["formFileName"]);$i++){
15448
 
15449
			#如果 $conf["formFileName"][$i] 不存在
15450
			if(!isset($conf["formFileName"][$i])){
15451
 
15452
				#設置執行失敗
15453
				$result["status"]="false";
15454
 
15455
				#設置錯誤訊息
15456
				$result["error"][]="表單變數有缺";
15457
 
15458
				#回傳結果
15459
				return $result;
15460
 
15461
				}#if end
15462
 
15463
			#函式說明:
15464
			#可以瀏覽要上傳的檔案
15465
			#回傳結果:
15466
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
15467
			#$result["function"],當前執行的函數.
15468
			#$result["error"],錯誤訊息陣列.
15469
			#$result["content"],上傳檔案的語法.
15470
			#必填參數:
15471
			#$conf["formFileName"],字串,該上傳檔案的表單名稱.
15472
			$conf["form::uploadOneFile"]["formFileName"]=$conf["formFileName"][$i];
15473
			#可省略參數:
15474
 
15475
			#如果 $conf["maxFileSize"] 有設置
15476
			if(isset($conf["form::uploadOneFile"])){
15477
 
15478
				#如果 $conf["form::uploadOneFile"][$i] 有設置
15479
				if(isset($conf["form::uploadOneFile"][$i])){
15480
 
15481
					#$conf["form::uploadOneFile"]["maxFileSize"],字串,檔案的最大限制,單位是位元組(byte)。1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設是10240000(10MB)
15482
					$conf["form::uploadOneFile"]["maxFileSize"]=$conf["maxFileSize"];
15483
 
15484
					}#if end
15485
 
15486
				}#if end
15487
 
15488
			#如果 $conf["browseButtonClass"] 有設置
15489
			if(isset($conf["browseButtonClass"])){
15490
 
15491
				#如果 $conf["browseButtonClass"][$i] 有設置
15492
				if(isset($conf["browseButtonClass"][$i])){
15493
 
15494
					#$conf["form::uploadOneFile"]["browseButtonClass"],字串,瀏覽檔案的按鈕樣式,預設為"__inputFileCssStyle".
15495
					$conf["form::uploadOneFile"]["browseButtonClass"]="__inputFileCssStyle";
15496
 
15497
					}#if end
15498
 
15499
				}#if end
15500
 
15501
			#如果 $conf["acceptType"] 有設置
15502
			if(isset($conf["acceptType"])){
15503
 
15504
				#如果 $conf["acceptType"][$i] 存在
15505
				if(isset($conf["acceptType"][$i])){
15506
 
15507
					#$conf["form::uploadOneFile"]["acceptType"],字串,限定檔案的類型為"video/*","audio/*","image/*",預設不限定.
15508
					$conf["form::uploadOneFile"]["acceptType"]=$conf["acceptType"][$i];
15509
 
15510
					}#if end
15511
 
15512
				}#if end
15513
 
15514
			#如果 $conf["required"] 有設置
15515
			if(isset($conf["required"])){
15516
 
15517
				#如果 $conf["required"][$i] 有設置
15518
				if(isset($conf["required"][$i])){
15519
 
15520
					#$conf["form::uploadOneFile"]["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
15521
					$conf["form::uploadOneFile"]["required"]=$conf["required"][$i];
15522
 
15523
					}#if end
15524
 
15525
				}#if end
15526
 
15527
			#$conf["trStart"],字串,爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設為"false".
15528
			#$conf["trStart"]="true";
15529
			#$conf["trClass"],字串,列的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式,預設為"__withoutBorder".
15530
			#$conf["trClass"]="__withoutBorder";
15531
			#$conf["tdStart"],字串,爲是否要以<td>開頭,"true"表示"是",也可以看成列裏面的元素開始,預設為"false".
15532
			#$conf["tdStart"]="false";
15533
			#$conf["tdClass"],字串,行的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式,預設為"__withoutBorder".
15534
			#$conf["tdClass"]="__withoutBorder";
15535
			#$conf["tdEnd"],字串,爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設為"false".
15536
			#$conf["tdEnd"]="true";
15537
			#$conf["trEnd"],字串,爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設為"false".
15538
			#$conf["trEnd"]="true";
15539
			#$conf["form::uploadOneFile"]["formStart"],字串,是否為表單的開始,"true"為是,預設為"false".
15540
			#$conf["form::uploadOneFile"]["formStart"]=$conf["formStart"];
15541
			#$conf["form::uploadOneFile"]["formName"],字串,表單的名稱
15542
			#$conf["form::uploadOneFile"]["formName"]=$conf["formName"];
15543
			#$conf["form::uploadOneFile"]["formAction"],字串,表單的目標,若有設置$conf["formStart"]為"true",則預設為php檔案自己
15544
			#$conf["form::uploadOneFile"]["formAction"]=$conf["formAction"];
15545
			#$conf["form::uploadOneFile"]["formTarget"],字串,表單要呈現回應的位置,預設為"_self".
15546
			#$conf["form::uploadOneFile"]["formTarget"]=$conf["formTarget"];
15547
			#$conf["form::uploadOneFile"]["formEnd"],字串,是否為表單的結束,"true"為是,預設為"false".
15548
			#$conf["form::uploadOneFile"]["formEnd"]=$conf["formEnd"];
15549
 
15550
			#如果有設定 $conf["comment"]
15551
			if(isset($conf["comment"])){
15552
 
15553
				#如果有設定 $conf["comment"][$i]
15554
				if(isset($conf["comment"][$i])){
15555
 
15556
					#$conf["form::uploadOneFile"]["comment"],字串,該上傳檔案的註解,預設不顯示.
15557
					$conf["form::uploadOneFile"]["comment"]=$conf["comment"][$i];
15558
 
15559
					}#if end
15560
 
15561
				}#if end
15562
 
15563
			$uploadOneFile=form::uploadOneFile($conf["form::uploadOneFile"]);
15564
			unset($conf["form::uploadOneFile"]);
15565
 
15566
			#如果 form::uploadOneFile 執行失敗
15567
			if($uploadOneFile["status"]=="false"){
15568
 
15569
				#設置執行失敗
15570
				$result["status"]="false";
15571
 
15572
				#設置錯誤訊息
15573
				$result["error"]=$uploadOneFile;
15574
 
15575
				#回傳結果
15576
				return $result;
15577
 
15578
				}#if end
15579
 
15580
			#如果不是最後一筆
15581
			if($i!=count($conf["formFileName"])-1){
15582
 
15583
				#取得上傳的語法,結尾空一列.
15584
				$result["content"]=$result["content"].$uploadOneFile["content"]."<p>&nbsp;</p>";
15585
 
15586
				}#if end
15587
 
15588
			#反之是最後一筆
15589
			else{
15590
 
15591
				#取得上傳的語法
15592
				$result["content"]=$result["content"].$uploadOneFile["content"];
15593
 
15594
				}#else end
15595
 
15596
			}#for end
15597
 
15598
		#設置執行正常
15599
		$result["status"]="true";
15600
 
15601
		#回傳結果
15602
		return $result;
15603
 
15604
		}#function uploadMultiFile end
15605
 
15606
	/*
15607
	#函式說明:
15608
	#上傳多個檔案,包含回上頁跟送出表單的按鈕.
15609
	#回傳結果:
15610
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
15611
	#$result["function"],當前執行的函數.
15612
	#$result["error"],錯誤訊息陣列.
15613
	#$result["content"],上傳檔案的語法.
15614
	#必填參數:
15615
	#$conf["formFileName"],字串陣列,該上傳檔案的表單名稱.
15616
	$conf["formFileName"]=array("");
15617
	#$conf["actionPage"],字串,處理表單資訊的頁面.
15618
	$conf["actionPage"]="";
15619
	#可省略參數:
15620
	#$conf["backButtonName"],字串,退回上一頁的按鈕要顯示的名稱,預設爲"回上頁"
15621
	#$conf["backButtonName"]="回上頁";
15622
	#$conf["backPage"],字串,返回的按鈕點了之後要到哪個頁面,預設是不使用.
15623
	#$conf["backPage"]="";
15624
	#$conf["backTarget"],字串,返回按鈕的顯示區塊,可以為"_self"自己這個頁面,"_top"整個畫面,"_blank"新的分頁,"_parent"父頁面,預設為"_self".
15625
	#$conf["backTarget"]="";
15626
	#$conf["backButtonClass"],字串,回上頁按鈕的css樣式,預設為"__qbpwcf_button".
15627
	#$conf["backButtonClass"]="__simpleButtonLinkDefaultButtonCssStyle";
15628
	#$conf["formName"],字串,表單的名稱
15629
	#$conf["formName"]="";
15630
	#$conf["formTarget"],字串,表單要呈現回應的位置,預設為"_self".
15631
	#$conf["formTarget"]="_self";
15632
	#$conf["acceptType"],字串陣列,限定各個檔案的類型為"video/*","audio/*","image/*",預設不限定.
15633
	#$conf["acceptType"]=array("");
15634
	#$conf["comment"],字串陣列,各個上傳檔案的註解,預設不顯示.
15635
	#$conf["comment"]=array("");
15636
	#$conf["required"],字串陣列,各個欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
15637
	#$conf["required"]=array("true");
15638
	#$conf["maxFileSize"],字串陣列,各個檔案的最大限制,單位是位元組(byte),1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設爲"102400000"(100MB)
15639
	#$conf["maxFileSize"]=array("102400000");
15640
	#$conf["browseButtonClass"],字串陣列,瀏覽要上傳檔案的css樣式,預設為"__qbpwcf_inputFileCssStyle".
15641
	#$conf["browseButtonClass"]=array("__inputFileCssStyle");
15642
	#$conf["submitButtonClass"],字串,上傳按鈕的css樣式,預設為"__qbpwcf_button".
15643
	#$conf["submitButtonClass"]="__simpleButtonLinkDefaultButtonCssStyle";
15644
	#$conf["submitButtonName"],字串,送出鈕要顯示的名稱,預設爲"上傳"
15645
	#$conf["submitButtonName"]="上傳";
15646
	#參考資料:
15647
	#無.
15648
	#備註:
15649
	#無.
15650
	*/
15651
	public static function uploadMultiFileCom(&$conf){
15652
 
15653
		#初始化要回傳的變數
15654
		$result=array();
15655
 
15656
		#設置當前執行的函式
15657
		$result["function"]=__FUNCTION__;
15658
 
15659
		#初始化表單開始的語法
15660
		$result["content"]="";
15661
 
15662
		#如果 $conf 不為陣列
15663
		if(gettype($conf)!="array"){
15664
 
15665
			#設置執行失敗
15666
			$result["status"]="false";
15667
 
15668
			#設置執行錯誤訊息
15669
			$result["error"][]="\$conf變數須為陣列形態";
15670
 
15671
			#如果傳入的參數為 null
15672
			if($conf==null){
15673
 
15674
				#設置執行錯誤訊息
15675
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
15676
 
15677
				}#if end
15678
 
15679
			#回傳結果
15680
			return $result;
15681
 
15682
			}#if end
15683
 
15684
		#檢查參數
15685
		#函式說明:
15686
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
15687
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
15688
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
15689
		#$result["function"],當前執行的函式名稱.
15690
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
15691
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
15692
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
15693
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
15694
		#必填參數:
15695
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
15696
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
15697
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
15698
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("formFileName","actionPage");
15699
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
15700
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","string");
15701
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
15702
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
15703
		#可省略參數:
15704
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
15705
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
15706
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
15707
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("backButtonName","backPage","backTarget","backButtonClass","formName","formTarget","acceptType","comment","required","maxFileSize","browseButtonClass","submitButtonClass","submitButtonName");
15708
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
15709
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","array","array","array","array","array","string","string");
15710
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
15711
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("回上頁",null,"_self","__qbpwcf_button",null,"_self",null,null,null,null,null,"__qbpwcf_button","上傳");
15712
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
15713
		#$conf["arrayCountEqualCheck"][]=array();
15714
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
15715
		unset($conf["variableCheck::checkArguments"]);
15716
 
15717
		#如果檢查參數失敗
15718
		if($checkResult["status"]=="false"){
15719
 
15720
			#設置執行失敗
15721
			$result["status"]="false";
15722
 
15723
			#設置執行錯誤
15724
			$result["error"]=$checkResult;
15725
 
15726
			#回傳結果
15727
			return $result;
15728
 
15729
			}#if end
15730
 
15731
		#如果檢查參數不通過
15732
		if($checkResult["passed"]=="false"){
15733
 
15734
			#設置執行失敗
15735
			$result["status"]="false";
15736
 
15737
			#設置執行錯誤
15738
			$result["error"]=$checkResult;
15739
 
15740
			#回傳結果
15741
			return $result;
15742
 
15743
			}#if end
15744
 
15745
		#函式說明:
15746
		#上傳多個檔案
15747
		#回傳結果:
15748
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
15749
		#$result["function"],當前執行的函數.
15750
		#$result["error"],錯誤訊息陣列.
15751
		#$result["content"],上傳檔案的語法.
15752
		#必填參數:
15753
		#$conf["form::uploadMultiFile"]["formFileName"],字串陣列,每個要上傳檔案的表單名稱.
15754
		$conf["form::uploadMultiFile"]["formFileName"]=$conf["formFileName"];
15755
		#可省略參數:
15756
 
15757
		#如果 $conf["maxFileSize"] 有設置
15758
		if(isset($conf["maxFileSize"])){
15759
 
15760
			#$conf["form::uploadMultiFile"]["maxFileSize"],字串陣列,各個檔案的最大限制,單位是位元組(byte)。1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設是10240000(10MB)
15761
			$conf["form::uploadMultiFile"]["maxFileSize"]=$conf["maxFileSize"];
15762
 
15763
			}#if end
15764
 
15765
		#如果有設置 $conf["browseButtonClass"]
15766
		if(isset($conf["browseButtonClass"])){
15767
 
15768
			#$conf["form::uploadMultiFile"]["browseButtonClass"],字串陣列,瀏覽檔案的按鈕樣式,預設為"__inputFileCssStyle".
15769
			$conf["form::uploadMultiFile"]["browseButtonClass"]=$conf["browseButtonClass"];
15770
 
15771
			}#if end
15772
 
15773
		#如果有設置 $conf["acceptType"]
15774
		if(isset($conf["acceptType"])){
15775
 
15776
			#$conf["form::uploadMultiFile"]["acceptType"],字串陣列,限定各個檔案的類型為"video/*","audio/*","image/*",預設不限定.
15777
			$conf["form::uploadMultiFile"]["acceptType"]=$conf["acceptType"];
15778
 
15779
			}#if end
15780
 
15781
		#如果有設置 $conf["required"]
15782
		if(isset($conf["required"])){
15783
 
15784
			#$conf["form::uploadMultiFile"]["required"],字串陣列,各個欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
15785
			$conf["form::uploadMultiFile"]["required"]=$conf["required"];
15786
 
15787
			}#if end
15788
 
15789
		#如果有設置 $conf["comment"]
15790
		if(isset($conf["comment"])){
15791
 
15792
			#$conf["form::uploadMultiFile"]["comment"],字串陣列,各個上傳檔案的註解,預設不顯示.
15793
			$conf["form::uploadMultiFile"]["comment"]=$conf["comment"];
15794
 
15795
			}#if end
15796
 
15797
		#$conf["form::uploadMultiFile"]["formStart"],字串,是否為表單的開始,"true"為是,預設為"false".
15798
		$conf["form::uploadMultiFile"]["formStart"]="true";
15799
 
15800
		#如果有設置 $conf["formName"]
15801
		if(isset($conf["formName"])){
15802
 
15803
			#$conf["form::uploadMultiFile"]["formName"],字串,表單的名稱
15804
			$conf["form::uploadMultiFile"]["formName"]=$conf["formName"];
15805
 
15806
			}#if end
15807
 
15808
		#$conf["form::uploadMultiFile"]["formAction"],字串,表單的目標,若有設置$conf["formStart"]為"true",則預設為php檔案自己
15809
		$conf["form::uploadMultiFile"]["formAction"]=$conf["actionPage"];
15810
 
15811
		#如果有設置 $conf["formTarget"]
15812
		if(isset($conf["formTarget"])){
15813
 
15814
			#$conf["form::uploadMultiFile"]["formTarget"],字串,表單要呈現回應的位置,預設為"_self".
15815
			$conf["form::uploadMultiFile"]["formTarget"]=$conf["formTarget"];
15816
 
15817
			}#if end
15818
 
15819
		$uploadMultiFile=form::uploadMultiFile($conf["form::uploadMultiFile"]);
15820
		unset($conf["form::uploadMultiFile"]);
15821
 
15822
		#如果執行 form::uploadMultiFile 失敗
15823
		if($uploadMultiFile["status"]=="false"){
15824
 
15825
			#設置執行失敗
15826
			$result["status"]="false";
15827
 
15828
			#設置執行錯誤
15829
			$result["error"]=$uploadMultiFile;
15830
 
15831
			#回傳結果
15832
			return $result;
15833
 
15834
			}#if end
15835
 
15836
		#串接多個上傳表單的內容
15837
		$result["content"]=$result["content"].$uploadMultiFile["content"];
15838
 
15839
		#建立送出的按鈕
15840
		#函式說明:
15841
		#放置按鈕
15842
		#回傳結果:
15843
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
15844
		#$result["function"],當前執行的函數.
15845
		#$result["error"],錯誤訊息陣列.
15846
		#$result["content"],按鈕語法.
15847
		#必填參數:
15848
		$conf["form::button"]["buttonDisplayValue"]=$conf["submitButtonName"];#爲按鈕上顯示的文字。
15849
		#可省略參數:
15850
		#$conf["buttonStyleName"]="";#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __simpleButtonLinkDefaultButtonCssStyle 。
15851
			#其屬性爲   "width","height","font-size","text-align"
15852
			#其屬性值爲 "100%" ,  "50"  ,    "30"   ,   "center"
15853
		#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。
15854
			#"document.forms.formName.submit()"爲傳送名爲testForm的表單內容
15855
			#"window.print()"爲使用瀏覽器內建工具列印當前網頁
15856
		#$conf["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。
15857
		#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".
15858
		#$conf["tableStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"false"。
15859
		#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。
15860
		#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
15861
		#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",亦即沒有框線的樣式;"__withBorder"則爲有框線的樣式
15862
		#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".
15863
		#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
15864
		#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
15865
		#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
15866
		#$conf["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是,預設爲"false"。
15867
		#$conf["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".
15868
		#$conf["action"]="";#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用
15869
		#$conf["target"]="";#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用
15870
		$conf["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".
15871
		#參考資料:
15872
		#http://stackoverflow.com/questions/3014649/how-to-disable-html-button-using-javascript
15873
		$button=form::button($conf["form::button"]);
15874
		unset($conf["form::button"]);
15875
 
15876
		#如果建立送出按鈕失敗
15877
		if($button["status"]=="false"){
15878
 
15879
			#設置執行失敗
15880
			$result["status"]="false";
15881
 
15882
			#設置執行錯誤
15883
			$result["error"]=$button;
15884
 
15885
			#回傳結果
15886
			return $result;
15887
 
15888
			}#if end
15889
 
15890
		#空一列然後串接送出按鈕
15891
		$result["content"]=$result["content"]."<p>&nbsp;</p>".$button["content"];
15892
 
15893
		#設置執行正常
15894
		$result["status"]="true";
15895
 
15896
		#回傳結果
15897
		return $result;
15898
 
15899
		}#function uploadMultiFileCom end
15900
 
15901
	/*
15902
	#函式說明:
15903
	#將接收到的表單資訊用serialize壓縮成一字串.
15904
	#回傳結果:
15905
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
15906
	#$result["function"],當前執行的函數.
15907
	#$result["error"],錯誤訊息陣列.
15908
	#$result["content"],serialize後的表單資料字串.
15909
	#必填參數:
15910
	#無
15911
	#可省略參數:
15912
	#$conf["type"],接收的表單傳送方式,可以用的有"post","get","any",預設為 "any".
15913
	#$conf["type"]="any";
15914
	#參考資料:
15915
	#serialize=>http://php.net/manual/en/function.serialize.php
15916
	#備註:
15917
	#無.
15918
	*/
15919
	public static function serialize(&$conf=array()){
15920
 
15921
		#初始化要回傳的結果
15922
		$result=array();
15923
 
15924
		#取得當前執行的函數名稱
15925
		$result["function"]=__FUNCTION__;
15926
 
15927
		#如果 $conf 不為陣列
15928
		if(gettype($conf)!="array"){
15929
 
15930
			#設置執行失敗
15931
			$result["status"]="false";
15932
 
15933
			#設置執行錯誤訊息
15934
			$result["error"][]="\$conf變數須為陣列形態";
15935
 
15936
			#如果傳入的參數為 null
15937
			if($conf==null){
15938
 
15939
				#設置執行錯誤訊息
15940
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
15941
 
15942
				}#if end
15943
 
15944
			#回傳結果
15945
			return $result;
15946
 
15947
			}#if end
15948
 
15949
		#檢查可省略參數
15950
		#函式說明:
15951
		#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
15952
		#回傳結果:
15953
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
15954
		#$result["error"],錯誤訊息陣列.
15955
		#$result["function"],當前執行的函式名稱.
15956
		#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。
15957
		#必填參數:
15958
		#$conf["checkedVar"],陣列,要檢查的變數陣列名稱為?
15959
		$conf["heck::checkSkipableVarType"]["checkedVar"]=$conf;
15960
		#$conf["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
15961
		$conf["heck::checkSkipableVarType"]["sikpableVarNameArray"]=array("type");
15962
		#$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).
15963
		$argu=&$conf["heck::checkSkipableVarType"];
15964
		#可省略參數:
15965
		#$conf["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何,null代表不指定變數形態.
15966
		$conf["heck::checkSkipableVarType"]["skipableVarTypeArray"]=array("array");
15967
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的變數要初始化為什麼,null代表不指定.
15968
		$conf["heck::checkSkipableVarType"]["skipableVarDefaultValue"]=array("any");
15969
		$checkSkipableVarType=variableCheck::checkSkipableVarType($conf["heck::checkSkipableVarType"],$argu);
15970
		unset($conf["heck::checkSkipableVarType"]);
15971
		$conf=$argu;
15972
 
15973
		#如果檢查參數失敗
15974
		if($checkSkipableVarType["status"]=="false"){
15975
 
15976
			#設置執行失敗
15977
			$result["status"]="false";
15978
 
15979
			#設置執行錯誤訊息
15980
			$result["error"]=$checkSkipableVarType;
15981
 
15982
			#回傳結果
15983
			return $result;
15984
 
15985
			}#if end
15986
 
15987
		#判斷 $conf["type"]
15988
		switch($conf["type"]){
15989
 
15990
			#如果是 post, POST
15991
			case "post":
15992
			case "POST":
15993
 
15994
				#取得  serialize 後的post表單資料
15995
				$result["content"]=serialize($_POST);
15996
				break;
15997
 
15998
			#如果是 get, GET
15999
			case "get":
16000
			case "GET":
16001
 
16002
				#取得  serialize 後的get表單資料
16003
				$result["content"]=serialize($_GET);
16004
				break;
16005
 
16006
			#如果是 any
16007
			case "any":
16008
 
16009
				#取得  serialize 後的表單資料
16010
				$result["content"]=serialize($_REQUEST);
16011
				break;
16012
			default:
16013
 
16014
				#設置錯誤識別
16015
				$result["status"]="false";
16016
 
16017
				#設置錯誤訊息
16018
				$result["error"]="參數 \"type\" 僅能為 post,get,any 之一";
16019
 
16020
				#回傳結果
16021
				return $result;
16022
 
16023
			}#switch end
16024
 
16025
		#設置執行正常
16026
		$result["status"]="true";
16027
 
16028
		#回傳結果
16029
		return $result;
16030
 
16031
		}#function serialize end
16032
 
16033
	/*
16034
	#函式說明:
16035
	#將接收到的受到serialize壓縮成一字串的表單資訊進行還原
16036
	#回傳結果:
16037
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
16038
	#$result["function"],當前執行的函數.
16039
	#$result["error"],錯誤訊息陣列.
16040
	#$result["content"],serialize後的表單資料字串.
16041
	#必填參數:
16042
	#$conf["serial_FD_str"],透過serialize壓縮過的表單資料
16043
	$conf["serial_FD_str"]="";
16044
	#可省略參數:
16045
	#無
16046
	#參考資料:
16047
	#serialize=>http://php.net/manual/en/function.serialize.php
16048
	#備註:
16049
	#無.
16050
	*/
16051
	public static function unserialize(&$conf){
16052
 
16053
		#初始化要回傳的結果
16054
		$result=array();
16055
 
16056
		#取得當前執行的函數名稱
16057
		$result["function"]=__FUNCTION__;
16058
 
16059
		#如果沒有參數
16060
		if(func_num_args()==0){
16061
 
16062
			#設置執行失敗
16063
			$result["status"]="false";
16064
 
16065
			#設置執行錯誤訊息
16066
			$result["error"]="函數".$result["function"]."需要參數";
16067
 
16068
			#回傳結果
16069
			return $result;
16070
 
16071
			}#if end
16072
 
16073
		#如果 $conf 不為陣列
16074
		if(gettype($conf)!="array"){
16075
 
16076
			#設置執行失敗
16077
			$result["status"]="false";
16078
 
16079
			#設置執行錯誤訊息
16080
			$result["error"][]="\$conf變數須為陣列形態";
16081
 
16082
			#如果傳入的參數為 null
16083
			if($conf==null){
16084
 
16085
				#設置執行錯誤訊息
16086
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
16087
 
16088
				#回傳結果
16089
				return $result;
16090
 
16091
				}#if end
16092
 
16093
			}#if end
16094
 
16095
		#檢查參數
16096
		#函式說明:
16097
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
16098
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
16099
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
16100
		#$result["function"],當前執行的函式名稱.
16101
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
16102
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
16103
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
16104
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
16105
		#必填參數:
16106
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
16107
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
16108
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
16109
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("serial_FD_str");
16110
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
16111
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string");
16112
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
16113
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
16114
		#可省略參數:
16115
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
16116
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="true";
16117
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
16118
		#$conf["skipableVariableName"]=array();
16119
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
16120
		#$conf["skipableVariableType"]=array();
16121
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
16122
		#$conf["skipableVarDefaultValue"]=array("");
16123
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
16124
		unset($conf["variableCheck.checkArguments"]);
16125
 
16126
		#如果檢查失敗
16127
		if($checkResult["status"]=="false"){
16128
 
16129
			#設置執行不正常
16130
			$result["status"]="false";
16131
 
16132
			#程式停止執行
16133
			$result["error"]=$checkResult;
16134
 
16135
			#回傳結果
16136
			return $result;
16137
 
16138
			}#if end
16139
 
16140
		#如果檢查不通過
16141
		if($checkResult["passed"]=="false"){
16142
 
16143
			#設置執行不正常
16144
			$result["status"]="false";
16145
 
16146
			#程式停止執行
16147
			$result["error"]=$checkResult;
16148
 
16149
			#回傳結果
16150
			return $result;
16151
 
16152
			}#if end
16153
 
16154
		#取得解開的表單資料
16155
		$result["content"]=unserialize($conf["serial_FD_str"]);
16156
 
16157
		#設置執行正常
16158
		$result["status"]="true";
16159
 
16160
		#回傳結果
16161
		return $result;
16162
 
16163
		}#function unserialize end
16164
 
16165
	/*
16166
	#函式說明:
16167
	#判斷當前php檔的執行是否為ajax的要求.
16168
	#回傳結果:
16169
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
16170
	#$result["function"],當前執行的函數.
16171
	#$result["content"],是否為ajax要求,"true"代表是,"false"代表不是.
16172
	#$result["argu"],使用的參數.
16173
	#可省略參數:
16174
	#$conf["useGetVarToRecogniseAjaxRequest"],字串,用來識別是否為ajax要求的get變數名稱,若其值為"true"則代表為ajax要求,反之為"false",判斷好後會將該變數移除.
16175
	#$conf["useGetVarToRecogniseAjaxRequest"]="is_ajax";
16176
	#$conf["usePostVarToRecogniseAjaxRequest"],字串,用來識別是否為ajax要求的post變數名稱,若其值為"true"則代表為ajax要求,反之為"false",判斷好後會將該變數移除.
16177
	#$conf["usePostVarToRecogniseAjaxRequest"]="is_ajax";
16178
	#參考資料:
16179
	#無.
16180
	#備註:
16181
	#如果client端沒有傳送ajax要求的識別header,則無法識別是ajax要求.
16182
	*/
16183
	public static function is_ajax(&$conf=array()){
16184
 
16185
		#初始化要回傳的結果
16186
		$result=array();
16187
 
16188
		#取得當前執行的函數名稱
16189
		$result["function"]=__FUNCTION__;
16190
 
16191
		#取得參數
16192
		$result["argu"]=$conf;
16193
 
16194
		#如果 $conf 不為陣列
16195
		if(gettype($conf)!="array"){
16196
 
16197
			#設置執行失敗
16198
			$result["status"]="false";
16199
 
16200
			#設置執行錯誤訊息
16201
			$result["error"][]="\$conf變數須為陣列形態";
16202
 
16203
			#如果傳入的參數為 null
16204
			if($conf==null){
16205
 
16206
				#設置執行錯誤訊息
16207
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
16208
 
16209
				}#if end
16210
 
16211
			#回傳結果
16212
			return $result;
16213
 
16214
			}#if end
16215
 
16216
		#檢查參數
16217
		#函式說明:
16218
		#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
16219
		#回傳結果:
16220
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
16221
		#$result["error"],錯誤訊息陣列.
16222
		#$result["function"],當前執行的函式名稱.
16223
		#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。
16224
		#必填參數:
16225
		#$conf["checkedVar"],陣列,要檢查的變數陣列名稱為?
16226
		$conf["variableCheck::checkSkipableVarType"]["checkedVar"]=$conf;
16227
		#$conf["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
16228
		$conf["variableCheck::checkSkipableVarType"]["sikpableVarNameArray"]=array("useGetVarToRecogniseAjaxRequest","usePostVarToRecogniseAjaxRequest");
16229
		#$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).
16230
		$argu=&$conf;
16231
		#可省略參數:
16232
		#$conf["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何,null代表不指定變數形態.
16233
		$conf["variableCheck::checkSkipableVarType"]["skipableVarTypeArray"]=array("string","string");
16234
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的變數要初始化為什麼,null代表不指定.
16235
		$conf["variableCheck::checkSkipableVarType"]["skipableVarDefaultValue"]=array(null,null);
16236
		$checkSkipableVarType=variableCheck::checkSkipableVarType($conf["variableCheck::checkSkipableVarType"],$argu);
16237
		unset($conf["variableCheck::checkSkipableVarType"]);
16238
 
16239
		#如果檢查失敗
16240
		if($checkSkipableVarType["status"]=="false"){
16241
 
16242
			#設置執行不正常
16243
			$result["status"]="false";
16244
 
16245
			#程式停止執行
16246
			$result["error"]=$checkSkipableVarType;
16247
 
16248
			#回傳結果
16249
			return $result;
16250
 
16251
			}#if end
16252
 
16253
		#如果檢查不通過
16254
		if($checkSkipableVarType["passed"]=="false"){
16255
 
16256
			#設置執行不正常
16257
			$result["status"]="false";
16258
 
16259
			#程式停止執行
16260
			$result["error"]=$checkSkipableVarType;
16261
 
16262
			#回傳結果
16263
			return $result;
16264
 
16265
			}#if end
16266
 
16267
		#如果存在 $conf["useGetVarToRecogniseAjaxRequest"]
16268
		if(isset($conf["useGetVarToRecogniseAjaxRequest"])){
16269
 
16270
			#如果存在 $_GET[$conf["useGetVarToRecogniseAjaxRequest"]]
16271
			if(isset($_GET[$conf["useGetVarToRecogniseAjaxRequest"]])){
16272
 
16273
				#如果 $_GET[$conf["useGetVarToRecogniseAjaxRequest"]] 為 "true"
16274
				if($_GET[$conf["useGetVarToRecogniseAjaxRequest"]]==="true"){
16275
 
16276
					#設置為ajax要求
16277
					$result["content"]="true";
16278
 
16279
					#移除識別 ajax 要求的 post 變數
16280
					unset($_GET[$conf["useGetVarToRecogniseAjaxRequest"]]);
16281
 
16282
					}#if end
16283
 
16284
				}#if end
16285
 
16286
			}#if end
16287
 
16288
		#反之如果存在 $conf["usePostVarToRecogniseAjaxRequest"]
16289
		else if(isset($conf["usePostVarToRecogniseAjaxRequest"])){
16290
 
16291
			#如果存在 $_POST[$conf["usePostVarToRecogniseAjaxRequest"]]
16292
			if(isset($_POST[$conf["usePostVarToRecogniseAjaxRequest"]])){
16293
 
16294
				#如果 $_POST[$conf["usePostVarToRecogniseAjaxRequest"]] 為 "true"
16295
				if($_POST[$conf["usePostVarToRecogniseAjaxRequest"]]==="true"){
16296
 
16297
					#設置為ajax要求
16298
					$result["content"]="true";
16299
 
16300
					#移除識別 ajax 要求的 post 變數
16301
					unset($_POST[$conf["usePostVarToRecogniseAjaxRequest"]]);
16302
 
16303
					}#if end
16304
 
16305
				}#if end
16306
 
16307
			}#if end
16308
 
16309
		#如果存在 $_SERVER['HTTP_X_REQUESTED_WITH']
16310
		else if(isset($_SERVER['HTTP_X_REQUESTED_WITH'])){
16311
 
16312
			#且其 $_SERVER['HTTP_X_REQUESTED_WITH'] 值為 'xmlhttprequest'
16313
			if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH'])==='xmlhttprequest'){
16314
 
16315
				#設置為ajax要求
16316
				$result["content"]="true";
16317
 
16318
				}#if end
16319
 
16320
			}#if end
16321
 
16322
		#如果不存在 $result["content"]
16323
		if(!isset($result["content"])){
16324
 
16325
			#設置不為ajax要求
16326
			$result["content"]="false";
16327
 
16328
			}#if end
16329
 
16330
		#設置執行正常
16331
		$result["status"]="true";
16332
 
16333
		#回傳結果
16334
		return $result;
16335
 
16336
		}#function is_ajax end
16337
 
16338
	/*
16339
	#函式說明:
16340
	#水平拉霸
16341
	#回傳結果:
16342
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
16343
	#$result["function"],當前執行的函數.
16344
	#$result["content"],js語法.
16345
	#$result["argu"],使用的參數.
16346
	#必填參數:
16347
	#$conf["name"],字串,拉霸的名稱,不可重複,會出錯。
16348
	$conf["name"]="a";
16349
	#可省略參數:
16350
	#$conf["selectedColor"],字串,當前數值於bar上的顏色,預設為"orange".
16351
	#$conf["selectedColor"]="orange";
16352
	#$conf["unSelectedColor"],字串,非當前數值於bar上的顏色,預設為#d3d3d3.
16353
	#$conf["unSelectedColor"]="#d3d3d3";
16354
	#參考資料:
16355
	#無.
16356
	#備註:
16357
	#會產生 window.qbpwcf.form.bar 物件.若要印出拉霸則可呼叫函式 window.qbpwcf.form.bar.print() 方法.若要存取變更拉霸的設定可呼叫 window.qbpwcf.form.bar.content 取得dom.
16358
	*/
16359
	public static function bar(&$conf=array()){
16360
 
16361
		#初始化要回傳的結果
16362
		$result=array();
16363
 
16364
		#取得當前執行的函數名稱
16365
		$result["function"]=__FUNCTION__;
16366
 
16367
		#取得參數
16368
		$result["argu"]=$conf;
16369
 
16370
		#如果 $conf 不為陣列
16371
		if(gettype($conf)!="array"){
16372
 
16373
			#設置執行失敗
16374
			$result["status"]="false";
16375
 
16376
			#設置執行錯誤訊息
16377
			$result["error"][]="\$conf變數須為陣列形態";
16378
 
16379
			#如果傳入的參數為 null
16380
			if($conf==null){
16381
 
16382
				#設置執行錯誤訊息
16383
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
16384
 
16385
				}#if end
16386
 
16387
			#回傳結果
16388
			return $result;
16389
 
16390
			}#if end
16391
 
16392
		#檢查參數
16393
		#函式說明:
16394
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
16395
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
16396
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
16397
		#$result["function"],當前執行的函式名稱.
16398
		#$result["argu"],設置給予的參數.
16399
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
16400
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
16401
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
16402
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
16403
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
16404
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
16405
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
16406
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
16407
		#必填寫的參數:
16408
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
16409
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
16410
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
16411
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
16412
		#可以省略的參數:
16413
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
16414
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("name");
16415
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
16416
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
16417
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
16418
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
16419
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
16420
		#$conf["canNotBeEmpty"]=array();
16421
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
16422
		#$conf["canBeEmpty"]=array();
16423
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
16424
		$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("selectedColor","unSelectedColor");
16425
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
16426
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("selectedColor","unSelectedColor");
16427
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
16428
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
16429
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
16430
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("orange","#d3d3d3");
16431
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
16432
		#$conf["disallowAllSkipableVarIsEmpty"]="";
16433
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
16434
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
16435
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
16436
		#$conf["arrayCountEqualCheck"][]=array();
16437
		#參考資料:
16438
		#array_keys=>http://php.net/manual/en/function.array-keys.php
16439
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
16440
		unset($conf["variableCheck::checkArguments"]);
16441
 
16442
		#若檢查參數失敗
16443
		if($checkArguments["status"]==="false"){
16444
 
16445
			#設置執行失敗
16446
			$result["status"]="false";
16447
 
16448
			#設置錯誤訊息
16449
			$result["error"]=$checkArguments;
16450
 
16451
			#回傳結果
16452
			return $result;
16453
 
16454
			}#if end
16455
 
16456
		#若檢查參數不通過
16457
		if($checkArguments["passed"]==="false"){
16458
 
16459
			#設置執行失敗
16460
			$result["status"]="false";
16461
 
16462
			#設置錯誤訊息
16463
			$result["error"]=$checkArguments;
16464
 
16465
			#回傳結果
16466
			return $result;
16467
 
16468
			}#if end
16469
 
16470
		#加入 js
16471
		#函式說明:
16472
		#將要執行的script語法透過該函式執行(會在程式外層用<script></script>包起來).
16473
		#回傳結果:
16474
		#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
16475
		#$result["error"],錯誤訊息陣列
16476
		#$result["function"],當前執行的函數名稱
16477
		#$result["content"],要執行的javaScript語法
16478
		#必填參數:
16479
		#$conf["script"],字串,要執行的javaScript語法.
16480
		$conf["javaScript::toScript"]["script"]=
16481
		"
16482
 
16483
		//確認變數存在 - start
16484
		if(window.qbpwcf===undefined)
16485
		{
16486
			window.qbpwcf={};
16487
		}
16488
 
16489
		if(window.qbpwcf.form===undefined)
16490
		{
16491
			window.qbpwcf.form={};
16492
		}
16493
 
16494
		if(window.qbpwcf.form.bar===undefined)
16495
		{
16496
			window.qbpwcf.form.bar={};
16497
		}
16498
		//確認變數 - end
16499
 
16500
		//建立 root div
16501
		rootDiv=document.createElement('div');
16502
		rootDiv.id='".$conf["name"]."rootDiv';
16503
 
16504
		//建立 onoff div
16505
		onoffDiv=document.createElement('div');
16506
		onoffDiv.id='".$conf["name"]."onoffDiv';
16507
		onoffDiv.style.width='200px';			
16508
 
16509
		//建立 off 的 div tag
16510
		offDiv=document.createElement('div');
16511
		offDiv.id='".$conf["name"]."off';
16512
		offDiv.innerText='off ';
16513
		offDiv.style.display='inline';
16514
		offDiv.style.float='left';
16515
 
16516
		//如果點擊了 off 字樣
16517
		offDiv.addEventListener('click',function(e){
16518
 
16519
			//一百次迴圈
16520
			for(i=0;i<100;i++){
16521
 
16522
				//取得該bar part
16523
				thisBarPart=document.getElementById('".$conf["name"]."bar'+i);
16524
 
16525
				//設置為灰色
16526
				thisBarPart.style.borderColor='".$conf["unSelectedColor"]."';	
16527
 
16528
				}//for end
16529
 
16530
			//取得 bar 數值
16531
			barVal=document.getElementById('".$conf["name"]."barVal');
16532
 
16533
			//設置為 '0%'
16534
			barVal.innerText='0%';
16535
 
16536
			//設置實際數值為 '0'
16537
			barVal.dataset.val='0';
16538
 
16539
			});
16540
 
16541
		//放入off的文字
16542
		onoffDiv.appendChild(offDiv);
16543
 
16544
		//建立 on 的 div tag
16545
		onDiv=document.createElement('div');
16546
		onDiv.id='".$conf["name"]."on';
16547
		onDiv.innerText=' on';
16548
		onDiv.style.display='inline';
16549
		onDiv.style.float='right';
16550
 
16551
		//如果點擊了 on 字樣
16552
		onDiv.addEventListener('click',function(e){
16553
 
16554
			//一百次迴圈
16555
			for(i=0;i<100;i++){
16556
 
16557
				//取得該bar part
16558
				thisBarPart=document.getElementById('".$conf["name"]."bar'+i);
16559
 
16560
				//設置為灰色
16561
				thisBarPart.style.borderColor='".$conf["unSelectedColor"]."';	
16562
 
16563
				}//for end
16564
 
16565
			//取得 bar 數值
16566
			barVal=document.getElementById('".$conf["name"]."barVal');
16567
 
16568
			//設置為 '0%'
16569
			barVal.innerText='on';
16570
 
16571
			//設置實際數值為 '0'
16572
			barVal.dataset.value='?';
16573
 
16574
			});
16575
 
16576
		//放入on的文字
16577
		onoffDiv.appendChild(onDiv);
16578
 
16579
		//建立 on 的 div tag
16580
		div=document.createElement('div');
16581
 
16582
		//放入空div
16583
		rootDiv.appendChild(div);
16584
 
16585
		//放入 on off div
16586
		rootDiv.appendChild(onoffDiv);
16587
 
16588
		//100次迴圈
16589
		for(i=0;i<100;i++){
16590
 
16591
			//建立拉霸
16592
			line=document.createElement('div');
16593
 
16594
			//設置拉霸樣式
16595
			line.id='".$conf["name"]."bar'+i;
16596
			line.dataset.val=i+1;
16597
			line.style.borderStyle='solid';
16598
			line.style.borderColor='".$conf["unSelectedColor"]."';
16599
			line.style.borderWidth='1px';
16600
			line.style.borderRadius='1px';		
16601
			line.style.display='inline';
16602
 
16603
			//放入拉霸part
16604
			rootDiv.appendChild(line);
16605
 
16606
			//點擊事件
16607
			line.addEventListener('click',function(e){
16608
 
16609
				//一百次迴圈
16610
				for(j=0;j<100;j++){
16611
 
16612
					//取得該bar part
16613
					thisBarPart=document.getElementById('".$conf["name"]."bar'+j);
16614
 
16615
					//設置為灰色
16616
					thisBarPart.style.borderColor='".$conf["unSelectedColor"]."';	
16617
 
16618
					}//for end
16619
 
16620
				//選取的點設置為橘色
16621
				e.target.style.borderColor='".$conf["selectedColor"]."';	
16622
 
16623
				//設置當前顯示的%數
16624
				document.getElementById('".$conf["name"]."barVal').innerText=(e.target.dataset.val)+'%';
16625
 
16626
				//設置當前顯示的%數值,不含單位
16627
				document.getElementById('".$conf["name"]."barVal').dataset.val=e.target.dataset.val;
16628
 
16629
				});//addEventListener end
16630
 
16631
			}//for end
16632
 
16633
		//建立 div tag,預設為 '?%'
16634
		valDiv=document.createElement('div');
16635
		valDiv.id='".$conf["name"]."barVal';
16636
		valDiv.innerText='?%';
16637
		valDiv.dataset.val='?';
16638
		valDiv.style.display='inline';
16639
 
16640
		//放入數值顯示
16641
		rootDiv.appendChild(valDiv);
16642
 
16643
		//取得 拉霸的名稱
16644
		window.qbpwcf.form.bar.name='".$conf["name"]."';
16645
 
16646
		//取得 拉霸的語法
16647
		window.qbpwcf.form.bar.content=rootDiv;
16648
 
16649
		//設置印出 拉霸的語法
16650
		window.qbpwcf.form.bar.print=function(){
16651
 
16652
			//放置root div
16653
			document.body.appendChild(window.qbpwcf.form.bar.content);
16654
 
16655
			}//function end
16656
 
16657
		";
16658
		#可省略參數:
16659
		#$conf["onReady"],字串,是否要在網頁完全載入後再執行,"false"為不等載入完就先執行,預設為"true"要等載入完再執行.
16660
		#$conf["onReady"]="true";
16661
		#$conf["globalJs"],字串陣列,為要放入<script>標籤的js全域變數.
16662
		#$conf["globalJs"]=array();
16663
		#$conf["jsFunciton"],字串陣列,為要放入<script>標籤的js函數.
16664
		#$conf["jsFunciton"]=array();
16665
		#參考資料:
16666
		#http://stackoverflow.com/questions/9899372/pure-javascript-equivalent-to-jquerys-ready-how-to-call-a-function-when-the
16667
		$toScript=javaScript::toScript($conf["javaScript::toScript"]);		
16668
		$result["scriptWithoutTag"]=$conf["javaScript::toScript"]["script"];		
16669
		unset($conf["javaScript::toScript"]);
16670
 
16671
		#加入 js 失敗
16672
		if($toScript["status"]==="false"){
16673
 
16674
			#設置執行失敗
16675
			$result["status"]="false";
16676
 
16677
			#設置錯誤訊息
16678
			$result["error"]=$toScript;
16679
 
16680
			#回傳結果
16681
			return $result;
16682
 
16683
			}#if end
16684
 
16685
		#取得js語法
16686
		$result["content"]=$toScript["content"];
16687
 
16688
		#設置執行正常
16689
		$result["status"]="true";
16690
 
16691
		#回傳結果
16692
		return $result;
16693
 
16694
		}#function bar end
16695
 
16696
	}#class form end
16697
 
16698
?>