Subversion Repositories php-qbpwcf

Rev

Rev 323 | 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.
239 liveuser 6
    Copyright (C) 2014~2026 MIN ZHI, CHEN
3 liveuser 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"){
226 liveuser 1380
 
3 liveuser 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
 
226 liveuser 1413
							}#if end
1414
 
3 liveuser 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();
323 liveuser 1678
	#$conf["clearHtml"],字串,預設為"true"代表要清除與轉換不安全的字,避免造成html xss;反之為"false".
1679
	#$conf["clearHtml"]="true";
3 liveuser 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";
323 liveuser 1764
		$conf["variableCheck.checkArguments"]["skipableVariableName"][]="clearHtml";
3 liveuser 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";
323 liveuser 1775
		$conf["variableCheck.checkArguments"]["skipableVariableType"][]="string";
3 liveuser 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;
323 liveuser 1786
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"][]="true";
3 liveuser 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
 
323 liveuser 2435
		#如果要 clearHtml
2436
		if($conf["clearHtml"]==="true"){
2437
 
2438
			#如果有收到的表單資訊
2439
			if(isset($result["inputDataContent"])){
2440
 
2441
				#針對每個變數
2442
				foreach($result["inputDataContent"] as $index=>$value){
2443
 
2444
					#函式說明:
2445
					#處理字串避免網頁出錯,會以utf8字元來呈現特殊字元.
2446
					#回傳結果:
2447
					#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2448
					#$result["function"],當前執行的函數.
2449
					#$result["content"],爲處理好的字串.
2450
					#$result["html_translation_table"],轉換表.
2451
					#$result["error"],錯誤訊息陣列.
2452
					#$result["argu"],使用的參數.
2453
					#必填參數:
2454
					#$conf["stringIn"],字串,爲要處理的字串
2455
					$conf["stringProcess::cleanHtml"]["stringIn"]=$value;
2456
					#可省略參數:
2457
					#無.
2458
					#參考資料:
2459
					#無.
2460
					#備註:
2461
					#無.
2462
					$cleanHtml=stringProcess::cleanHtml($conf["stringProcess::cleanHtml"]);
2463
					unset($conf["stringProcess::cleanHtml"]);
2464
 
2465
					#如果執行異常
2466
					if($cleanHtml["status"]=="false"){
2467
 
2468
						#設置執行失敗
2469
						$result["status"]="false";
2470
 
2471
						#設置執行錯誤
2472
						$result["error"]=$cleanHtml;
2473
 
2474
						#回傳結果
2475
						return $result;
2476
 
2477
						}#if end
2478
 
2479
					#置換成處理好的結果
2480
					$result["inputDataContent"][$index]=$cleanHtml["content"];
2481
 
2482
					}#foreach end
2483
 
2484
				}#if end
2485
 
2486
			}#if end
2487
 
3 liveuser 2488
		#設置執行成功
2489
		$result["status"]="true";
2490
 
2491
		#回傳結果
2492
		return $result;
2493
 
323 liveuser 2494
		}#function responseMultiInputDataSecurityEnhance end
3 liveuser 2495
 
2496
	/*
2497
	#函式說明:
2498
	#能夠接收數個指定的變數名稱
2499
	#回傳的結果:
2500
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2501
	#$result["function"],當前執行的函數
2502
	#$result["error"],函式錯誤訊息,若爲""則表示沒有錯誤
2503
	#$result["warning"],警告訊息陣列
2504
	#$result["getedValue"][$elementKey],取得的變數內容,請將「$elementKey」替換成要取得的表單傳送名稱,例如:$result["getedValue"]["account"],如果該變數不存在則其值會等於null.
2505
	#必填參數:
2506
	$conf["receivedVarArray"]=array();#要接收的參數陣列
2507
	#可省略參數:
2508
	#$conf["correctStr"],是否要過濾字串,預設為"true"要過濾,"false"為不要過濾.
2509
	#$conf["correctStr"]="true";
2510
	#參考資料:
2511
	#無.
2512
	#備註:
2513
	#無.
2514
	*/
2515
	public static function receiveCustomMultiData(&$conf){
2516
 
2517
		#初始化要回傳的內容
2518
		$result=array();
2519
 
2520
		#設置當前執行的函數
2521
		$result["function"]=__FUNCTION__;
2522
 
2523
		#如果 $conf 不為陣列
2524
		if(gettype($conf)!="array"){
2525
 
2526
			#設置執行失敗
2527
			$result["status"]="false";
2528
 
2529
			#設置執行錯誤訊息
2530
			$result["error"][]="\$conf變數須為陣列形態";
2531
 
2532
			#如果傳入的參數為 null
2533
			if($conf==null){
2534
 
2535
				#設置執行錯誤訊息
2536
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2537
 
2538
				}#if end
2539
 
2540
			#回傳結果
2541
			return $result;
2542
 
2543
			}#if end
2544
 
2545
		#檢查參數
2546
		#函式說明:
2547
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2548
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2549
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2550
		#$result["function"],當前執行的函式名稱.
2551
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2552
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2553
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2554
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
2555
		#必填參數:
2556
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2557
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
2558
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2559
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("receivedVarArray");
2560
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
2561
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("array");
2562
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2563
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
2564
		#可省略參數:
2565
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
2566
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
2567
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2568
		$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("method","correctStr");
2569
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
2570
		$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string");
2571
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
2572
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array("post","true");
2573
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
2574
		unset($conf["variableCheck.checkArguments"]);
2575
 
2576
		#如果檢查失敗
2577
		if($checkResult["status"]=="false"){
2578
 
2579
			#設置執行不正常
2580
			$result["status"]="false";
2581
 
2582
			#程式停止執行
2583
			$result["error"]=$checkResult;
2584
 
2585
			#回傳結果
2586
			return $result;
2587
 
2588
			}#if end
2589
 
2590
		#如果檢查不通過
2591
		if($checkResult["passed"]=="false"){
2592
 
2593
			#設置執行不正常
2594
			$result["status"]="false";
2595
 
2596
			#程式停止執行
2597
			$result["error"]=$checkResult;
2598
 
2599
			#回傳結果
2600
			return $result;
2601
 
2602
			}#if end
2603
 
2604
		#根據接收的模式來判斷
2605
		switch($conf["method"]){
2606
 
2607
			#如果爲 post/POST
2608
			case "post" || "POST" :
2609
 
2610
				#有幾個變數要接收,就判斷幾次
2611
				for($i=0;$i<count($conf["receivedVarArray"]);$i++){
2612
 
2613
					#將每個post變數視爲$elementKey指到$elementValue
2614
					foreach($_POST as $elementKey => $elementValue){
2615
 
2616
						#如果 $elementKey 等於任何一個 $conf["receivedVarArray"] 裏陣列元素的key
2617
						#函式說明:
2618
						#檢查一個數值是否與陣列裏面的元素相同,如果有相同的則會傳其變數內容。
2619
						#回傳結果:
2620
						#$result["status"],"true"表示執行正確,"false"表示執行錯誤.
2621
						#$result["founded"],"true"表示有找到相同的,"false"表示沒有找到相同的.
2622
						#$result["error"],錯誤訊息
2623
						#$result["function"],當前執行的函數名稱
2624
						#$result["equalVarName"],相等的變數名稱或key.
2625
						#$result["equalVarValue"],相等的變數數值內容.
2626
						#必填參數:
2627
						$conf["search"]["getEqualVar"]["conditionElement"]=$conf["receivedVarArray"][$i];#條件元素,要等於的元素內容。
2628
						$conf["search"]["getEqualVar"]["compareElements"]=array($elementKey);#要比對的陣列變數內容。
2629
						$getEqualVarResult=search::getEqualVar($conf["search"]["getEqualVar"]);
2630
						unset($conf["search"]["getEqualVar"]);
2631
 
2632
						#如果 search::getEqualVar 執行失敗
2633
						if($getEqualVarResult["status"]=="false"){
2634
 
2635
							#設置執行不正常
2636
							$result["status"]="false";
2637
 
2638
							#程式停止執行
2639
							$result["error"]=$getEqualVarResult;
2640
 
2641
							#回傳結果
2642
							return $result;
2643
 
2644
							}#if end
2645
 
2646
						#如果找到對應的變數名稱
2647
						if($getEqualVarResult["founded"]=="true"){
2648
 
2649
							#設定爲要回傳的變數之一
2650
							#$result["getedValue"][$elementKey]=$getEqualVarResult["equalVarName"];
2651
							$result["getedValue"][$elementKey]=$elementValue;
2652
 
2653
							}#if end
2654
 
2655
						}#foreach end
2656
 
2657
					#如果該變數沒有接收到
2658
					if(!isset($result["getedValue"][$conf["receivedVarArray"][$i]])){
2659
 
2660
						#設為 null
2661
						$result["getedValue"][$conf["receivedVarArray"][$i]]=null;
2662
 
2663
						}#if end
2664
 
2665
					}#for end
2666
 
2667
				#挑出 case
2668
				break;
2669
 
2670
			#如果爲 get/GET
2671
			case "get" || "GET" :
2672
 
2673
				#有幾個變數要接收,就判斷幾次
2674
				for($i=0;$i<count($conf["receivedVarArray"]);$i++){
2675
 
2676
					#將每個post變數視爲$elementKey指到$elementValue
2677
					foreach($_GET as $elementKey => $elementValue){
2678
 
2679
						#如果 $elementKey 等於任何一個 $conf["receivedVarArray"] 裏陣列元素的key
2680
						#函式說明:
2681
						#檢查一個數值是否與陣列裏面的元素相同,如果有相同的則會傳其變數內容。
2682
						#$result["status"],"true"表示執行正確,"false"表示執行錯誤.
2683
						#$result["founded"],"true"表示有找到相同的,"false"表示沒有找到相同的.
2684
						#$result["error"],錯誤訊息
2685
						#$result["function"],當前執行的函數名稱
2686
						#$result["equalVarName"],相等的變數名稱或key.
2687
						#$result["equalVarValue"],相等的變數數值內容.
2688
						#必填參數:
2689
						$conf["search"]["getEqualVar"]["conditionElement"]=$conf["receivedVarArray"][$i];#條件元素,要等於的元素內容。
2690
						$conf["search"]["getEqualVar"]["compareElements"]=array($elementKey);#要比對的陣列變數內容。
2691
						$getEqualVarResult=search::getEqualVar($conf["search"]["getEqualVar"]);
2692
						unset($conf["search"]["getEqualVar"]);
2693
 
2694
						#如果 search::getEqualVar 執行失敗
2695
						if($getEqualVarResult["status"]=="false"){
2696
 
2697
							#設置執行不正常
2698
							$result["status"]="false";
2699
 
2700
							#程式停止執行
2701
							$result["error"]=$getEqualVarResult;
2702
 
2703
							#回傳結果
2704
							return $result;
2705
 
2706
							}#if end
2707
 
2708
						#如果找到對應的變數名稱
2709
						if($getEqualVarResult["founded"]=="true"){
2710
 
2711
							#設定爲要回傳的變數之一
2712
							$result["getedValue"][$elementKey]=$elementValue;
2713
 
2714
							}#if end
2715
 
2716
						}#foreach end
2717
 
2718
					#如果該變數沒有接收到
2719
					if(!isset($result["getedValue"][$conf["receivedVarArray"][$i]])){
2720
 
2721
						#設為 null
2722
						$result["getedValue"][$conf["receivedVarArray"][$i]]=null;
2723
 
2724
						}#if end
2725
 
2726
					}#for end
2727
 
2728
				#挑出 case
2729
				break;
2730
 
2731
			#如果不爲以上內容
2732
			default :
2733
 
2734
				#設置執行失敗
2735
				$result["status"]="false";
2736
 
2737
				#設置執行錯誤
2738
				$result["error"][]="不適用的method參數";
2739
 
2740
				#回傳false,表示函式使用有誤
2741
				return $result;
2742
 
2743
			}#switch end
2744
 
2745
		#設置執行正常
2746
		$result["status"]="true";
2747
 
2748
		#回傳結果
2749
		return $result;
2750
 
2751
		}#function receiveCustomMultiData end
2752
 
2753
	/*
2754
	#函式說明:
2755
	#放置按鈕
2756
	#回傳結果:
2757
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2758
	#$result["function"],當前執行的函數.
2759
	#$result["error"],錯誤訊息陣列.
2760
	#$result["content"],按鈕語法.
2761
	#必填參數:
2762
	$conf["buttonDisplayValue"]="";#爲按鈕上顯示的文字。
2763
	#可省略參數:
2764
	#$conf["buttonStyleName"]="";#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __qbpwcf_button 。
2765
	#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式或程式,預設不設定。
2766
		#"document.forms.formName.submit()"爲傳送名爲testForm的表單內容
2767
		#"window.print()"爲使用瀏覽器內建工具列印當前網頁
2768
		#若搭配 javaScript 類別的 confirmWindow 函數的回傳結果,則會有確認視窗的效果.
2769
	#$conf["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。
2770
	#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".
2771
	#$conf["tableStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"false"。
2772
	#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。
2773
	#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
2774
	#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",亦即沒有框線的樣式;"__withBorder"則爲有框線的樣式
2775
	#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".
2776
	#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
2777
	#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
2778
	#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
2779
	#$conf["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是,預設爲"false"。
2780
	#$conf["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".
2781
	#$conf["action"]="";#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用
2782
	#$conf["target"]="";#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用
2783
	#$conf["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".
2784
	#$conf["formId"],字串,表單的id.
2785
	#$conf["formId"]="";
2786
	#$conf["buttonId"],字串,按鈕的id.
2787
	#$conf["buttonId"]="";
2788
	#參考資料:
2789
	#http://stackoverflow.com/questions/3014649/how-to-disable-html-button-using-javascript
2790
	#備註:
2791
	#無.
2792
	*/
2793
	public static function button(&$conf){
2794
 
2795
		#初始化要回傳的內容
2796
		$result=array();
2797
 
2798
		#設置當前執行的函數
2799
		$result["function"]=__FUNCTION__;
2800
 
2801
		#初始化content樣式內容
2802
		$result["content"]="";
2803
 
2804
		#如果 $conf 不為陣列
2805
		if(gettype($conf)!="array"){
2806
 
2807
			#設置執行失敗
2808
			$result["status"]="false";
2809
 
2810
			#設置執行錯誤訊息
2811
			$result["error"][]="\$conf變數須為陣列形態";
2812
 
2813
			#如果傳入的參數為 null
2814
			if($conf==null){
2815
 
2816
				#設置執行錯誤訊息
2817
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2818
 
2819
				}#if end
2820
 
2821
			#回傳結果
2822
			return $result;
2823
 
2824
			}#if end
2825
 
2826
		#檢查參數
2827
		#函式說明:
2828
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2829
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2830
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2831
		#$result["function"],當前執行的函式名稱.
2832
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2833
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2834
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2835
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
2836
		#必填參數:
2837
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2838
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
2839
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2840
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("buttonDisplayValue");
2841
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
2842
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string");
2843
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2844
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
2845
		#可省略參數:
2846
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
2847
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
2848
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2849
		$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("buttonStyleName","buttonActionScriptFunction","buttonBorder","disabled","tableStart","tableClass","trStart","trClass","tdStart","tdClass","tdEnd","trEnd","tableEnd","formStart","action","target","formEnd","formId","buttonId");
2850
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
2851
		$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string");
2852
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
2853
		$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);
2854
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
2855
		unset($conf["variableCheck.checkArguments"]);
2856
 
2857
		#如果檢查失敗
2858
		if($checkResult["status"]=="false"){
2859
 
2860
			#設置執行不正常
2861
			$result["status"]="false";
2862
 
2863
			#程式停止執行
2864
			$result["error"]=$checkResult;
2865
 
2866
			#回傳結果
2867
			return $result;
2868
 
2869
			}#if end
2870
 
2871
		#如果檢查不通過
2872
		if($checkResult["passed"]=="false"){
2873
 
2874
			#設置執行不正常
2875
			$result["status"]="false";
2876
 
2877
			#程式停止執行
2878
			$result["error"]=$checkResult;
2879
 
2880
			#回傳結果
2881
			return $result;
2882
 
2883
			}#if end
2884
 
2885
		#如果要表格開始
2886
		if($conf["tableStart"]=="true"){
2887
 
2888
			#函式說明:
2889
			#表格開始,可以設定表格的厚度和位置
2890
			#回傳結果:
2891
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2892
			#$result["content"],表格開始的語法
2893
			#$result["function"],當前執行的函數
2894
			#$result["error"],函式錯誤訊息
2895
			#必填寫的參數:
2896
			$conf["table::start"]["class"]=$conf["tableClass"];#爲表格的css樣式,若為"",則代表不套用css樣式;若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
2897
			$tableStart=table::start($conf["table::start"]);
2898
			unset($conf["table::start"]);
2899
 
2900
			#如果表開始立失敗
2901
			if($tableStart["status"]=="false"){
2902
 
2903
				#設置執行失敗
2904
				$result["status"]="false";
2905
 
2906
				#設置執行錯誤訊息
2907
				$result["error"]=$tableStart;
2908
 
2909
				#回傳結果
2910
				return $result;
2911
 
2912
				}#if end
2913
 
2914
			#串接表格開始的語法
2915
			$result["content"]=$result["content"].$tableStart["content"];
2916
 
2917
			}#if end
2918
 
2919
		#如果其值爲 true
2920
		if($conf["trStart"]=="true"){
2921
 
2922
			#套用列開始指定的css樣式
2923
			#函式說明:
2924
			#列開始
2925
			#回傳結果:
2926
			#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
2927
			#$result["error"],函式錯誤訊息陣列.
2928
			#$result["content"],列開始的語法.
2929
			#$result["function"],當前執行的函式名稱.
2930
			#必填寫的參數:
2931
			$conf["table"]["trStart"]["class"]=$conf["trClass"];#爲tr的css樣式,若為""則為不套用css樣式;若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
2932
			$trStart=table::trStart($conf["table"]["trStart"]);
2933
			unset($conf["table"]);
2934
 
2935
			#如果列開始失敗
2936
			if($trStart["status"]=="false"){
2937
 
2938
				#設置執行失敗
2939
				$result["status"]="false";
2940
 
2941
				#設置執行錯誤訊息
2942
				$result["error"]=$trStart;
2943
 
2944
				#回傳結果
2945
				return $result;
2946
 
2947
				}#if end
2948
 
2949
			#串接列開始
2950
			$result["content"]=$result["content"].$trStart["content"];
2951
 
2952
			}#if end
2953
 
2954
		#如果$conf["tdStart"]其值爲 "true"
2955
		if($conf["tdStart"]=="true"){
2956
 
2957
			#列開始且套用css樣式.
2958
			#函式說明:
2959
			#行開始
2960
			#回傳結果:
2961
			#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
2962
			#$result["error"],函式錯誤訊息陣列.
2963
			#$result["content"],行開始的語法.
2964
			#$result["function"],當前執行的函式名稱.
2965
			#必填寫的參數:
2966
			$conf["table"]["tdStart"]["class"]=$conf["tdClass"];#該 td 要套用套用的 css 樣式
2967
				#預設的樣式
2968
				#"border-width","border","border-color","border-style","margin-right","margin-left"
2969
				#"100%","1px","#0000FF","solid","auto","auto"
2970
			$tdStart=table::tdStart($conf["table"]["tdStart"]);
2971
			unset($conf["table"]);
2972
 
2973
			#若行開始失敗
2974
			if($tdStart["status"]=="false"){
2975
 
2976
				#設置執行失敗
2977
				$result["status"]="false";
2978
 
2979
				#設置執行錯誤訊息
2980
				$result["error"]=$tdStart;
2981
 
2982
				#回傳結果
2983
				return $result;
2984
 
2985
				}#if end
2986
 
2987
			#串接行開始的語法
2988
			$result["content"]=$result["content"].$tdStart["content"];
2989
 
2990
			}#if end
2991
 
2992
		#如果 $conf["formStart"] 等於 "true"
2993
		if($conf["formStart"]=="true"){
2994
 
2995
			#如果 $conf["action"] 有設定
2996
			if(isset($conf["action"])){
2997
 
2998
				#表單開始
2999
				#函式說明:
3000
				#表單開始
3001
				#回傳結果:
3002
				#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
3003
				#$result["error"],錯誤訊息陣列.
3004
				#$resutl["function"],當前執行的函式名稱.
3005
				#$result["content"],表單開始的語法.
3006
				$conf["form"]["start"]["action"]=$conf["action"];#爲要交給那個檔案處理該表單傳送的內容
3007
				#可省略參數:
3008
				#$conf["name"]="";#爲該表單的名稱
3009
				#$conf["method"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
3010
				$conf["form"]["start"]["target"]=$conf["target"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
3011
				#$conf["form"]["start"]["tableStart"]=$conf["tableStart"];#爲該表單是否要以<table>開始。"true"爲是;
3012
				#$conf["form"]["start"]["tableClass"]=$conf["tableClass"];#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
3013
 
3014
				#如果有設定 $conf["formId"]
3015
				if(isset($conf["formId"])){
3016
 
3017
					#設置表單的名稱與id
3018
					$conf["form"]["start"]["name"]=$conf["formId"];#爲該表單的名稱,id也跟$conf["name"]一樣.
3019
 
3020
					}#if end
3021
 
3022
				$formStart=form::start($conf["form"]["start"]);
3023
				unset($conf["form"]);
3024
 
3025
				#如果表單開始失敗
3026
				if($formStart["status"]=="false"){
3027
 
3028
					#設置執行失敗
3029
					$result["status"]="false";
3030
 
3031
					#設置執行錯誤訊息
3032
					$result["error"]=$formStart;
3033
 
3034
					#回傳結果
3035
					return $result;
3036
 
3037
					}#if end
3038
 
3039
				#串接表單開始的語法
3040
				$result["content"]=$result["content"].$formStart["content"];
3041
 
3042
				}#if end
3043
 
3044
			#反之不存在
3045
			else{
3046
 
3047
				#設置執行失敗
3048
				$result["status"]="false";
3049
 
3050
				#設置錯誤訊息
3051
				$result["status"]="\$conf[\"action\"]參數沒有設置!";
3052
 
3053
				#回傳結果
3054
				return $result;
3055
 
3056
				}#else end
3057
 
3058
			}#if end
3059
 
3060
		#套用按鈕的css樣式
3061
		$conf["buttonStyleName"]=" class = '".$conf["buttonStyleName"]."' ";
3062
 
3063
		#如果$conf["buttonActionScriptFunction"]不存在
3064
		if(!isset($conf["buttonActionScriptFunction"])){
3065
 
3066
			#則預設給與""
3067
			$conf["buttonActionScriptFunction"]="";
3068
 
3069
			}#if end
3070
 
3071
		#反之$conf["buttonActionScriptFunction"]存在
3072
		else{
3073
 
3074
			#則套用設定的javaScript
3075
			$conf["buttonActionScriptFunction"]=" onClick=\"".$conf["buttonActionScriptFunction"]."\"";
3076
 
3077
			}#else end
3078
 
3079
		#如果 $conf["disabled"] 為"true"
3080
		if($conf["disabled"]=="true"){
3081
 
3082
			#設置取消按鈕功能的屬性
3083
			$conf["disabled"]=" disabled=\"disabled\" ";
3084
 
3085
			}#if end
3086
 
3087
		#反之 $conf["disabled"] 不為"true"
3088
		else{
3089
 
3090
			#預設功能要正常
3091
			$conf["disabled"]="";
3092
 
3093
			}#else end
3094
 
3095
		#如果有設置 $conf["buttonId"]
3096
		if(isset($conf["buttonId"])){
3097
 
3098
			#設置按鈕id的語法
3099
			$conf["buttonId"]=" id=\"".$conf["buttonId"]."\"";
3100
 
3101
			}#if end
3102
 
3103
		#反之
3104
		else{
3105
 
3106
			#設為空字串
3107
			$conf["buttonId"]="";
3108
 
3109
			}#else end
3110
 
3111
		#放置按鈕
3112
		$result["content"]=$result["content"]."<input type = submit ".$conf["disabled"]." value = \"".$conf["buttonDisplayValue"]."\" ".$conf["buttonStyleName"]." ".$conf["buttonActionScriptFunction"]." border = ".$conf["buttonBorder"]." ".$conf["buttonId"]." >";
3113
 
3114
		#如果其值爲 true
3115
		if($conf["tdEnd"]=="true"){
3116
 
3117
			#加上 </td>
3118
			$result["content"]=$result["content"]."</td>";
3119
 
3120
			}#if end
3121
 
3122
		#如果其值爲 true
3123
		if($conf["trEnd"]=="true"){
3124
 
3125
			#加上 </tr>
3126
			$result["content"]=$result["content"]."</tr>";
3127
 
3128
			}#if end
3129
 
3130
		#如果 $conf["formEnd"] 等於 true
3131
		if($conf["formEnd"]=="true"){
3132
 
3133
			#說明:
3134
			#表單結束
3135
			#回傳結果:
3136
			#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
3137
			#$result["error"],錯誤訊息陣列.
3138
			#$resutl["function"],當前執行的函式名稱.
3139
			#$result["content"],表單結束的語法.
3140
			#必填寫的參數:
3141
			$conf_end["tableEnd"]=$conf["tableEnd"];#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。
3142
			$formEnd=form::end($conf_end);
3143
			unset($conf_end);
3144
 
3145
			#如果表單結束失敗
3146
			if($formEnd["status"]=="false"){
3147
 
3148
				#設置執行失敗
3149
				$result["status"]="false";
3150
 
3151
				#設置執行錯誤訊息
3152
				$result["error"]=$formEnd;
3153
 
3154
				#回傳結果
3155
				return $result;
3156
 
3157
				}#if end
3158
 
3159
			#串聯表單結束的語法
3160
			$result["content"]=$result["content"].$formEnd["content"];
3161
 
3162
			}#if end
3163
 
3164
		#如果有表格結束
3165
		if($conf["tableEnd"]=="true"){
3166
 
3167
			#函式說明:
3168
			#表格結束
3169
			#回傳結果:
3170
			#表格結束的語法
3171
			$result["content"]=$result["content"].table::end();
3172
 
3173
			}#if end
3174
 
3175
		#執行到這邊代表執行正常
3176
		$result["status"]="true";
3177
 
3178
		#回傳結果
3179
		return $result;
3180
 
3181
		}#function button end
3182
 
3183
	/*
3184
	#函式說明:
3185
	#以圖片代替的表單送出扭
3186
	#回傳結果:
3187
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3188
	#$result["function"],當前執行的函數.
3189
	#$result["error"],錯誤訊息陣列.
3190
	#$result["content"],按鈕語法.
3191
	#必填參數:
3192
	$conf["img"]="";#爲要作爲按鈕的圖片位置。
3193
	#可省略參數:
3194
	#$conf["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".
3195
	#$conf["formAction"]="";#字串,表單要傳送到哪邊
3196
	#$conf["legend"]="";#字串,圖片按鈕的註解.
3197
	#$conf["formMethod"]="";#字串,表單傳送的方式,預設為"post",也可以使用"get".
3198
	#$conf["formTarget"]="";#字串,表單的回應要呈現在哪邊,預設為"_self"(當前頁面、頁框),"_top"為整個頁面,"_parent"為父頁面,"_blank"為開新頁面,也可以為iframe的名稱.
3199
	#$conf["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".
3200
	#$conf["width"]="";#爲按鈕圖片的寬度,若省略,則按照原始圖片的寬度。
3201
	#$conf["height"]="";#爲按鈕圖片的高度,若省略,則按照原始圖片的高度。
3202
	#$conf["class"]="";#爲按鈕圖片要套用的css樣式名稱,若省略,則不套用任何css樣式。
3203
	#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
3204
	#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
3205
	#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
3206
	#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
3207
	#$conf["formId"],字串,表單的id.
3208
	#$conf["formId"]="";
3209
	#$conf["buttonId"],字串,按鈕的id.
3210
	#$conf["buttonId"]="";
3211
	#參考資料:
3212
	#無.
3213
	#備註:
3214
	#使用圖片作為傳送按時,會傳送點擊圖片的x軸與y軸數數值.
3215
	*/
3216
	public static function buttonImg(&$conf){
3217
 
3218
		#初始化要回傳的內容
3219
		$result=array();
3220
 
3221
		#設置當前執行的函數
3222
		$result["function"]=__FUNCTION__;
3223
 
3224
		#初始化content樣式內容
3225
		$result["content"]="";
3226
 
3227
		#如果 $conf 不為陣列
3228
		if(gettype($conf)!="array"){
3229
 
3230
			#設置執行失敗
3231
			$result["status"]="false";
3232
 
3233
			#設置執行錯誤訊息
3234
			$result["error"][]="\$conf變數須為陣列形態";
3235
 
3236
			#如果傳入的參數為 null
3237
			if($conf==null){
3238
 
3239
				#設置執行錯誤訊息
3240
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3241
 
3242
				}#if end
3243
 
3244
			#回傳結果
3245
			return $result;
3246
 
3247
			}#if end
3248
 
3249
		#檢查參數
3250
		#函式說明:
3251
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3252
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3253
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3254
		#$result["function"],當前執行的函式名稱.
3255
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3256
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3257
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3258
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
3259
		#必填參數:
3260
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3261
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
3262
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3263
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("img");
3264
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3265
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string");
3266
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3267
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
3268
		#可省略參數:
3269
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
3270
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
3271
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3272
		$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("formStart","formAction","legend","formMethod","formTarget","formEnd","width","height","class","trStart","tdStart","tdEnd","trEnd","formId","buttonId");
3273
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3274
		$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string","string","string","string","string","string","string","string","string");
3275
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
3276
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array("false",null,null,"post","_self","false",null,null,null,"false","false","false","false",null,null);
3277
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
3278
		unset($conf["variableCheck.checkArguments"]);
3279
 
3280
		#如果檢查失敗
3281
		if($checkResult["status"]=="false"){
3282
 
3283
			#設置執行不正常
3284
			$result["status"]="false";
3285
 
3286
			#程式停止執行
3287
			$result["error"]=$checkResult;
3288
 
3289
			#回傳結果
3290
			return $result;
3291
 
3292
			}#if end
3293
 
3294
		#如果檢查不通過
3295
		if($checkResult["passed"]=="false"){
3296
 
3297
			#設置執行不正常
3298
			$result["status"]="false";
3299
 
3300
			#程式停止執行
3301
			$result["error"]=$checkResult;
3302
 
3303
			#回傳結果
3304
			return $result;
3305
 
3306
			}#if end
3307
 
3308
		#如果其值爲 true
3309
		if($conf["trStart"]=="true"){
3310
 
3311
			$result["content"]=$result["content"]."<tr>";
3312
 
3313
			}#if end
3314
 
3315
		#如果其值爲 true
3316
		if($conf["tdStart"]=="true"){
3317
 
3318
			$result["content"]=$result["content"]."<td>";
3319
 
3320
			}#if end
3321
 
3322
		#如果 $conf["formStart"] 為 "true" 且 $conf["formAction"] 有設置
3323
		if($conf["formStart"]=="true" && isset($conf["formAction"])){
3324
 
3325
			#函式說明:
3326
			#表單開始
3327
			#回傳結果:
3328
			#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
3329
			#$result["error"],錯誤訊息陣列.
3330
			#$resutl["function"],當前執行的函式名稱.
3331
			#$result["content"],表單開始的語法.
3332
			#必填參數:
3333
			$conf["form::start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容
3334
			#可省略參數:
3335
 
3336
			#如果有設定 $conf["legend"]
3337
			if(isset($conf["legend"])){
3338
 
3339
				$conf["form::start"]["legend"]=$conf["legend"];#顯示表單的標題
3340
 
3341
				}#if end
3342
 
3343
			#如果有設置 $conf["formId"]
3344
			if(isset($conf["formId"])){
3345
 
3346
				#設置表單的名稱與id
3347
				$conf["form::start"]["name"]=$conf["formId"];#爲該表單的名稱
3348
 
3349
				}#if end
3350
 
3351
			$conf["form::start"]["method"]=$conf["formMethod"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
3352
			$conf["form::start"]["target"]=$conf["formTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
3353
			#$conf["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是,"false"為否,預設為"false".
3354
			#$conf["tableClass"]="";#表格要套用的css樣式,預設爲"__withoutBorder"無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
3355
			#$conf["showFieldsetBorder"]="false";#是否要顯示表單區域的框線,預設為"false"不顯示,"true"代表要顯示.
3356
			#參考資料:
3357
			#http://www.w3schools.com/html/html_forms.asp
3358
			#http://www.w3schools.com/tags/tag_fieldset.asp
3359
			$formStart=form::start($conf["form::start"]);
3360
			unset($conf["form::start"]);
3361
 
3362
			#如果表單開始失敗
3363
			if($formStart["status"]=="false"){
3364
 
3365
				#設置執行不正常
3366
				$result["status"]="false";
3367
 
3368
				#程式停止執行
3369
				$result["error"]=$formStart;
3370
 
3371
				#回傳結果
3372
				return $result;
3373
 
3374
				}#if end
3375
 
3376
			#串接表單開始
3377
			$result["content"]=$result["content"].$formStart["content"];
3378
 
3379
			}#if end
3380
 
3381
		#如果$conf["class"]沒有設定
3382
		if(!isset($conf["class"])){
3383
 
3384
			#則$conf["class"]就爲空的
3385
			$conf["class"] = "";
3386
 
3387
			}#if end
3388
 
3389
		#如果$conf["class"]有設定
3390
		else{
3391
 
3392
			#則套用css樣式
3393
			$conf["class"] = "class=".$conf["class"];
3394
 
3395
			}#else end
3396
 
3397
		#如果$conf["width"]沒設定
3398
		if(!isset($conf["width"])){
3399
 
3400
			#則$conf["width"]設爲""
3401
			$conf["width"]="";
3402
 
3403
			}#if end
3404
 
3405
		#如果$conf["width"]有設定
3406
		else{
3407
 
3408
			#就按照設定值
3409
			$conf["width"]=" width=".$conf["width"];
3410
 
3411
			}#else end
3412
 
3413
		#如果$conf["height"]沒設定
3414
		if(!isset($conf["height"])){
3415
 
3416
			#則$conf["height"]設爲""
3417
			$conf["height"]="";
3418
 
3419
			}#if end
3420
 
3421
		#$conf["height"]有設定
3422
		else{
3423
 
3424
			#就按照設定值
3425
			$conf["height"]=" height=".$conf["height"];
3426
 
3427
			}#else end
3428
 
3429
		#如果 $conf["buttonId"] 存在
3430
		if(isset($conf["buttonId"])){
3431
 
3432
			#設置按鈕的id
3433
			$conf["buttonId"]=" id=\"".$conf["buttonId"]."\"";
3434
 
3435
			}#if end
3436
 
3437
		#反之
3438
		else{
3439
 
3440
			#設為 ""
3441
			$conf["buttonId"]="";
3442
 
3443
			}#else end
3444
 
3445
		#放置圖片按鈕的樣式
3446
		$result["content"]=$result["content"]."<input type=image src=".$conf["img"]." alt=Submit ".$conf["width"]." ".$conf["height"]." ".$conf["class"]." border = 0 ".$conf["buttonId"]." >";
3447
 
3448
		#如果 $conf["formEnd"] 為 "true"
3449
		if($conf["formEnd"]=="true"){
3450
 
3451
			#函式說明:
3452
			#表單結束
3453
			#回傳結果:
3454
			#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
3455
			#$result["error"],錯誤訊息陣列.
3456
			#$resutl["function"],當前執行的函式名稱.
3457
			#$result["content"],表單結束的語法.
3458
			#必填參數:
3459
			$conf["form::end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。
3460
			$formEnd=form::end($conf["form::end"]);
3461
			unset($conf["form::end"]);
3462
 
3463
			#如果 表單結束 失敗
3464
			if($formEnd["status"]=="false"){
3465
 
3466
				#設置執行不正常
3467
				$result["status"]="false";
3468
 
3469
				#程式停止執行
3470
				$result["error"]=$formEnd;
3471
 
3472
				#回傳結果
3473
				return $result;
3474
 
3475
				}#if end
3476
 
3477
			#串接表單結束
3478
			$result["content"]=$result["content"].$formEnd["content"];
3479
 
3480
			}#if end
3481
 
3482
		#如果其值爲 true
3483
		if($conf["tdEnd"]=="true"){
3484
 
3485
			$result["content"]=$result["content"]."</td>";
3486
 
3487
			}#if end
3488
 
3489
		#如果其值爲 true
3490
		if($conf["trEnd"]=="true"){
3491
 
3492
			$result["content"]=$result["content"]."</tr>";
3493
 
3494
			}#if end
3495
 
3496
		#執行到這邊代表執行正常
3497
		$result["status"]="true";
3498
 
3499
		#回傳結果
3500
		return $result;
3501
 
3502
		}#function buttonImg end
3503
 
3504
	/*
3505
	#函式說明:
3506
	#將表單填寫的狀態還原至預設值的按鈕.
3507
	#回傳的內容:
3508
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3509
	#$result["function"],當前執行的函數.
3510
	#$result["error"],錯誤訊息陣列.
3511
	#$result["content"],按鈕語法.
3512
	#必填參數:
3513
	#$conf["value"],字串,爲清空表單內容的按鈕顯示名稱
3514
	$conf["value"]="reset";
3515
	#可省略參數:
3516
	#$conf["class"],字串,爲要套用的css樣式名稱,預設為__qbpwcf_button."
3517
	#$conf["class"]="";
3518
	#$conf["trStart"],字串,爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設為"false".
3519
	#$conf["trStart"]="true";
3520
	#$conf["tdStart"],字串,爲是否要以<td>開頭,"true"表示"是",可以看成列裏面的元素開始,預設為"false".
3521
	#$conf["tdStart"]="true";
3522
	#$conf["tdEnd"],字串,爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設為"false".
3523
	#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設為"false".
3524
	#$conf["buttonId"],字串,按鈕的id.
3525
	#$conf["buttonId"]="";
3526
	#參考資料:
3527
	#無.
3528
	#備註:
3529
	#無.
3530
	*/
3531
	public static function buttonReset(&$conf){
3532
 
3533
		#初始化要回傳的內容
3534
		$result=array();
3535
 
3536
		#設置當前執行的函數
3537
		$result["function"]=__FUNCTION__;
3538
 
3539
		#初始化content樣式內容
3540
		$result["content"]="";
3541
 
3542
		#如果 $conf 不為陣列
3543
		if(gettype($conf)!="array"){
3544
 
3545
			#設置執行失敗
3546
			$result["status"]="false";
3547
 
3548
			#設置執行錯誤訊息
3549
			$result["error"][]="\$conf變數須為陣列形態";
3550
 
3551
			#如果傳入的參數為 null
3552
			if($conf==null){
3553
 
3554
				#設置執行錯誤訊息
3555
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3556
 
3557
				}#if end
3558
 
3559
			#回傳結果
3560
			return $result;
3561
 
3562
			}#if end
3563
 
3564
		#檢查參數
3565
		#函式說明:
3566
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3567
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3568
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3569
		#$result["function"],當前執行的函式名稱.
3570
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3571
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3572
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3573
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
3574
		#必填參數:
3575
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3576
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
3577
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3578
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("value");
3579
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3580
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string");
3581
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3582
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
3583
		#可省略參數:
3584
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
3585
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
3586
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3587
		$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("class","trStart","tdStart","tdEnd","trEnd","buttonId");
3588
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3589
		$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string");
3590
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
3591
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array("__qbpwcf_button","false","false","false","false",null);
3592
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
3593
		unset($conf["variableCheck.checkArguments"]);
3594
 
3595
		#如果檢查失敗
3596
		if($checkResult["status"]=="false"){
3597
 
3598
			#設置執行不正常
3599
			$result["status"]="false";
3600
 
3601
			#程式停止執行
3602
			$result["error"]=$checkResult;
3603
 
3604
			#回傳結果
3605
			return $result;
3606
 
3607
			}#if end
3608
 
3609
		#如果檢查不通過
3610
		if($checkResult["passed"]=="false"){
3611
 
3612
			#設置執行不正常
3613
			$result["status"]="false";
3614
 
3615
			#程式停止執行
3616
			$result["error"]=$checkResult;
3617
 
3618
			#回傳結果
3619
			return $result;
3620
 
3621
			}#if end
3622
 
3623
		#如果其值爲 true
3624
		if($conf["trStart"]=="true"){
3625
 
3626
			#串接 "<tr>"
3627
			$result["content"]=$result["content"]."<tr>";
3628
 
3629
			}#if end
3630
 
3631
		#如果其值爲 true
3632
		if($conf["tdStart"]=="true"){
3633
 
3634
			#串接 "<td>"
3635
			$result["content"]=$result["content"]."<td>";
3636
 
3637
			}#if end
3638
 
3639
		#如果不使用樣式
3640
		if(!isset($conf["class"])){
3641
 
3642
			#則$class就爲空的
3643
			$conf["class"] = "";
3644
 
3645
			}#if end
3646
 
3647
		#如果有使用class樣式
3648
		else{
3649
 
3650
			#則套用樣式
3651
			$conf["class"] = " class=".$conf["class"];
3652
 
3653
			}#else end
3654
 
3655
		#套用設定值
3656
		$conf["value"]=" value =".$conf["value"];
3657
 
3658
		#如果 $conf["buttonId"] 有設置
3659
		if(isset($conf["buttonId"])){
3660
 
3661
			#設置按鈕id
3662
			$conf["buttonId"]=" id=\"".$conf["buttonId"]."\"";
3663
 
3664
			}#if end
3665
 
3666
		#反之
3667
		else{
3668
 
3669
			#設為 ""
3670
			$conf["buttonId"]="";
3671
 
3672
			}#else end
3673
 
3674
		#放置表單內容清空的按鈕
3675
		$result["content"]=$result["content"]."<input type = reset ".$conf["value"]." ".$conf["class"]." border = 0 ".$conf["buttonId"]." >";
3676
 
3677
		#如果其值爲 true
3678
		if($conf["tdEnd"]=="true"){
3679
 
3680
			#串接 "</td>"
3681
			$result["content"]=$result["content"]."</td>";
3682
 
3683
			}#if end
3684
 
3685
		#如果其值爲 true
3686
		if($conf["trEnd"]=="true"){
3687
 
3688
			#串接 "</tr>"
3689
			$result["content"]=$result["content"]."</tr>";
3690
 
3691
			}#if end
3692
 
3693
		#設置執行正常
3694
		$result["status"]="true";
3695
 
3696
		#回傳語法
3697
		return $result;
3698
 
3699
		}#function buttonReset end
3700
 
3701
	/*
3702
	#函式說明:
3703
	#一個簡單的按鈕,按了可以到指定的頁面,同時也可以傳送多個隱藏的變數
3704
	#回傳的結果
3705
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3706
	#$result["error"],錯誤訊息陣列
3707
	#$result["function"],當前執行的函數名稱.
3708
	#$result["content"],語法內容
3709
	#必填參數:
3710
	#$conf["buttonDisplayValue"],字串,按鈕上要顯示的文字
3711
	$conf["buttonDisplayValue"]="";
3712
	#可省略參數:
3713
	#$conf["buttonStyleName"],字串,按鈕的css樣式應該爲何,若省略的話預設會採用 __qbpwcf_button 的樣式
3714
	#$conf["buttonStyleName"]="";
3715
	#$conf["hiddenVarName"],陣列,要傳送的隱藏變數名稱,與 $conf["hiddenVarContent"] 相對應。
3716
	#$conf["hiddenVarName"]=array();
3717
	#$conf["hiddenVarContent"],陣列,要傳誦的隱藏變數內容,與 $conf["hiddenVarName"] 相對應。
3718
	#$conf["hiddenVarContent"]=array();
3719
	#$conf["disabled"],字串,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".
3720
	#$conf["disabled"]="true";
3721
	#$conf["formStart"],字串,爲是否要表單開始,如果爲"true"則代表要表單開始,預設爲"false".
3722
	#$conf["formStart"]="true";
3723
	#$conf["method"],字串,爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
3724
	#$conf["method"]="";
3725
	#$conf["formName"],字串,該表單的名稱
3726
	#$conf["formName"]="";
3727
	#$conf["buttonId"],字串,按鈕的id
3728
	#$conf["buttonId"]="";
3729
	#$conf["actionPage"],字串,按鈕按了之後要到哪個地方?若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面。
3730
	#$conf["actionPage"]="";
3731
	#$conf["buttonActionScriptFunction"],字串,爲按下按鈕時所要執行的javaScript函式,預設不設定,可以是"document.forms.formName.submit()"(傳送名爲testForm的表單內容).
3732
	#$conf["buttonActionScriptFunction"]="";
3733
	#$conf["formEnd"],字串,爲是否要表單結束,如果爲"true"則代表要表單結束,預設爲"false"
3734
	#$conf["formEnd"]="true";
3735
	#$conf["tableStart"],字串,爲是否要表格開始,"true"表示"是",預設為"false".
3736
	#$conf["tableStart"]="true";
3737
	#$conf["tableClass"],字串,爲表格要採用的css樣式名稱,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder".
3738
	#$conf["tableClass"]="__withoutBorder";
3739
	#$conf["trStart"],字串,爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
3740
	#$conf["trStart"]="true"
3741
	#$conf["trClass"],字串,列開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder"
3742
	#$conf["trClass"]="__withoutBorder";
3743
	#$conf["tdStart"],字串,爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false"
3744
	#$conf["tdStart"]="true";
3745
	#$conf["tdClass"],字串,行開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder"
3746
	#$conf["tdClass"]="__withoutBorder";
3747
	#$conf["tdEnd"],字串,爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
3748
	#$conf["tdEnd"]="true";
3749
	#$conf["trEnd"],字串,爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
3750
	#$conf["trEnd"]="true";
3751
	#$conf["displayTarget"],字串,頁面的呈現方法,可以是開新視窗(_blank)、在目前頁面、頁框裏面(_self)、在父頁面(_parent)、最上層頁面(_top),預設為"_top"。
3752
	#$conf["displayTarget"]="";
3753
	#$conf["tableEnd"],字串,爲是否要表格結束,"true"表示"是",預設為"false".
3754
	#$conf["tableEnd"]="true";
3755
	#參考資料:
3756
	#無.
3757
	#備註:
3758
	#無.
3759
	*/
3760
	public static function sendHugeDataButton(&$conf){
3761
 
3762
		#初始化要回傳的內容
3763
		$result=array();
3764
 
3765
		#設置當前執行的函數
3766
		$result["function"]=__FUNCTION__;
3767
 
3768
		#初始化content樣式內容
3769
		$result["content"]="";
3770
 
3771
		#如果 $conf 不為陣列
3772
		if(gettype($conf)!="array"){
3773
 
3774
			#設置執行失敗
3775
			$result["status"]="false";
3776
 
3777
			#設置執行錯誤訊息
3778
			$result["error"][]="\$conf變數須為陣列形態";
3779
 
3780
			#如果傳入的參數為 null
3781
			if($conf==null){
3782
 
3783
				#設置執行錯誤訊息
3784
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3785
 
3786
				}#if end
3787
 
3788
			#回傳結果
3789
			return $result;
3790
 
3791
			}#if end
3792
 
3793
		#檢查參數
3794
		#函式說明:
3795
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3796
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3797
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3798
		#$result["function"],當前執行的函式名稱.
3799
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3800
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3801
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3802
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
3803
		#必填參數:
3804
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3805
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
3806
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3807
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("buttonDisplayValue");
3808
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3809
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string");
3810
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3811
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
3812
		#可省略參數:
3813
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
3814
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
3815
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3816
		$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");
3817
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3818
		$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");
3819
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
3820
		$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);
3821
		#$conf["variableCheck.checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3822
		$conf["variableCheck.checkArguments"]["arrayCountEqualCheck"][]=array("hiddenVarName","hiddenVarContent");
3823
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
3824
		unset($conf["variableCheck.checkArguments"]);
3825
 
3826
		#如果檢查失敗
3827
		if($checkResult["status"]=="false"){
3828
 
3829
			#設置執行不正常
3830
			$result["status"]="false";
3831
 
3832
			#程式停止執行
3833
			$result["error"]=$checkResult;
3834
 
3835
			#回傳結果
3836
			return $result;
3837
 
3838
			}#if end
3839
 
3840
		#如果檢查不通過
3841
		if($checkResult["passed"]=="false"){
3842
 
3843
			#設置執行不正常
3844
			$result["status"]="false";
3845
 
3846
			#程式停止執行
3847
			$result["error"]=$checkResult;
3848
 
3849
			#回傳結果
3850
			return $result;
3851
 
3852
			}#if end
3853
 
3854
		#如果要表格開始
3855
		if($conf["tableStart"]=="true"){
3856
 
3857
			#函式說明:
3858
			#表格開始,可以設定表格的厚度和位置
3859
			#回傳結果:
3860
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3861
			#$result["content"],表格開始的語法
3862
			#$result["function"],當前執行的函數
3863
			#$result["error"],函式錯誤訊息
3864
			#必填寫的參數:
3865
			$conf["table::start"]["class"]=$conf["tableClass"];#爲表格的css樣式,若為"",則代表不套用css樣式;若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
3866
			$tableStart=table::start($conf["table::start"]);
3867
			unset($conf["table::start"]);
3868
 
3869
			#如果表開始立失敗
3870
			if($tableStart["status"]=="false"){
3871
 
3872
				#設置執行失敗
3873
				$result["status"]="false";
3874
 
3875
				#設置執行錯誤訊息
3876
				$result["error"]=$tableStart;
3877
 
3878
				#回傳結果
3879
				return $result;
3880
 
3881
				}#if end
3882
 
3883
			#串接表格開始的語法
3884
			$result["content"]=$result["content"].$tableStart["content"];
3885
 
3886
			}#if end
3887
 
3888
		#如果 $conf["formStart"] 等於 "true"
3889
		if($conf["formStart"]=="true"){
3890
 
3891
			#如果 $conf["actionPage"] 有設定
3892
			if(isset($conf["actionPage"])){
3893
 
3894
				#表單開始
3895
				#函式說明:
3896
				#表單開始
3897
				#回傳結果:
3898
				#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
3899
				#$result["error"],錯誤訊息陣列.
3900
				#$resutl["function"],當前執行的函式名稱.
3901
				#$result["content"],表單開始的語法.
3902
				$conf["form"]["start"]["action"]=$conf["actionPage"];#爲要交給那個檔案處理該表單傳送的內容
3903
				#可省略參數:
3904
 
3905
				#如果有設定 $conf["formName"]
3906
				if(isset($conf["formName"])){
3907
 
3908
					$conf["form"]["start"]["name"]=$conf["formName"];#爲該表單的名稱
3909
 
3910
					}#if end
3911
 
3912
				$conf["form"]["start"]["method"]=$conf["method"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
3913
				$conf["form"]["start"]["target"]=$conf["displayTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
3914
				#$conf["form"]["start"]["tableStart"]=$conf["tableStart"];#爲該表單是否要以<table>開始。"true"爲是;
3915
				#$conf["form"]["start"]["tableClass"]=$conf["tableClass"];#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
3916
				$formStart=form::start($conf["form"]["start"]);
3917
				unset($conf["form"]);
3918
 
3919
				#如果表單開始失敗
3920
				if($formStart["status"]=="false"){
3921
 
3922
					#設置執行失敗
3923
					$result["status"]="false";
3924
 
3925
					#設置執行錯誤訊息
3926
					$result["error"]=$formStart;
3927
 
3928
					#回傳結果
3929
					return $result;
3930
 
3931
					}#if end
3932
 
3933
				#串接表單開始的語法
3934
				$result["content"]=$result["content"].$formStart["content"];
3935
 
3936
				}#if end
3937
 
3938
			#反之不存在
3939
			else{
3940
 
3941
				#設置執行失敗
3942
				$result["status"]="false";
3943
 
3944
				#設置錯誤訊息
3945
				$result["status"]="\$conf[\"action\"]參數沒有設置!";
3946
 
3947
				#回傳結果
3948
				return $result;
3949
 
3950
				}#else end
3951
 
3952
			}#if end
3953
 
3954
		#如果其值爲 true
3955
		if($conf["trStart"]=="true"){
3956
 
3957
			#套用列開始指定的css樣式
3958
			#函式說明:
3959
			#列開始
3960
			#回傳結果:
3961
			#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
3962
			#$result["error"],函式錯誤訊息陣列.
3963
			#$result["content"],列開始的語法.
3964
			#$result["function"],當前執行的函式名稱.
3965
			#必填寫的參數:
3966
			$conf["table"]["trStart"]["class"]=$conf["trClass"];#爲tr的css樣式,若為""則為不套用css樣式;若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
3967
			$trStart=table::trStart($conf["table"]["trStart"]);
3968
			unset($conf["table"]);
3969
 
3970
			#如果列開始失敗
3971
			if($trStart["status"]=="false"){
3972
 
3973
				#設置執行失敗
3974
				$result["status"]="false";
3975
 
3976
				#設置執行錯誤訊息
3977
				$result["error"]=$trStart;
3978
 
3979
				#回傳結果
3980
				return $result;
3981
 
3982
				}#if end
3983
 
3984
			#串接列開始
3985
			$result["content"]=$result["content"].$trStart["content"];
3986
 
3987
			}#if end
3988
 
3989
		#如果$conf["tdStart"]其值爲 "true"
3990
		if($conf["tdStart"]=="true"){
3991
 
3992
			#列開始且套用css樣式.
3993
			#函式說明:
3994
			#行開始
3995
			#回傳結果:
3996
			#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
3997
			#$result["error"],函式錯誤訊息陣列.
3998
			#$result["content"],行開始的語法.
3999
			#$result["function"],當前執行的函式名稱.
4000
			#必填寫的參數:
4001
			$conf["table"]["tdStart"]["class"]=$conf["tdClass"];#該 td 要套用套用的 css 樣式
4002
				#預設的樣式
4003
				#"border-width","border","border-color","border-style","margin-right","margin-left"
4004
				#"100%","1px","#0000FF","solid","auto","auto"
4005
			$tdStart=table::tdStart($conf["table"]["tdStart"]);
4006
			unset($conf["table"]);
4007
 
4008
			#若行開始失敗
4009
			if($tdStart["status"]=="false"){
4010
 
4011
				#設置執行失敗
4012
				$result["status"]="false";
4013
 
4014
				#設置執行錯誤訊息
4015
				$result["error"]=$tdStart;
4016
 
4017
				#回傳結果
4018
				return $result;
4019
 
4020
				}#if end
4021
 
4022
			#串接行開始的語法
4023
			$result["content"]=$result["content"].$tdStart["content"];
4024
 
4025
			}#if end
4026
 
4027
		#如果 $conf["hiddenVarName"] 存在
4028
		if(isset($conf["hiddenVarName"])){
4029
 
4030
			#傳送多個隱藏表單的資訊
4031
			#回傳的數值:
4032
			#如果回傳值等於1,則代表參數設定錯誤。
4033
			#$result["sendedArrayName"],
4034
			#$result["sendedArrayValue"],
4035
			#$result["sendedArrayCount"],
4036
			#必填參數:
4037
			$conf_inputMutiHidden["nameArray"]=$conf["hiddenVarName"];#欲傳送的隱藏陣列變數名稱
4038
			$conf_inputMutiHidden["valueArray"]=$conf["hiddenVarContent"];#欲傳送的隱藏陣列變數數值
4039
			$hiddenVar=form::inputMultiHidden($conf_inputMutiHidden);
4040
			unset($conf_inputMutiHidden);
4041
 
4042
			#如果隱藏的表單變數設置失敗
4043
			if($hiddenVar["status"]=="false"){
4044
 
4045
				#設置執行不正常
4046
				$result["status"]="false";
4047
 
4048
				#設置執行錯誤的訊息
4049
				$result["error"]=$hiddenVar;
4050
 
4051
				#回傳結果
4052
				return $result;
4053
 
4054
				}#if end
4055
 
4056
			#接上語法
4057
			$result["content"]=$result["content"].$hiddenVar["content"];
4058
 
4059
			}#if end
4060
 
4061
		#一般按鈕
4062
		#函式說明:
4063
		#放置按鈕
4064
		#回傳結果:
4065
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4066
		#$result["function"],當前執行的函數.
4067
		#$result["error"],錯誤訊息陣列.
4068
		#$result["content"],按鈕語法.
4069
		#必填參數:
4070
		$conf["form::button"]["buttonDisplayValue"]=$conf["buttonDisplayValue"];#爲按鈕上顯示的文字。
4071
		#可省略參數:
4072
		$conf["form::button"]["buttonStyleName"]=$conf["buttonStyleName"];#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __simpleButtonLinkDefaultButtonCssStyle 。
4073
			#其屬性爲   "width","height","font-size","text-align"
4074
			#其屬性值爲 "100%" ,  "50"  ,    "30"   ,   "center"
4075
 
4076
		#如果有設定 $conf["buttonActionScriptFunction"]
4077
		if(isset($conf["buttonActionScriptFunction"])){
4078
 
4079
			$conf["form::button"]["buttonActionScriptFunction"]=$conf["buttonActionScriptFunction"];#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。
4080
			#"document.forms.formName.submit()"爲傳送名爲testForm的表單內容
4081
			#"window.print()"爲使用瀏覽器內建工具列印當前網頁
4082
 
4083
			}#if end
4084
 
4085
		#$conf["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。
4086
		$conf["form::button"]["disabled"]=$conf["disabled"];#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".
4087
		#$conf["tableStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"false"。
4088
		#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。
4089
		#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
4090
		#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",亦即沒有框線的樣式;"__withBorder"則爲有框線的樣式
4091
		#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".
4092
		#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
4093
		#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
4094
		#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
4095
		#$conf["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是,預設爲"false"。
4096
		#$conf["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".
4097
		#$conf["action"]="";#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用
4098
		#$conf["target"]="";#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用
4099
		#$conf["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".
4100
		#$conf["buttonId"],字串,按鈕的id.
4101
 
4102
		#如果 $conf["buttonId"] 有設置
4103
		if(isset($conf["buttonId"])){
4104
 
4105
			#設置按鈕id
4106
			$conf["form::button"]["buttonId"]=$conf["buttonId"];
4107
 
4108
			}#if end
4109
 
4110
		#參考資料:
4111
		#http://stackoverflow.com/questions/3014649/how-to-disable-html-button-using-javascript
4112
		$button=form::button($conf["form::button"]);
4113
		unset($conf["form::button"]);
4114
 
4115
		#如果建立按鈕失敗
4116
		if($button["status"]=="false"){
4117
 
4118
			#設置執行不正常
4119
			$result["status"]="false";
4120
 
4121
			#設置執行錯誤的訊息
4122
			$result["error"]=$button;
4123
 
4124
			#回傳結果
4125
			return $result;
4126
 
4127
			}#if end
4128
 
4129
		#接上按鈕語法
4130
		$result["content"]=$result["content"].$button["content"];
4131
 
4132
		#如果其值爲 true
4133
		if($conf["tdEnd"]=="true"){
4134
 
4135
			#加上 </td>
4136
			$result["content"]=$result["content"]."</td>";
4137
 
4138
			}#if end
4139
 
4140
		#如果其值爲 true
4141
		if($conf["trEnd"]=="true"){
4142
 
4143
			#加上 </tr>
4144
			$result["content"]=$result["content"]."</tr>";
4145
 
4146
			}#if end
4147
 
4148
		#如果 $conf["formEnd"] 等於 true
4149
		if($conf["formEnd"]=="true"){
4150
 
4151
			#說明:
4152
			#表單結束
4153
			#回傳結果:
4154
			#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
4155
			#$result["error"],錯誤訊息陣列.
4156
			#$resutl["function"],當前執行的函式名稱.
4157
			#$result["content"],表單結束的語法.
4158
			#必填寫的參數:
4159
			$conf_end["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。
4160
			$formEnd=form::end($conf_end);
4161
			unset($conf_end);
4162
 
4163
			#如果表單結束失敗
4164
			if($formEnd["status"]=="false"){
4165
 
4166
				#設置執行失敗
4167
				$result["status"]="false";
4168
 
4169
				#設置執行錯誤訊息
4170
				$result["error"]=$formEnd;
4171
 
4172
				#回傳結果
4173
				return $result;
4174
 
4175
				}#if end
4176
 
4177
			#串聯表單結束的語法
4178
			$result["content"]=$result["content"].$formEnd["content"];
4179
 
4180
			}#if end
4181
 
4182
		#如果有表格結束
4183
		if($conf["tableEnd"]=="true"){
4184
 
4185
			#函式說明:
4186
			#表格結束
4187
			#回傳結果:
4188
			#表格結束的語法
4189
			$result["content"]=$result["content"].table::end();
4190
 
4191
			}#if end
4192
 
4193
		#設置執行正常
4194
		$result["status"]="true";
4195
 
4196
		#回傳結果
4197
		return $result;
4198
 
4199
		}#function sendHugeDataButton end
4200
 
4201
	/*
4202
	#函式說明:
4203
	#可以輸入文字的表單
4204
	#回傳結果:
4205
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4206
	#$result["function"],當前執行的函數.
4207
	#$result["error"],錯誤訊息陣列.
4208
	#$result["content"],按鈕語法.
4209
	#必填參數:
4210
	#$conf["name"],字串,爲該文字輸入框的名稱,用於讓接收頁面讀取的名稱。
4211
	$conf["name"]="";
4212
	#$conf["readOnly"],字串,爲該文字框是否可以填寫資料,若要只能觀看不能填寫,那麼就必須將其值設爲"true",反之要設爲"false".
4213
	$conf["readOnly"]="false";
4214
	#可省略參數:
4215
	#$conf["width"],字串,爲文字框的外觀長度,預設為"100%".
4216
	#$conf["width"]="";
4217
	#$conf["maxInputLength"],字串,爲可輸入的最大位元長度,預設不限制.
4218
	#$conf["maxInputLength"]="";
4219
	#$conf["autoFocus"],字串,是否為將填寫的指標移到該表單,"true"代表要,預設為"false".
4220
	#$conf["autoFocus"]="";
4221
	#$conf["value"],字串,爲該文字框預設要顯示的文字,預設爲"".
4222
	#$conf["value"]="";
4223
	#$conf["class"],字串,爲要套用的css樣式,若省略,則會套用預設的 "__qbpwcf_inputTextCssStyle" 樣式,其屬性爲 "width:100%","font-size:30px"
4224
	#$conf["class"]="";
4225
	#$conf["classList"],字串陣列,為要使用的多個css class樣式,若有使用,則會取代"class"參數的設定.
4226
	#$conf["classList"]=array();
4227
	#$conf["jsActivitor"],字串,爲觸發js的條件,可以是"onChange"(已改變內容時)、"onClick"(按下按鈕時)、"onkeyup"(當鍵盤按下放開後)、"onmouseover"(當滑鼠移過去的時候)...,須搭配$conf["jsSubmitActionTarget"]參數。
4228
	#$conf["jsActivitor"]="";
4229
	#$conf["jsAction"],字串,爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
4230
	#$conf["jsAction"]="";
4231
	#$conf["trStart"],字串,爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
4232
	#$conf["trStart"]="";
4233
	#$conf["tdStart"],字串,爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".
4234
	#$conf["tdStart"]="";
4235
	#$conf["formStart"],字串,爲是否要以<form>開頭,"true"表示"是",也可以看成表單的開始,預設為"false".
4236
	#$conf["formStart"]="";
4237
	#$conf["formAction"],字串,表單遞交的目的地,若$conf["formStart"]為"true",則該參數不能省略.
4238
	#$conf["formAction"]="";
4239
	#$conf["formName"],字串,爲該表單的名稱
4240
	#$conf["formName"]="";
4241
	#$conf["formMethod"],字串,爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
4242
	#$conf["formMethod"]="";
4243
	#$conf["formTarget"],字串,為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
4244
	#$conf["formTarget"]="";
4245
	#$conf["tableStart"],字串,爲該表單是否要以<table>開始。"true"爲是,預設為"false".
4246
	#$conf["tableStart"]="";
4247
	#$conf["tableClass"],字串,表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式,預設為"__withoutBorder".
4248
	#$conf["tableClass"]="";
4249
	#$conf["formEnd"],字串,爲是否要以<form>結尾,"true"表示"是",也可以看成表單的結束,預設為"false".
4250
	#$conf["formEnd"]="true";
4251
	#$conf["tdEnd"],字串,爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
4252
	#$conf["tdEnd"]="true";
4253
	#$conf["trEnd"],字串,爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
4254
	#$conf["trEnd"]="true";
4255
	#$conf["tableEnd"],字串,爲該表單是否要以</table>結尾,"true"爲是,預設為"false".
4256
	#$conf["tableEnd"]="true";
4257
	#$conf["autocomplete"],字串,是否依據使用者過往輸入的記錄來提示可能要的輸入內容,"on"為啟用,"off"為停用,預設為"on".
4258
	#$conf["autocomplete"]="off";
4259
	#$conf["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
4260
	#$conf["required"]="true";
4261
	#$conf["comment"],字串,輸入方框上面要放哪些註解文字,亦即用label來呈現,同時指定"for"屬性的數值為當前"input"標籤的id,意即參數"name"的內容.
4262
	#$conf["comment"]="";
4263
	#$conf["placeholder"],字串,當沒有內容時要顯示的內容.
4264
	#$conf["placeholder"]="";
4265
	#$conf["br"],字串,"true"代表最後要換行,預設為"false".
4266
	#$conf["br"]="true";
4267
	#$conf["p"],字串,"true"代表最後要空一行,預設為"false".
4268
	#$conf["p"]="true";
4269
	#$conf["id"],字串,該元素的id,預設不使用.
4270
	#$conf["id"]="";
4271
	#$conf["dataFormId"],字串,提供用於識別哪一張表單的data屬性名稱.
4272
	#$conf["dataFormId"]="";
4273
	#參考資料:
4274
	#input=>http://www.w3schools.com/tags/tag_input.asp
4275
	#備註:
4276
	#無.
4277
	*/
4278
	public static function inputText(&$conf){
4279
 
4280
		#初始化要回傳的內容
4281
		$result=array();
4282
 
4283
		#設置當前執行的函數
4284
		$result["function"]=__FUNCTION__;
4285
 
4286
		#初始化content樣式內容
4287
		$result["content"]="";
4288
 
4289
		#如果 $conf 不為陣列
4290
		if(gettype($conf)!="array"){
4291
 
4292
			#設置執行失敗
4293
			$result["status"]="false";
4294
 
4295
			#設置執行錯誤訊息
4296
			$result["error"][]="\$conf變數須為陣列形態";
4297
 
4298
			#如果傳入的參數為 null
4299
			if($conf==null){
4300
 
4301
				#設置執行錯誤訊息
4302
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
4303
 
4304
				}#if end
4305
 
4306
			#回傳結果
4307
			return $result;
4308
 
4309
			}#if end
4310
 
4311
		#函式說明:
4312
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
4313
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4314
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
4315
		#$result["function"],當前執行的函式名稱.
4316
		#$result["argu"],設置給予的參數.
4317
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4318
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4319
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4320
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
4321
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
4322
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
4323
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
4324
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
4325
		#必填寫的參數:
4326
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4327
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4328
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4329
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4330
		#可以省略的參數:
4331
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4332
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("name","readOnly");
4333
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
4334
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
4335
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
4336
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
4337
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
4338
		#$conf["canNotBeEmpty"]=array();
4339
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
4340
		#$conf["canBeEmpty"]=array();
4341
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
4342
		#$conf["skipableVariableCanNotBeEmpty"]=array();
4343
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4344
		$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");
4345
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
4346
		$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");
4347
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4348
		$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);
4349
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
4350
		#$conf["disallowAllSkipableVarIsEmpty"]="";
4351
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
4352
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
4353
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4354
		#$conf["arrayCountEqualCheck"][]=array();
4355
		#參考資料:
4356
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4357
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4358
		unset($conf["variableCheck::checkArguments"]);
4359
 
4360
		#如果檢查失敗
4361
		if($checkArguments["status"]=="false"){
4362
 
4363
			#設置執行不正常
4364
			$result["status"]="false";
4365
 
4366
			#程式停止執行
4367
			$result["error"]=$checkArguments;
4368
 
4369
			#回傳結果
4370
			return $result;
4371
 
4372
			}#if end
4373
 
4374
		#如果檢查不通過
4375
		if($checkArguments["passed"]=="false"){
4376
 
4377
			#設置執行不正常
4378
			$result["status"]="false";
4379
 
4380
			#程式停止執行
4381
			$result["error"]=$checkArguments;
4382
 
4383
			#回傳結果
4384
			return $result;
4385
 
4386
			}#if end
4387
 
4388
		#如果 $conf["tableStart"] 為 "true"
4389
		if($conf["tableStart"]=="true"){
4390
 
4391
			#函式說明:
4392
			#表格開始,可以設定表格的厚度和位置
4393
			#回傳結果:
4394
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4395
			#$result["content"],表格開始的語法
4396
			#$result["function"],當前執行的函數
4397
			#$result["error"],函式錯誤訊息
4398
			#必填寫的參數:
4399
			$conf["table::start"]["class"]=$conf["tableClass"];#爲表格的css樣式,若為"",則代表不套用css樣式;若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
4400
			$tableStart=table::start($conf["table::start"]);
4401
			unset($conf["table::start"]);
4402
 
4403
			#如果表開始立失敗
4404
			if($tableStart["status"]=="false"){
4405
 
4406
				#設置執行失敗
4407
				$result["status"]="false";
4408
 
4409
				#設置執行錯誤訊息
4410
				$result["error"]=$tableStart;
4411
 
4412
				#回傳結果
4413
				return $result;
4414
 
4415
				}#if end
4416
 
4417
			#串接表格開始的語法
4418
			$result["content"]=$result["content"].$tableStart["content"];
4419
 
4420
			}#if end
4421
 
4422
		#如果 $conf["comment"] 有設置
4423
		if(isset($conf["comment"])){
4424
 
4425
			#新增label,且套用css樣式.
4426
			$result["content"]=$result["content"]."<label for=\"".$conf["name"]."\" class=\"".$conf["class"]."\" >".$conf["comment"]."</label>";
4427
 
4428
			}#if end
4429
 
4430
		#如果其值爲 true
4431
		if($conf["trStart"]=="true"){
4432
 
4433
			#串接列開始<tr>
4434
			$result["content"]=$result["content"]."<tr>";
4435
 
4436
			}#if end
4437
 
4438
		#如果其值爲 true
4439
		if($conf["tdStart"]=="true"){
4440
 
4441
			#串接欄位開始<td>
4442
			$result["content"]=$result["content"]."<td>";
4443
 
4444
			}#if end
4445
 
4446
		#如果 $conf["formStart"] 等於 "true"
4447
		if($conf["formStart"]=="true"){
4448
 
4449
			#函式說明:
4450
			#表單開始
4451
			#回傳結果:
4452
			#$result,表單開始的語法
4453
			#必填參數:
4454
			$conf["form"]["start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容
4455
			#可省略參數:
4456
 
4457
			#如果 $conf["formName"] 有設置
4458
			if(isset($conf["formName"])){
4459
 
4460
				#過濾 $conf["formName"] 避免錯誤
4461
				#函式說明:
4462
				#處理字串避免網頁出錯
4463
				#回傳結果:
4464
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4465
				#$result["function"],當前執行的函數.
4466
				#$result["content"],爲處理好的字串.
4467
				#$result["error"],錯誤訊息陣列.
4468
				#必填參數:
4469
				$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["formName"];#爲要處理的字串
4470
				#可省略的參數:
4471
				$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
4472
					#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
4473
					#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
4474
				#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
4475
				$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
4476
				unset($conf["stringProcess::correctCharacter"]);
4477
 
4478
				#如果過濾 $conf["formName"] 失敗
4479
				if($correctCharacter["status"]=="false"){
4480
 
4481
					#設置執行失敗
4482
					$result["status"]="false";
4483
 
4484
					#設置執行錯誤訊息
4485
					$result["error"]=$correctCharacter;
4486
 
4487
					#回傳結果
4488
					return $result;
4489
 
4490
					}#if end
4491
 
4492
				#則設定其數值
4493
				$conf["form"]["start"]["name"]=$correctCharacter["content"];#爲該表單的名稱
4494
 
4495
				}#if end
4496
 
4497
			#如果 $conf["formMethod"] 有設置
4498
			if(isset($conf["formMethod"])){
4499
 
4500
				#則設定其數值
4501
				$conf["form"]["start"]["method"]=$conf["formMethod"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
4502
 
4503
				}#if end
4504
 
4505
			#如果 $conf["formTarget"] 有設定
4506
			if(isset($conf["formTarget"])){
4507
 
4508
				#則設定其數值
4509
				$conf["form"]["start"]["target"]=$conf["formTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
4510
 
4511
				}#if end
4512
 
4513
			#則設定其參數數值
4514
			$conf["form"]["start"]["tableStart"]="false";#爲該表單是否要以<table>開始。"true"爲是;
4515
 
4516
			#則設定其數值
4517
			#$conf["form"]["start"]["tableClass"]=$conf["tableClass"];#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
4518
			$formStart=form::start($conf["form"]["start"]);
4519
			unset($conf["form"]["start"]);
4520
 
4521
			#如果表單開始失敗
4522
			if($formStart["status"]=="false"){
4523
 
4524
				#設置執行失敗
4525
				$result["status"]="false";
4526
 
4527
				#設置執行錯誤訊息
4528
				$result["error"]=$formStart;
4529
 
4530
				#回傳結果
4531
				return $result;
4532
 
4533
				}#if end
4534
 
4535
			#串接表單開始的語法
4536
			$result["content"]=$result["content"].$formStart["content"];
4537
 
4538
			}#if end
4539
 
4540
		#如果$conf["width"]沒設定
4541
		if(!isset($conf["width"])){
4542
 
4543
			#則$conf["width"]爲空值
4544
			$conf["width"]="";
4545
 
4546
			}#if end
4547
 
4548
		#如果$conf["width"]有設定
4549
		else{
4550
 
4551
			#則套用寬度的css設定值
4552
			$conf["width"]=" style=\"width:".$conf["width"].";\" ";
4553
 
4554
			}#else end
4555
 
4556
		#如果$conf["maxInputLength"]沒設定
4557
		if(!isset($conf["maxInputLength"])){
4558
 
4559
			#則$conf["maxInputLength"]爲空值
4560
			$conf["maxInputLength"]="";
4561
 
4562
			}#if end
4563
 
4564
		#如果$conf["maxInputLength"]有設定
4565
		else{
4566
 
4567
			$conf["maxInputLength"]=" maxlength=".$conf["maxInputLength"];
4568
 
4569
			}#else end
4570
 
4571
		#如果$conf["value"]沒有設定
4572
		if(!isset($conf["value"])){
4573
 
4574
			#則$value就爲空值
4575
			$conf["value"]="";
4576
 
4577
			}#if end
4578
 
4579
		#如果$conf["value"]有設定,且不為空.
4580
		else if($conf["value"]!==""){
4581
 
4582
			#過濾 $conf["value"] 的內容,避免錯誤。
4583
			#函式說明:
4584
			#處理字串避免網頁出錯
4585
			#回傳結果:
4586
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4587
			#$result["function"],當前執行的函數.
4588
			#$result["content"],爲處理好的字串.
4589
			#$result["error"],錯誤訊息陣列.
4590
			#必填參數:
4591
			$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["value"];#爲要處理的字串
4592
			#可省略的參數:
4593
			$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"");#爲被選擇要處理的字串/字元,須爲陣列值。
4594
				#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
4595
				#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
4596
			#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
4597
			$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
4598
			unset($conf["stringProcess::correctCharacter"]);
4599
 
4600
			#如果過濾字串失敗
4601
			if($correctCharacter["status"]=="false"){
4602
 
4603
				#設置執行失敗
4604
				$result["status"]="false";
4605
 
4606
				#設置執行錯誤訊息
4607
				$result["error"]=$correctCharacter;
4608
 
4609
				#回傳結果
4610
				return $result;
4611
 
4612
				}#if end
4613
 
4614
			#就設定預設的內容
4615
			$conf["value"] =" value= \"".$correctCharacter["content"]."\" ";
4616
 
4617
			}#else end
4618
 
4619
		#如果$conf["readOnly"]爲"true"
4620
		if($conf["readOnly"]=="true"){
4621
 
4622
			#則$conf["readOnly"] 爲 readonly
4623
			$conf["readOnly"]="readonly=true disabled=true";
4624
 
4625
			}#if end
4626
 
4627
		#反之
4628
		else{
4629
 
4630
			#$conf["readOnly"]爲空
4631
			$conf["readOnly"]="";
4632
 
4633
			}#if end
4634
 
4635
		#判斷 $conf["autoFocus"] 的數值
4636
		switch($conf["autoFocus"]){
4637
 
4638
			#如果是 "true"
4639
			case "true":
4640
 
4641
				#設置為 "autofocus"
4642
				$conf["autoFocus"]=" autofocus=true ";
4643
 
4644
				#跳出 switch
4645
				break;
4646
 
4647
			#如果是其他內容
4648
			default:
4649
 
4650
				#則設置為 ""
4651
				$conf["autoFocus"]="";
4652
 
4653
			}#switch end
4654
 
4655
		#如果有設置 $conf["class"]
4656
		if(isset($conf["class"])){
4657
 
4658
			#套用css設定
4659
			$conf["class"]=" class = \"".$conf["class"]."\"";
4660
 
4661
			}#if end
226 liveuser 4662
 
3 liveuser 4663
		#反之
4664
		else{
4665
			#設置為空字串
4666
			$conf["class"]="";
226 liveuser 4667
 
3 liveuser 4668
			}#else end
226 liveuser 4669
 
3 liveuser 4670
		#如果有 $conf["classList"]
4671
		if(isset($conf["classList"])){
226 liveuser 4672
 
3 liveuser 4673
			#傳接 class 開始
4674
			$conf["class"]=" class = \"";
226 liveuser 4675
 
3 liveuser 4676
			#針對 $conf["classList"] 的每個元素
4677
			foreach($conf["classList"] as $index => $cssClassName){
226 liveuser 4678
 
3 liveuser 4679
				#串接 class 名稱
4680
				$conf["class"]=$conf["class"].$cssClassName;
226 liveuser 4681
 
3 liveuser 4682
				#若後面還有未串接的 class 名稱
4683
				if(isset($conf["classList"][$index+1])){
226 liveuser 4684
 
3 liveuser 4685
					#串接空格
4686
					$conf["class"]=$conf["class"]." ";
226 liveuser 4687
 
3 liveuser 4688
					}#if end
226 liveuser 4689
 
3 liveuser 4690
				}#foreach end
226 liveuser 4691
 
3 liveuser 4692
			#串接 class 結束
4693
			$conf["class"]=$conf["class"]."\"";
226 liveuser 4694
 
3 liveuser 4695
			}#if end
4696
 
4697
		#如果 $conf["jsActivitor"] 與 $conf["jsAction"] 皆有設定
4698
		if( isset($conf["jsActivitor"]) && isset($conf["jsAction"]) ){
4699
 
4700
			#則將設定值組合
4701
			$conf["jsCustom"]=" ".$conf["jsActivitor"]."=".$conf["jsAction"]." ";
4702
 
4703
			}#if end
4704
 
4705
		#如果 $conf["jsCustom"] 沒有設定
4706
		if(!isset($conf["jsCustom"])){
4707
 
4708
			#將其設爲空值
4709
			$conf["jsCustom"]="";
4710
 
4711
			}#if end
4712
 
4713
		#過濾 $conf["name"] 避免錯誤
4714
		#函式說明:
4715
		#處理字串避免網頁出錯
4716
		#回傳結果:
4717
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4718
		#$result["function"],當前執行的函數.
4719
		#$result["content"],爲處理好的字串.
4720
		#$result["error"],錯誤訊息陣列.
4721
		#必填參數:
4722
		$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["name"];#爲要處理的字串
4723
		#可省略的參數:
4724
		$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
4725
			#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
4726
			#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
4727
		#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
4728
		$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
4729
		unset($conf["stringProcess::correctCharacter"]);
4730
 
4731
		#如果過濾字串失敗
4732
		if($correctCharacter["status"]=="false"){
4733
 
4734
			#設置執行失敗
4735
			$result["status"]="false";
4736
 
4737
			#設置執行錯誤訊息
4738
			$result["error"]=$correctCharacter;
4739
 
4740
			#回傳結果
4741
			return $result;
4742
 
4743
			}#if end
4744
 
4745
		#置換過濾好了的$conf["name"]
4746
		$conf["name"]=$correctCharacter["content"];
4747
 
4748
		#如果有設定 $conf["placeholder"]
4749
		if(isset($conf["placeholder"])){
4750
 
4751
			#串接 placeholder 的內容
4752
			$conf["placeholder"]=" placeholder=\"".$conf["placeholder"]."\" ";
4753
 
4754
			}#if end
4755
 
4756
		#反之沒有設定 $conf["placeholder"]
4757
		else{
4758
 
4759
			#設為 ""
4760
			$conf["placeholder"]="";
4761
 
4762
			}#else end
4763
 
4764
		#如果 $conf["required"] 為"true"
4765
		if($conf["required"]=="true"){
4766
 
4767
			#設置 "required" 屬性
4768
			$conf["required"]="required=true";
4769
 
4770
			}#if end
4771
 
4772
		#反之
4773
		else{
4774
 
4775
			#設為空值
4776
			$conf["required"]="";
4777
 
4778
			}#else end
4779
 
4780
		#如果有設置id
4781
		if(isset($conf["id"])){
4782
 
4783
			#設置id屬性
4784
			$conf["id"]="id=\"".$conf["id"]."\"";
4785
 
4786
			}#if end
4787
 
4788
		#反之
4789
		else{
4790
 
4791
			#設為空值
4792
			$conf["id"]="";
4793
 
4794
			}#else end
4795
 
4796
		#如果有設置 $conf["dataFormId"]
4797
		if(isset($conf["dataFormId"])){
226 liveuser 4798
 
3 liveuser 4799
			#設置 data-id 屬性
4800
			$conf["dataFormId"]="data-form-id=\"".$conf["dataFormId"]."\"";
226 liveuser 4801
 
3 liveuser 4802
			}#if end
226 liveuser 4803
 
4804
		#反之設置為空數值
3 liveuser 4805
		else{
226 liveuser 4806
 
3 liveuser 4807
			$conf["dataFormId"]="";
4808
 
226 liveuser 4809
			}#else end
4810
 
3 liveuser 4811
		#如果要 autocomplete
30 liveuser 4812
		if($conf["autocomplete"]==="on"){
226 liveuser 4813
 
3 liveuser 4814
			#設置為 "autocomplete"
4815
			$conf["autocomplete"]="autocomplete";
226 liveuser 4816
 
30 liveuser 4817
			}#if end
226 liveuser 4818
 
3 liveuser 4819
		#反之
30 liveuser 4820
		else{
226 liveuser 4821
 
3 liveuser 4822
			#設置為空字串
4823
			$conf["autocomplete"]="";
226 liveuser 4824
 
30 liveuser 4825
			}#else end
3 liveuser 4826
 
4827
		#放置可以輸入文字的表單
4828
		$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"]." >";
4829
 
4830
		#如果 $conf["formEnd"] 等於 "true"
66 liveuser 4831
		if($conf["formEnd"]==="true"){
3 liveuser 4832
 
4833
			#函式說明:
4834
			#表單結束
4835
			#回傳結果:
4836
			#$result,表單結束的語法
4837
			#必填參數:
4838
			#則設定其數值
4839
			$conf["form"]["end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。
4840
			$formEnd=form::end($conf["form"]["end"]);
4841
			unset($conf["form"]["end"]);
4842
 
4843
			#串接表單結束的語法
4844
			$result["content"]=$result["content"].$formEnd["content"];
4845
 
4846
			}#if end
4847
 
4848
		#如果其值爲 true
66 liveuser 4849
		if($conf["tdEnd"]==="true"){
3 liveuser 4850
 
4851
			#串接欄位結束的語法
4852
			$result["content"]=$result["content"]."</td>";
4853
 
4854
			}#if end
4855
 
4856
		#如果其值爲 true
66 liveuser 4857
		if($conf["trEnd"]==="true"){
3 liveuser 4858
 
4859
			#串接列結束的語法
4860
			$result["content"]=$result["content"]."</tr>";
4861
 
4862
			}#if end
4863
 
4864
		#如果 $conf["br"] 等於 "true"
66 liveuser 4865
		if($conf["br"]==="true"){
3 liveuser 4866
 
4867
			#結尾加上<br>
4868
			$result["content"]=$result["content"]."<br>";
4869
 
4870
			}#if end
4871
 
4872
		#如果 $conf["p"] 等於 "true"
66 liveuser 4873
		if($conf["p"]==="true"){
3 liveuser 4874
 
4875
			#結尾加上<p>
4876
			$result["content"]=$result["content"]."<p>";
4877
 
4878
			}#if end
4879
 
4880
		#執行到這邊代表執行成功
4881
		$result["status"]="true";
4882
 
4883
		#回傳結果
4884
		return $result;
4885
 
4886
		}#function inputText end
226 liveuser 4887
 
3 liveuser 4888
	/*
4889
	#函式說明:
30 liveuser 4890
	#可以輸入Email的輸入方框
4891
	#回傳結果:
4892
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4893
	#$result["function"],當前執行的函數.
4894
	#$result["error"],錯誤訊息陣列.
4895
	#$result["content"],按鈕語法.
4896
	#必填參數:
4897
	#$conf["name"],字串,爲該文字輸入框的名稱,用於讓接收頁面讀取的名稱。
4898
	$conf["name"]="";
4899
	#$conf["readOnly"],字串,爲該文字框是否可以填寫資料,若要只能觀看不能填寫,那麼就必須將其值設爲"true",反之要設爲"false".
4900
	$conf["readOnly"]="false";
4901
	#可省略參數:
4902
	#$conf["width"],字串,爲文字框的外觀長度,預設為"100%".
4903
	#$conf["width"]="";
4904
	#$conf["maxInputLength"],字串,爲可輸入的最大位元長度,預設不限制.
4905
	#$conf["maxInputLength"]="";
4906
	#$conf["autoFocus"],字串,是否為將填寫的指標移到該表單,"true"代表要,預設為"false".
4907
	#$conf["autoFocus"]="";
4908
	#$conf["value"],字串,爲該文字框預設要顯示的文字,預設爲"".
4909
	#$conf["value"]="";
4910
	#$conf["class"],字串,爲要套用的css樣式,若省略,則會套用預設的 "__qbpwcf_inputTextCssStyle" 樣式,其屬性爲 "width:100%","font-size:30px"
4911
	#$conf["class"]="";
4912
	#$conf["classList"],字串陣列,為要使用的多個css class樣式,若有使用,則會取代"class"參數的設定.
4913
	#$conf["classList"]=array();
4914
	#$conf["jsActivitor"],字串,爲觸發js的條件,可以是"onChange"(已改變內容時)、"onClick"(按下按鈕時)、"onkeyup"(當鍵盤按下放開後)、"onmouseover"(當滑鼠移過去的時候)...,須搭配$conf["jsSubmitActionTarget"]參數。
4915
	#$conf["jsActivitor"]="";
4916
	#$conf["jsAction"],字串,爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
4917
	#$conf["jsAction"]="";
4918
	#$conf["trStart"],字串,爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
4919
	#$conf["trStart"]="";
4920
	#$conf["tdStart"],字串,爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".
4921
	#$conf["tdStart"]="";
4922
	#$conf["formStart"],字串,爲是否要以<form>開頭,"true"表示"是",也可以看成表單的開始,預設為"false".
4923
	#$conf["formStart"]="";
4924
	#$conf["formAction"],字串,表單遞交的目的地,若$conf["formStart"]為"true",則該參數不能省略.
4925
	#$conf["formAction"]="";
4926
	#$conf["formName"],字串,爲該表單的名稱
4927
	#$conf["formName"]="";
4928
	#$conf["formMethod"],字串,爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
4929
	#$conf["formMethod"]="";
4930
	#$conf["formTarget"],字串,為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
4931
	#$conf["formTarget"]="";
4932
	#$conf["tableStart"],字串,爲該表單是否要以<table>開始。"true"爲是,預設為"false".
4933
	#$conf["tableStart"]="";
4934
	#$conf["tableClass"],字串,表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式,預設為"__withoutBorder".
4935
	#$conf["tableClass"]="";
4936
	#$conf["formEnd"],字串,爲是否要以<form>結尾,"true"表示"是",也可以看成表單的結束,預設為"false".
4937
	#$conf["formEnd"]="true";
4938
	#$conf["tdEnd"],字串,爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
4939
	#$conf["tdEnd"]="true";
4940
	#$conf["trEnd"],字串,爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
4941
	#$conf["trEnd"]="true";
4942
	#$conf["tableEnd"],字串,爲該表單是否要以</table>結尾,"true"爲是,預設為"false".
4943
	#$conf["tableEnd"]="true";
4944
	#$conf["autocomplete"],字串,是否依據使用者過往輸入的記錄來提示可能要的輸入內容,"on"為啟用,"off"為停用,預設為"on".
4945
	#$conf["autocomplete"]="off";
4946
	#$conf["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
4947
	#$conf["required"]="true";
4948
	#$conf["comment"],字串,輸入方框上面要放哪些註解文字,亦即用label來呈現,同時指定"for"屬性的數值為當前"input"標籤的id,意即參數"name"的內容.
4949
	#$conf["comment"]="";
4950
	#$conf["placeholder"],字串,當沒有內容時要顯示的內容.
4951
	#$conf["placeholder"]="";
4952
	#$conf["br"],字串,"true"代表最後要換行,預設為"false".
4953
	#$conf["br"]="true";
4954
	#$conf["p"],字串,"true"代表最後要空一行,預設為"false".
4955
	#$conf["p"]="true";
4956
	#$conf["id"],字串,該元素的id,預設不使用.
4957
	#$conf["id"]="";
4958
	#$conf["dataFormId"],字串,提供用於識別哪一張表單的data屬性名稱.
4959
	#$conf["dataFormId"]="";
4960
	#參考資料:
4961
	#https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input/email
4962
	#備註:
4963
	#無.
4964
	*/
4965
	public static function inputEmail(&$conf){
226 liveuser 4966
 
30 liveuser 4967
		#初始化要回傳的內容
4968
		$result=array();
4969
 
4970
		#設置當前執行的函數
4971
		$result["function"]=__FUNCTION__;
4972
 
4973
		#初始化content樣式內容
4974
		$result["content"]="";
4975
 
4976
		#如果 $conf 不為陣列
4977
		if(gettype($conf)!="array"){
4978
 
4979
			#設置執行失敗
4980
			$result["status"]="false";
4981
 
4982
			#設置執行錯誤訊息
4983
			$result["error"][]="\$conf變數須為陣列形態";
4984
 
4985
			#如果傳入的參數為 null
4986
			if($conf==null){
4987
 
4988
				#設置執行錯誤訊息
4989
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
4990
 
4991
				}#if end
4992
 
4993
			#回傳結果
4994
			return $result;
4995
 
4996
			}#if end
4997
 
4998
		#函式說明:
4999
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
5000
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5001
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
5002
		#$result["function"],當前執行的函式名稱.
5003
		#$result["argu"],設置給予的參數.
5004
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
5005
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
5006
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
5007
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
5008
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
5009
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
5010
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
5011
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
5012
		#必填寫的參數:
5013
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
5014
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
5015
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
5016
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
5017
		#可以省略的參數:
5018
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
5019
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("name","readOnly");
5020
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
5021
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
5022
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
5023
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
5024
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
5025
		#$conf["canNotBeEmpty"]=array();
5026
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
5027
		#$conf["canBeEmpty"]=array();
5028
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
5029
		#$conf["skipableVariableCanNotBeEmpty"]=array();
5030
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
5031
		$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");
5032
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
5033
		$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");
5034
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
5035
		$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);
5036
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
5037
		#$conf["disallowAllSkipableVarIsEmpty"]="";
5038
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
5039
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
5040
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
5041
		#$conf["arrayCountEqualCheck"][]=array();
5042
		#參考資料:
5043
		#array_keys=>http://php.net/manual/en/function.array-keys.php
5044
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
5045
		unset($conf["variableCheck::checkArguments"]);
5046
 
5047
		#如果檢查失敗
5048
		if($checkArguments["status"]=="false"){
5049
 
5050
			#設置執行不正常
5051
			$result["status"]="false";
5052
 
5053
			#程式停止執行
5054
			$result["error"]=$checkArguments;
5055
 
5056
			#回傳結果
5057
			return $result;
5058
 
5059
			}#if end
5060
 
5061
		#如果檢查不通過
5062
		if($checkArguments["passed"]=="false"){
5063
 
5064
			#設置執行不正常
5065
			$result["status"]="false";
5066
 
5067
			#程式停止執行
5068
			$result["error"]=$checkArguments;
5069
 
5070
			#回傳結果
5071
			return $result;
5072
 
5073
			}#if end
5074
 
5075
		#如果 $conf["tableStart"] 為 "true"
5076
		if($conf["tableStart"]=="true"){
5077
 
5078
			#函式說明:
5079
			#表格開始,可以設定表格的厚度和位置
5080
			#回傳結果:
5081
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5082
			#$result["content"],表格開始的語法
5083
			#$result["function"],當前執行的函數
5084
			#$result["error"],函式錯誤訊息
5085
			#必填寫的參數:
5086
			$conf["table::start"]["class"]=$conf["tableClass"];#爲表格的css樣式,若為"",則代表不套用css樣式;若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
5087
			$tableStart=table::start($conf["table::start"]);
5088
			unset($conf["table::start"]);
5089
 
5090
			#如果表開始立失敗
5091
			if($tableStart["status"]=="false"){
5092
 
5093
				#設置執行失敗
5094
				$result["status"]="false";
5095
 
5096
				#設置執行錯誤訊息
5097
				$result["error"]=$tableStart;
5098
 
5099
				#回傳結果
5100
				return $result;
5101
 
5102
				}#if end
5103
 
5104
			#串接表格開始的語法
5105
			$result["content"]=$result["content"].$tableStart["content"];
5106
 
5107
			}#if end
5108
 
5109
		#如果 $conf["comment"] 有設置
5110
		if(isset($conf["comment"])){
5111
 
5112
			#新增label,且套用css樣式.
5113
			$result["content"]=$result["content"]."<label for=\"".$conf["name"]."\" class=\"".$conf["class"]."\" >".$conf["comment"]."</label>";
5114
 
5115
			}#if end
5116
 
5117
		#如果其值爲 true
5118
		if($conf["trStart"]=="true"){
5119
 
5120
			#串接列開始<tr>
5121
			$result["content"]=$result["content"]."<tr>";
5122
 
5123
			}#if end
5124
 
5125
		#如果其值爲 true
5126
		if($conf["tdStart"]=="true"){
5127
 
5128
			#串接欄位開始<td>
5129
			$result["content"]=$result["content"]."<td>";
5130
 
5131
			}#if end
5132
 
5133
		#如果 $conf["formStart"] 等於 "true"
5134
		if($conf["formStart"]=="true"){
5135
 
5136
			#函式說明:
5137
			#表單開始
5138
			#回傳結果:
5139
			#$result,表單開始的語法
5140
			#必填參數:
5141
			$conf["form"]["start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容
5142
			#可省略參數:
5143
 
5144
			#如果 $conf["formName"] 有設置
5145
			if(isset($conf["formName"])){
5146
 
5147
				#過濾 $conf["formName"] 避免錯誤
5148
				#函式說明:
5149
				#處理字串避免網頁出錯
5150
				#回傳結果:
5151
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5152
				#$result["function"],當前執行的函數.
5153
				#$result["content"],爲處理好的字串.
5154
				#$result["error"],錯誤訊息陣列.
5155
				#必填參數:
5156
				$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["formName"];#爲要處理的字串
5157
				#可省略的參數:
5158
				$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
5159
					#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
5160
					#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
5161
				#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
5162
				$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
5163
				unset($conf["stringProcess::correctCharacter"]);
5164
 
5165
				#如果過濾 $conf["formName"] 失敗
5166
				if($correctCharacter["status"]=="false"){
5167
 
5168
					#設置執行失敗
5169
					$result["status"]="false";
5170
 
5171
					#設置執行錯誤訊息
5172
					$result["error"]=$correctCharacter;
5173
 
5174
					#回傳結果
5175
					return $result;
5176
 
5177
					}#if end
5178
 
5179
				#則設定其數值
5180
				$conf["form"]["start"]["name"]=$correctCharacter["content"];#爲該表單的名稱
5181
 
5182
				}#if end
5183
 
5184
			#如果 $conf["formMethod"] 有設置
5185
			if(isset($conf["formMethod"])){
5186
 
5187
				#則設定其數值
5188
				$conf["form"]["start"]["method"]=$conf["formMethod"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
5189
 
5190
				}#if end
5191
 
5192
			#如果 $conf["formTarget"] 有設定
5193
			if(isset($conf["formTarget"])){
5194
 
5195
				#則設定其數值
5196
				$conf["form"]["start"]["target"]=$conf["formTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
5197
 
5198
				}#if end
5199
 
5200
			#則設定其參數數值
5201
			$conf["form"]["start"]["tableStart"]="false";#爲該表單是否要以<table>開始。"true"爲是;
5202
 
5203
			#則設定其數值
5204
			#$conf["form"]["start"]["tableClass"]=$conf["tableClass"];#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
5205
			$formStart=form::start($conf["form"]["start"]);
5206
			unset($conf["form"]["start"]);
5207
 
5208
			#如果表單開始失敗
5209
			if($formStart["status"]=="false"){
5210
 
5211
				#設置執行失敗
5212
				$result["status"]="false";
5213
 
5214
				#設置執行錯誤訊息
5215
				$result["error"]=$formStart;
5216
 
5217
				#回傳結果
5218
				return $result;
5219
 
5220
				}#if end
5221
 
5222
			#串接表單開始的語法
5223
			$result["content"]=$result["content"].$formStart["content"];
5224
 
5225
			}#if end
5226
 
5227
		#如果$conf["width"]沒設定
5228
		if(!isset($conf["width"])){
5229
 
5230
			#則$conf["width"]爲空值
5231
			$conf["width"]="";
5232
 
5233
			}#if end
5234
 
5235
		#如果$conf["width"]有設定
5236
		else{
5237
 
5238
			#則套用寬度的css設定值
5239
			$conf["width"]=" style=\"width:".$conf["width"].";\" ";
5240
 
5241
			}#else end
5242
 
5243
		#如果$conf["maxInputLength"]沒設定
5244
		if(!isset($conf["maxInputLength"])){
5245
 
5246
			#則$conf["maxInputLength"]爲空值
5247
			$conf["maxInputLength"]="";
5248
 
5249
			}#if end
5250
 
5251
		#如果$conf["maxInputLength"]有設定
5252
		else{
5253
 
5254
			$conf["maxInputLength"]=" maxlength=".$conf["maxInputLength"];
5255
 
5256
			}#else end
5257
 
5258
		#如果$conf["value"]沒有設定
5259
		if(!isset($conf["value"])){
5260
 
5261
			#則$value就爲空值
5262
			$conf["value"]="";
5263
 
5264
			}#if end
5265
 
5266
		#如果$conf["value"]有設定,且不為空.
5267
		else if($conf["value"]!==""){
5268
 
5269
			#過濾 $conf["value"] 的內容,避免錯誤。
5270
			#函式說明:
5271
			#處理字串避免網頁出錯
5272
			#回傳結果:
5273
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5274
			#$result["function"],當前執行的函數.
5275
			#$result["content"],爲處理好的字串.
5276
			#$result["error"],錯誤訊息陣列.
5277
			#必填參數:
5278
			$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["value"];#爲要處理的字串
5279
			#可省略的參數:
5280
			$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"");#爲被選擇要處理的字串/字元,須爲陣列值。
5281
				#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
5282
				#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
5283
			#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
5284
			$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
5285
			unset($conf["stringProcess::correctCharacter"]);
5286
 
5287
			#如果過濾字串失敗
5288
			if($correctCharacter["status"]=="false"){
5289
 
5290
				#設置執行失敗
5291
				$result["status"]="false";
5292
 
5293
				#設置執行錯誤訊息
5294
				$result["error"]=$correctCharacter;
5295
 
5296
				#回傳結果
5297
				return $result;
5298
 
5299
				}#if end
5300
 
5301
			#就設定預設的內容
5302
			$conf["value"] =" value= \"".$correctCharacter["content"]."\" ";
5303
 
5304
			}#else end
5305
 
5306
		#如果$conf["readOnly"]爲"true"
5307
		if($conf["readOnly"]=="true"){
5308
 
5309
			#則$conf["readOnly"] 爲 readonly
5310
			$conf["readOnly"]="readonly=true disabled=true";
5311
 
5312
			}#if end
5313
 
5314
		#反之
5315
		else{
5316
 
5317
			#$conf["readOnly"]爲空
5318
			$conf["readOnly"]="";
5319
 
5320
			}#if end
5321
 
5322
		#判斷 $conf["autoFocus"] 的數值
5323
		switch($conf["autoFocus"]){
5324
 
5325
			#如果是 "true"
5326
			case "true":
5327
 
5328
				#設置為 "autofocus"
5329
				$conf["autoFocus"]=" autofocus=true ";
5330
 
5331
				#跳出 switch
5332
				break;
5333
 
5334
			#如果是其他內容
5335
			default:
5336
 
5337
				#則設置為 ""
5338
				$conf["autoFocus"]="";
5339
 
5340
			}#switch end
5341
 
5342
		#如果有設置 $conf["class"]
5343
		if(isset($conf["class"])){
5344
 
5345
			#套用css設定
5346
			$conf["class"]=" class = \"".$conf["class"]."\"";
5347
 
5348
			}#if end
226 liveuser 5349
 
30 liveuser 5350
		#反之
5351
		else{
5352
			#設置為空字串
5353
			$conf["class"]="";
226 liveuser 5354
 
30 liveuser 5355
			}#else end
226 liveuser 5356
 
30 liveuser 5357
		#如果有 $conf["classList"]
5358
		if(isset($conf["classList"])){
226 liveuser 5359
 
30 liveuser 5360
			#傳接 class 開始
5361
			$conf["class"]=" class = \"";
226 liveuser 5362
 
30 liveuser 5363
			#針對 $conf["classList"] 的每個元素
5364
			foreach($conf["classList"] as $index => $cssClassName){
226 liveuser 5365
 
30 liveuser 5366
				#串接 class 名稱
5367
				$conf["class"]=$conf["class"].$cssClassName;
226 liveuser 5368
 
30 liveuser 5369
				#若後面還有未串接的 class 名稱
5370
				if(isset($conf["classList"][$index+1])){
226 liveuser 5371
 
30 liveuser 5372
					#串接空格
5373
					$conf["class"]=$conf["class"]." ";
226 liveuser 5374
 
30 liveuser 5375
					}#if end
226 liveuser 5376
 
30 liveuser 5377
				}#foreach end
226 liveuser 5378
 
30 liveuser 5379
			#串接 class 結束
5380
			$conf["class"]=$conf["class"]."\"";
226 liveuser 5381
 
30 liveuser 5382
			}#if end
5383
 
5384
		#如果 $conf["jsActivitor"] 與 $conf["jsAction"] 皆有設定
5385
		if( isset($conf["jsActivitor"]) && isset($conf["jsAction"]) ){
5386
 
5387
			#則將設定值組合
5388
			$conf["jsCustom"]=" ".$conf["jsActivitor"]."=".$conf["jsAction"]." ";
5389
 
5390
			}#if end
5391
 
5392
		#如果 $conf["jsCustom"] 沒有設定
5393
		if(!isset($conf["jsCustom"])){
5394
 
5395
			#將其設爲空值
5396
			$conf["jsCustom"]="";
5397
 
5398
			}#if end
5399
 
5400
		#過濾 $conf["name"] 避免錯誤
5401
		#函式說明:
5402
		#處理字串避免網頁出錯
5403
		#回傳結果:
5404
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5405
		#$result["function"],當前執行的函數.
5406
		#$result["content"],爲處理好的字串.
5407
		#$result["error"],錯誤訊息陣列.
5408
		#必填參數:
5409
		$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["name"];#爲要處理的字串
5410
		#可省略的參數:
5411
		$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
5412
			#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
5413
			#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
5414
		#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
5415
		$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
5416
		unset($conf["stringProcess::correctCharacter"]);
5417
 
5418
		#如果過濾字串失敗
5419
		if($correctCharacter["status"]=="false"){
5420
 
5421
			#設置執行失敗
5422
			$result["status"]="false";
5423
 
5424
			#設置執行錯誤訊息
5425
			$result["error"]=$correctCharacter;
5426
 
5427
			#回傳結果
5428
			return $result;
5429
 
5430
			}#if end
5431
 
5432
		#置換過濾好了的$conf["name"]
5433
		$conf["name"]=$correctCharacter["content"];
5434
 
5435
		#如果有設定 $conf["placeholder"]
5436
		if(isset($conf["placeholder"])){
5437
 
5438
			#串接 placeholder 的內容
5439
			$conf["placeholder"]=" placeholder=\"".$conf["placeholder"]."\" ";
5440
 
5441
			}#if end
5442
 
5443
		#反之沒有設定 $conf["placeholder"]
5444
		else{
5445
 
5446
			#設為 ""
5447
			$conf["placeholder"]="";
5448
 
5449
			}#else end
5450
 
5451
		#如果 $conf["required"] 為"true"
5452
		if($conf["required"]=="true"){
5453
 
5454
			#設置 "required" 屬性
5455
			$conf["required"]="required=true";
5456
 
5457
			}#if end
5458
 
5459
		#反之
5460
		else{
5461
 
5462
			#設為空值
5463
			$conf["required"]="";
5464
 
5465
			}#else end
5466
 
5467
		#如果有設置id
5468
		if(isset($conf["id"])){
5469
 
5470
			#設置id屬性
5471
			$conf["id"]="id=\"".$conf["id"]."\"";
5472
 
5473
			}#if end
5474
 
5475
		#反之
5476
		else{
5477
 
5478
			#設為空值
5479
			$conf["id"]="";
5480
 
5481
			}#else end
5482
 
5483
		#如果有設置 $conf["dataFormId"]
5484
		if(isset($conf["dataFormId"])){
226 liveuser 5485
 
30 liveuser 5486
			#設置 data-id 屬性
5487
			$conf["dataFormId"]="data-form-id=\"".$conf["dataFormId"]."\"";
226 liveuser 5488
 
30 liveuser 5489
			}#if end
226 liveuser 5490
 
5491
		#反之設置為空數值
30 liveuser 5492
		else{
226 liveuser 5493
 
30 liveuser 5494
			$conf["dataFormId"]="";
5495
 
226 liveuser 5496
			}#else end
5497
 
30 liveuser 5498
		#如果要 autocomplete
5499
		if($conf["autocomplete"]==="on"){
226 liveuser 5500
 
30 liveuser 5501
			#設置為 "autocomplete"
5502
			$conf["autocomplete"]="autocomplete";
226 liveuser 5503
 
30 liveuser 5504
		}#if end
226 liveuser 5505
 
30 liveuser 5506
		#反之
5507
		else{
5508
			#設置為空字串
5509
			$conf["autocomplete"]="";
226 liveuser 5510
 
30 liveuser 5511
		}#else end
5512
 
5513
		#放置可以輸入email的表單
5514
		$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"]." >";
5515
 
5516
		#如果 $conf["formEnd"] 等於 "true"
5517
		if($conf["formEnd"]=="true"){
5518
 
5519
			#函式說明:
5520
			#表單結束
5521
			#回傳結果:
5522
			#$result,表單結束的語法
5523
			#必填參數:
5524
			#則設定其數值
5525
			$conf["form"]["end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。
5526
			$formEnd=form::end($conf["form"]["end"]);
5527
			unset($conf["form"]["end"]);
5528
 
5529
			#串接表單結束的語法
5530
			$result["content"]=$result["content"].$formEnd["content"];
5531
 
5532
			}#if end
5533
 
5534
		#如果其值爲 true
5535
		if($conf["tdEnd"]=="true"){
5536
 
5537
			#串接欄位結束的語法
5538
			$result["content"]=$result["content"]."</td>";
5539
 
5540
			}#if end
5541
 
5542
		#如果其值爲 true
5543
		if($conf["trEnd"]=="true"){
5544
 
5545
			#串接列結束的語法
5546
			$result["content"]=$result["content"]."</tr>";
5547
 
5548
			}#if end
5549
 
5550
		#如果 $conf["br"] 等於 "true"
5551
		if($conf["br"]=="true"){
5552
 
5553
			#結尾加上<br>
5554
			$result["content"]=$result["content"]."<br>";
5555
 
5556
			}#if end
5557
 
5558
		#如果 $conf["p"] 等於 "true"
5559
		if($conf["p"]=="true"){
5560
 
5561
			#結尾加上<p>
5562
			$result["content"]=$result["content"]."<p>";
5563
 
5564
			}#if end
5565
 
5566
		#執行到這邊代表執行成功
5567
		$result["status"]="true";
5568
 
5569
		#回傳結果
5570
		return $result;
226 liveuser 5571
 
30 liveuser 5572
		}#function inputEmail end
226 liveuser 5573
 
30 liveuser 5574
	/*
5575
	#函式說明:
3 liveuser 5576
	#可以輸入文字的區塊
5577
	#回傳結果:
5578
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5579
	#$result["function"],當前執行的函數.
5580
	#$result["error"],錯誤訊息陣列.
5581
	#$result["content"],按鈕語法.
5582
	#必填參數:
5583
	$conf["name"]="";#爲文字輸入框的名稱,供接收端辨識用。
5584
	$conf["readOnly"]="false";#爲是否要爲唯讀,如果爲"true",則爲唯讀。反之則爲"false"。
5585
	#可省略參數:
5586
	#$conf["id"],字串,文字區塊的id,供javaScript呼叫用.
5587
	#$conf["id"]="";
5588
	#$conf["width"]="";#為輸入框的寬度,預設不指定.
5589
	#$conf["cols"]="";#爲文字輸入框的欄位數(寬),預設爲按照瀏覽器設定值。
5590
	#$conf["rows"]="";#爲文字輸入框的列數(高),預設爲按照瀏覽器設定值。
5591
	#$conf["maxInputLength"]="";#爲文字輸入的長度限制,預設無限制。
5592
	#$conf["defaultText"]="";#爲文字輸入框裏面的預設文字內容,預設是空的。
5593
	#$conf["class"]=;#爲要套用的css樣式。如果沒有指定 ,則採用預設的css樣式,"__qbpwcf_inputTextAreaCssStyle",其屬性爲 "width:100%","height:120px","font-size:30px"
5594
	#$conf["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。
5595
	#$conf["jsAction"]="";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
5596
	#$conf["formStart"]="true";#爲是否要以<form>開頭,"true"表示"是",也可以看成表單的開始,預設為"false".
5597
	#$conf["formAction"]="";#表單遞交的目的地,若$conf["formStart"]為"true",則該參數不能省略.
5598
	#$conf["formName"]="";#爲該表單的名稱
5599
	#$conf["formMethod"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
5600
	#$conf["formTarget"]="";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
5601
	#$conf["formEnd"]="true";#爲是否要以<form>結尾,"true"表示"是",也可以看成表單的結束,預設為"false".
5602
	#$conf["comment"],字串,輸入方框上面要放哪些註解文字,亦即用label來呈現,同時指定"for"屬性的數值為當前"input"標籤的id,意即參數"name"的內容.
5603
	#$conf["comment"]="";
5604
	#$conf["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
5605
	#$conf["required"]="true";
5606
	#$conf["placeholder"],字串,當沒有內容時要顯示的內容.
5607
	#$conf["placeholder"]="";
5608
	#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設為"false".
5609
	#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是",也可以看成列裏面的元素開始,預設為"false".
5610
	#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設為"false".
5611
	#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設為"false".
5612
	#$conf["dataFormId"],字串,提供用於識別哪一張表單的data屬性名稱.
5613
	#$conf["dataFormId"]="";
5614
	#參考資料:
5615
	#input=>http://www.w3schools.com/tags/tag_input.asp
5616
	#備註:
5617
	#無.
5618
	*/
5619
	public static function inputTextArea(&$conf){
5620
 
5621
		#初始化要回傳的內容
5622
		$result=array();
5623
 
5624
		#設置當前執行的函數
5625
		$result["function"]=__FUNCTION__;
5626
 
5627
		#初始化content樣式內容
5628
		$result["content"]="";
5629
 
5630
		#如果 $conf 不為陣列
5631
		if(gettype($conf)!="array"){
5632
 
5633
			#設置執行失敗
5634
			$result["status"]="false";
5635
 
5636
			#設置執行錯誤訊息
5637
			$result["error"][]="\$conf變數須為陣列形態";
5638
 
5639
			#如果傳入的參數為 null
5640
			if($conf==null){
5641
 
5642
				#設置執行錯誤訊息
5643
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
5644
 
5645
				}#if end
5646
 
5647
			#回傳結果
5648
			return $result;
5649
 
5650
			}#if end
5651
 
5652
		#檢查參數
5653
		#函式說明:
5654
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
5655
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5656
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
5657
		#$result["function"],當前執行的函式名稱.
5658
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
5659
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
5660
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
5661
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
5662
		#必填參數:
5663
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
5664
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
5665
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
5666
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("name","readOnly");
5667
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
5668
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string","string");
5669
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
5670
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
5671
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
5672
		$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
5673
		#可省略參數:
5674
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
5675
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="true";
5676
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
5677
		$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");
5678
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
5679
		$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");
5680
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
5681
		$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);
5682
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
5683
		unset($conf["variableCheck.checkArguments"]);
5684
 
5685
		#如果檢查失敗
5686
		if($checkResult["status"]=="false"){
5687
 
5688
			#設置執行不正常
5689
			$result["status"]="false";
5690
 
5691
			#程式停止執行
5692
			$result["error"]=$checkResult;
5693
 
5694
			#回傳結果
5695
			return $result;
5696
 
5697
			}#if end
5698
 
5699
		#如果檢查不通過
5700
		if($checkResult["passed"]=="false"){
5701
 
5702
			#設置執行不正常
5703
			$result["status"]="false";
5704
 
5705
			#程式停止執行
5706
			$result["error"]=$checkResult;
5707
 
5708
			#回傳結果
5709
			return $result;
5710
 
5711
			}#if end
5712
 
5713
		#如果其值爲 true
5714
		if($conf["trStart"]=="true"){
5715
 
5716
			#串接列開始
5717
			$result["content"]=$result["content"]."<tr>";
5718
 
5719
			}#if end
5720
 
5721
		#如果其值爲 true
5722
		if($conf["tdStart"]=="true"){
5723
 
5724
			#串接欄開始
5725
			$result["content"]=$result["content"]."<td>";
5726
 
5727
			}#if end
5728
 
5729
		#如果 $conf["formStart"] 等於 "true"
5730
		if($conf["formStart"]=="true"){
5731
 
5732
			#函式說明:
5733
			#表單開始
5734
			#回傳結果:
5735
			#$result,表單開始的語法
5736
			#必填參數:
5737
			$conf["form"]["start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容
5738
			#可省略參數:
5739
 
5740
			#如果 $conf["formName"] 有設置
5741
			if(isset($conf["formName"])){
5742
 
5743
				#過濾 $conf["formName"] 避免錯誤
5744
				#函式說明:
5745
				#處理字串避免網頁出錯
5746
				#回傳結果:
5747
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5748
				#$result["function"],當前執行的函數.
5749
				#$result["content"],爲處理好的字串.
5750
				#$result["error"],錯誤訊息陣列.
5751
				#必填參數:
5752
				$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["formName"];#爲要處理的字串
5753
				#可省略的參數:
5754
				$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
5755
					#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
5756
					#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
5757
				#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
5758
				$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
5759
				unset($conf["stringProcess::correctCharacter"]);
5760
 
5761
				#如果過濾 $conf["formName"] 失敗
5762
				if($correctCharacter["status"]=="false"){
5763
 
5764
					#設置執行失敗
5765
					$result["status"]="false";
5766
 
5767
					#設置執行錯誤訊息
5768
					$result["error"]=$correctCharacter;
5769
 
5770
					#回傳結果
5771
					return $result;
5772
 
5773
					}#if end
5774
 
5775
				#則設定其數值
5776
				$conf["form"]["start"]["name"]=$correctCharacter["content"];#爲該表單的名稱
5777
 
5778
				}#if end
5779
 
5780
			#如果 $conf["formMethod"] 有設置
5781
			if(isset($conf["formMethod"])){
5782
 
5783
				#則設定其數值
5784
				$conf["form"]["start"]["method"]=$conf["formMethod"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
5785
 
5786
				}#if end
5787
 
5788
			#如果 $conf["formTarget"] 有設定
5789
			if(isset($conf["formTarget"])){
5790
 
5791
				#則設定其數值
5792
				$conf["form"]["start"]["target"]=$conf["formTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
5793
 
5794
				}#if end
5795
 
5796
			#則設定其參數數值
5797
			$conf["form"]["start"]["tableStart"]="false";#爲該表單是否要以<table>開始。"true"爲是;
5798
 
5799
			#則設定其數值
5800
			#$conf["form"]["start"]["tableClass"]=$conf["tableClass"];#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
5801
			$formStart=form::start($conf["form"]["start"]);
5802
			unset($conf["form"]["start"]);
5803
 
5804
			#如果表單開始失敗
5805
			if($formStart["status"]=="false"){
5806
 
5807
				#設置執行失敗
5808
				$result["status"]="false";
5809
 
5810
				#設置執行錯誤訊息
5811
				$result["error"]=$formStart;
5812
 
5813
				#回傳結果
5814
				return $result;
5815
 
5816
				}#if end
5817
 
5818
			#串接表單開始的語法
5819
			$result["content"]=$result["content"].$formStart["content"];
5820
 
5821
			}#if end
5822
 
5823
		#如果$conf["readOnly"]沒有設定
5824
		if($conf["readOnly"]=="false"){
5825
 
5826
			#$conf["readOnly"]就爲空值
5827
			$conf["readOnly"]="";
5828
 
5829
			}#if end
5830
 
5831
		#如果$conf["readOnly"]有設定
5832
		if($conf["readOnly"]=="true"){
5833
 
5834
			#就設置 readonly 屬性
5835
			$conf["readOnly"]=" readonly = readonly ";
5836
 
5837
			}#if end
5838
 
5839
		#如果$conf["cols"]沒設定
5840
		if(!isset($conf["cols"])){
5841
 
5842
			#則$conf["cols"]爲空
5843
			$conf["cols"]="";
5844
 
5845
			}#if end
5846
 
5847
		#如果$conf["cols"]有設定
5848
		else{
5849
 
5850
			#則套用設定值
5851
			$conf["cols"]=" cols=".$conf["cols"];
5852
 
5853
			}#else end
5854
 
5855
		#如果$conf["rows"]沒設定
5856
		if(!isset($conf["rows"])){
5857
 
5858
			#則$conf["rows"]爲空
5859
			$conf["rows"]="";
5860
 
5861
			}#if end
5862
 
5863
		#如果$conf["rows"]有設定
5864
		else{
5865
 
5866
			#就套用設定值
5867
			$conf["rows"]=" rows=".$conf["rows"];
5868
 
5869
			}#else end
5870
 
5871
		#如果$conf["width"]沒設定
5872
		if(!isset($conf["width"])){
5873
 
5874
			#則$conf["width"]爲空值
5875
			$conf["width"]="";
5876
 
5877
			}#if end
5878
 
5879
		#如果$conf["width"]有設定
5880
		else{
5881
 
5882
			#則套用寬度的css設定值
5883
			$conf["width"]=" style=\"width:100%;\" ";
5884
 
5885
			}#else end
5886
 
5887
		#如果$conf["maxInputLength"]沒設定
5888
		if(!isset($conf["maxInputLength"])){
5889
 
5890
			#則$conf["maxInputLength"]爲空
5891
			$conf["maxInputLength"]="";
5892
 
5893
			}#if end
5894
 
5895
		#如果$conf["maxInputLength"]有設定
5896
		else{
5897
 
5898
			$conf["maxInputLength"]=" maxlength=".$conf["maxInputLength"];
5899
 
5900
			}#else end
5901
 
5902
		#初始化僅儲存css類別名稱的變數
5903
		$className=$conf["class"];
5904
 
5905
		#採用自定的css樣式
5906
		$conf["class"] = " class=".$conf["class"];
5907
 
5908
		#如果 $conf["jsActivitor"] 與 $conf["jsAction"] 皆有設定
5909
		if( isset($conf["jsActivitor"]) && isset($conf["jsAction"]) ){
5910
 
5911
			#則將設定值組合
5912
			$conf["jsCustom"]=" ".$conf["jsActivitor"]."=".$conf["jsAction"]." ";
5913
 
5914
			}#if end
5915
 
5916
		#如果 $conf["jsCustom"] 沒有設定
5917
		if(!isset($conf["jsCustom"])){
5918
 
5919
			#將其設爲空值
5920
			$conf["jsCustom"]="";
5921
 
5922
			}#if end
5923
 
5924
		#如果有設置 $conf["comment"]
5925
		if(isset($conf["comment"])){
5926
 
5927
			#函式說明:
5928
			#<div>標籤的開始到結束的區段
5929
			#回傳結果:
5930
			#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.
5931
			#$result["functin"],字串,當前函數的名稱.
5932
			#$result["error"],陣列,錯訊訊息.
5933
			#$result["content"],字串,<div>標籤的開始與設定語法.
5934
			#必填參數:
5935
			#$conf["contentArray"],字串陣列,要放入的內容陣列.
5936
			$conf["css.divSection"]["contentArray"]=array($conf["comment"]);
5937
			#可省略參數
5938
			#$conf["class"],字串,div區段要套用的css樣式.
5939
			$conf["css.divSection"]["class"]=$className;
5940
			$spanSection=css::spanSection($conf["css.divSection"]);
5941
			unset($conf["css.divSection"]);
5942
 
5943
			#如果 spanSection 建立失敗
5944
			if($spanSection["status"]=="false"){
5945
 
5946
				#設置執行失敗
5947
				$result["status"]="false";
5948
 
5949
				#設置執行錯誤訊息
5950
				$result["error"]=$spanSection;
5951
 
5952
				#回傳結果
5953
				return $result;
5954
 
5955
				}#if end
5956
 
5957
			#新增label,且套用css樣式.
5958
			$result["content"]=$result["content"]."<label for=\"".$conf["name"]."\" class=\"".$className."\" >".$conf["comment"]."</label>";
5959
 
5960
			}#if end
5961
 
5962
		#如果有設定 $conf["placeholder"]
5963
		if(isset($conf["placeholder"])){
5964
 
5965
			#設定 "placeholder" 屬性
5966
			$conf["placeholder"]=" placeholder=".$conf["placeholder"]." ";
5967
 
5968
			}#if end
5969
 
5970
		#反之
5971
		else{
5972
 
5973
			#設為 ""
5974
			$conf["placeholder"]="";
5975
 
5976
			}#else end
5977
 
5978
		#過濾 $conf["name"] 避免錯誤
5979
		#函式說明:
5980
		#處理字串避免網頁出錯
5981
		#回傳結果:
5982
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5983
		#$result["function"],當前執行的函數.
5984
		#$result["content"],爲處理好的字串.
5985
		#$result["error"],錯誤訊息陣列.
5986
		#必填參數:
5987
		$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["name"];#爲要處理的字串
5988
		#可省略的參數:
5989
		$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
5990
			#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
5991
			#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
5992
		#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
5993
		$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
5994
		unset($conf["stringProcess::correctCharacter"]);
5995
 
5996
		#如果過濾字串失敗
5997
		if($correctCharacter["status"]=="false"){
5998
 
5999
			#設置執行失敗
6000
			$result["status"]="false";
6001
 
6002
			#設置執行錯誤訊息
6003
			$result["error"]=$correctCharacter;
6004
 
6005
			#回傳結果
6006
			return $result;
6007
 
6008
			}#if end
6009
 
6010
		#置換過濾好了的$conf["name"]
6011
		$conf["name"]=$correctCharacter["content"];
6012
 
6013
		#如果 $conf["required"] 為 "true"
6014
		if($conf["required"]=="true"){
6015
 
6016
			#設置 "required" 屬性
6017
			$conf["required"]=" required=true ";
6018
 
6019
			}#if end
6020
 
6021
		#反之
6022
		else{
6023
 
6024
			#設置為空值
6025
			$conf["required"]="";
6026
 
6027
			}#else end
6028
 
6029
		#如果有設置 $conf["id"]
6030
		if(isset($conf["id"])){
6031
 
6032
			#產生id字串
6033
			$conf["id"]="id=\"".$conf["id"]."\"";
6034
 
6035
			}#if end
6036
 
6037
		#反之
6038
		else{
6039
 
6040
			#設為空字串
6041
			$conf["id"]="";
6042
 
6043
			}#else end
6044
 
6045
		#如果有設置 $conf["dataFormId"]
6046
		if(isset($conf["dataFormId"])){
226 liveuser 6047
 
3 liveuser 6048
			#設置 data-id 屬性
6049
			$conf["dataFormId"]="data-form-id=\"".$conf["dataFormId"]."\"";
226 liveuser 6050
 
3 liveuser 6051
			}#if end
226 liveuser 6052
 
6053
		#反之設置為空數值
3 liveuser 6054
		else{
226 liveuser 6055
 
3 liveuser 6056
			$conf["dataFormId"]="";
226 liveuser 6057
 
3 liveuser 6058
			}#else end
6059
 
6060
		#放置可以文字的區塊
6061
		$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>";
6062
 
6063
		#如果 $conf["formEnd"] 等於 "true"
6064
		if($conf["formEnd"]=="true"){
6065
 
6066
			#函式說明:
6067
			#表單結束
6068
			#回傳結果:
6069
			#$result,表單結束的語法
6070
			#必填參數:
6071
			#則設定其數值
6072
			$conf["form"]["end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。
6073
			$formEnd=form::end($conf["form"]["end"]);
6074
			unset($conf["form"]["end"]);
6075
 
6076
			#串接表單結束的語法
6077
			$result["content"]=$result["content"].$formEnd["content"];
6078
 
6079
			}#if end
6080
 
6081
		#如果其值爲 true
6082
		if($conf["tdEnd"]=="true"){
6083
 
6084
			#串接欄結束
6085
			$result["content"]=$result["content"]."</td>";
6086
 
6087
			}#if end
6088
 
6089
		#如果其值爲 true
6090
		if($conf["trEnd"]=="true"){
6091
 
6092
			#串接列結束
6093
			$result["content"]=$result["content"]."</tr>";
6094
 
6095
			}#if end
6096
 
6097
		#設置執行正常
6098
		$result["status"]="true";
6099
 
6100
		#印出表格的設定以及表單的目的、呈現的方式、傳送的方式。
6101
		return $result;
6102
 
6103
		}#function inputTextArea end
6104
 
6105
	/*
6106
	#函式說明:
6107
	#可以輸入密碼的表單
6108
	#回傳結果:
6109
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
6110
	#$result["function"],當前執行的函數.
6111
	#$result["error"],錯誤訊息陣列.
6112
	#$result["content"],按鈕語法.
6113
	#必填參數:
6114
	$conf["name"]="";#爲密碼輸入框的名稱,供接收端進行處理時的獨立名稱,也提供id.
6115
	#可省略參數:
6116
	#$conf["width"]="";#爲密碼輸入框的長度,預設無限制。
6117
	#$conf["maxInputLength"]="";#爲密碼輸入的長度限制,預設無限制。
6118
	#$conf["defaultValue"]="";#預設的密碼,不得為空
6119
	#$conf["class"]="";#爲要套用的css樣式,若省略,則會套用預設的 __qbpwcf_inputPasswordCssStyle 樣式,其屬性爲 "width:100%","font-size:30px","margin-left:auto;","margin-right:auto;"
6120
	#$conf["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。
6121
	#$conf["jsAction"]="";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
6122
	#$conf["autoFocus"],字串,是否為將填寫的指標移到該表單,"true"代表要,預設為"false".
6123
	#$conf["autoFocus"]="true";
6124
	#$conf["autocomplete"],字串,是否依據使用者過往輸入的記錄來提示可能要的輸入內容,"on"為啟用,"off"為停用,預設為"on".
6125
	#$conf["autocomplete"]="off";
6126
	#$conf["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
6127
	#$conf["required"]="true";
6128
	#$conf["comment"],字串,輸入方框上面要放哪些註解文字,亦即用label來呈現,同時指定"for"屬性的數值為當前"input"標籤的id,意即參數"name"的內容.
6129
	#$conf["comment"]="";
6130
	#$conf["placeholder"],字串,當沒有內容時要顯示的內容.
6131
	#$conf["placeholder"]="";
6132
	#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設為"false".
6133
	#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是",也可以看成列裏面的元素開始,預設為"false".
6134
	#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設為"false".
6135
	#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設為"false".
6136
	#$conf["formStart"]="true";#爲是否要以<form>開頭,"true"表示"是",也可以看成表單的開始,預設為"false".
6137
	#$conf["formAction"]="";#表單遞交的目的地,若$conf["formStart"]為"true",則該參數不能省略.
6138
	#$conf["formName"]="";#爲該表單的名稱
6139
	#$conf["formMethod"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
6140
	#$conf["formTarget"]="";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
6141
	#$conf["formEnd"]="true";#爲是否要以<form>結尾,"true"表示"是",也可以看成表單的結束,預設為"false".
6142
	#$conf["dataFormId"],字串,提供用於識別哪一張表單的data屬性名稱.
6143
	#$conf["dataFormId"]="";
6144
	#參考資料:
6145
	#無.
6146
	#備註:
6147
	#無.
6148
	*/
6149
	public static function inputPassword($conf){
6150
 
6151
		#初始化要回傳的內容
6152
		$result=array();
6153
 
6154
		#設置當前執行的函數
6155
		$result["function"]=__FUNCTION__;
6156
 
6157
		#初始化content樣式內容
6158
		$result["content"]="";
6159
 
6160
		#如果 $conf 不為陣列
6161
		if(gettype($conf)!="array"){
6162
 
6163
			#設置執行失敗
6164
			$result["status"]="false";
6165
 
6166
			#設置執行錯誤訊息
6167
			$result["error"][]="\$conf變數須為陣列形態";
6168
 
6169
			#如果傳入的參數為 null
6170
			if($conf==null){
6171
 
6172
				#設置執行錯誤訊息
6173
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
6174
 
6175
				}#if end
6176
 
6177
			#回傳結果
6178
			return $result;
6179
 
6180
			}#if end
6181
 
6182
		#檢查參數
6183
		#函式說明:
6184
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
6185
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
6186
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
6187
		#$result["function"],當前執行的函式名稱.
6188
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
6189
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
6190
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
6191
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
6192
		#必填參數:
6193
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
6194
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
6195
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
6196
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("name");
6197
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
6198
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string");
6199
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
6200
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
6201
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
6202
		$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
6203
		#可省略參數:
6204
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
6205
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="true";
6206
		#$conf["variableCheck.checkArguments"]["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或集合.
6207
		$conf["variableCheck.checkArguments"]["skipableVariableCanNotBeEmpty"]=array("defaultValue");
6208
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
6209
		$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");
6210
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
6211
		$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");
6212
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
6213
		$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);
6214
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
6215
		unset($conf["variableCheck.checkArguments"]);
6216
 
6217
		#如果檢查失敗
6218
		if($checkResult["status"]=="false"){
6219
 
6220
			#設置執行不正常
6221
			$result["status"]="false";
6222
 
6223
			#程式停止執行
6224
			$result["error"]=$checkResult;
6225
 
6226
			#回傳結果
6227
			return $result;
6228
 
6229
			}#if end
6230
 
6231
		#如果檢查不通過
6232
		if($checkResult["passed"]=="false"){
6233
 
6234
			#設置執行不正常
6235
			$result["status"]="false";
6236
 
6237
			#程式停止執行
6238
			$result["error"]=$checkResult;
6239
 
6240
			#回傳結果
6241
			return $result;
6242
 
6243
			}#if end
6244
 
6245
		#如果其值爲 true
6246
		if($conf["trStart"]=="true"){
6247
 
6248
			#串接列開始
6249
			$result["content"]=$result["content"]."<tr>";
6250
 
6251
			}#if end
6252
 
6253
		#如果其值爲 true
6254
		if($conf["tdStart"]=="true"){
6255
 
6256
			#串接欄開始
6257
			$result["content"]=$result["content"]."<td>";
6258
 
6259
			}#if end
6260
 
6261
		#如果 $conf["formStart"] 有設置
6262
		if(isset($conf["formStart"])){
6263
 
6264
			#如果 $conf["formStart"] 等於 "true"
6265
			if($conf["formStart"]=="true"){
6266
 
6267
				#函式說明:
6268
				#表單開始
6269
				#回傳結果:
6270
				#$result,表單開始的語法
6271
				#必填參數:
6272
				$conf["form"]["start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容
6273
				#可省略參數:
6274
 
6275
				#如果 $conf["formName"] 有設置
6276
				if(isset($conf["formName"])){
6277
 
6278
					#過濾 $conf["formName"] 避免錯誤
6279
					#函式說明:
6280
					#處理字串避免網頁出錯
6281
					#回傳結果:
6282
					#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
6283
					#$result["function"],當前執行的函數.
6284
					#$result["content"],爲處理好的字串.
6285
					#$result["error"],錯誤訊息陣列.
6286
					#必填參數:
6287
					$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["formName"];#爲要處理的字串
6288
					#可省略的參數:
6289
					$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
6290
						#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
6291
						#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
6292
					#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
6293
					$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
6294
					unset($conf["stringProcess::correctCharacter"]);
6295
 
6296
					#如果過濾 $conf["formName"] 失敗
6297
					if($correctCharacter["status"]=="false"){
6298
 
6299
						#設置執行失敗
6300
						$result["status"]="false";
6301
 
6302
						#設置執行錯誤訊息
6303
						$result["error"]=$correctCharacter;
6304
 
6305
						#回傳結果
6306
						return $result;
6307
 
6308
						}#if end
6309
 
6310
					#則設定其數值
6311
					$conf["form"]["start"]["name"]=$correctCharacter["content"];#爲該表單的名稱
6312
 
6313
					}#if end
6314
 
6315
				#如果 $conf["formMethod"] 有設置
6316
				if(isset($conf["formMethod"])){
6317
 
6318
					#則設定其數值
6319
					$conf["form"]["start"]["method"]=$conf["formMethod"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
6320
 
6321
					}#if end
6322
 
6323
				#如果 $conf["formTarget"] 有設定
6324
				if(isset($conf["formTarget"])){
6325
 
6326
					#則設定其數值
6327
					$conf["form"]["start"]["target"]=$conf["formTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
6328
 
6329
					}#if end
6330
 
6331
				#則設定其參數數值
6332
				$conf["form"]["start"]["tableStart"]="false";#爲該表單是否要以<table>開始。"true"爲是;
6333
 
6334
				#則設定其數值
6335
				#$conf["form"]["start"]["tableClass"]=$conf["tableClass"];#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
6336
				$formStart=form::start($conf["form"]["start"]);
6337
				unset($conf["form"]["start"]);
6338
 
6339
				#如果表單開始失敗
6340
				if($formStart["status"]=="false"){
6341
 
6342
					#設置執行失敗
6343
					$result["status"]="false";
6344
 
6345
					#設置執行錯誤訊息
6346
					$result["error"]=$formStart;
6347
 
6348
					#回傳結果
6349
					return $result;
6350
 
6351
					}#if end
6352
 
6353
				#串接表單開始的語法
6354
				$result["content"]=$result["content"].$formStart["content"];
6355
 
6356
				}#if end
6357
 
6358
			}#if end
6359
 
6360
		#如果 $conf["comment"] 有設置
6361
		if(isset($conf["comment"])){
6362
 
6363
			#新增註解,且套用css樣式.結尾換行.ok
6364
			$result["content"]=$result["content"]."<label name=\"".$conf["name"]."\" class=\"".$conf["class"]."\">".$conf["comment"]."</label>";
6365
 
6366
			}#if end
6367
 
6368
		#如果$conf["maxInputLength"]沒設定
6369
		if(!isset($conf["maxInputLength"])){
6370
 
6371
			#$conf["maxInputLength"]就爲空
6372
			$conf["maxInputLength"]="";
6373
 
6374
			}#if end
6375
 
6376
		#如果$conf["maxInputLength"]有設定
6377
		else{
6378
 
6379
			#就按照設定值
6380
			$conf["maxInputLength"]=" maxlength=".$conf["maxInputLength"];
6381
 
6382
			}#else end
6383
 
6384
		#如果$conf["width"]沒設定
6385
		if(!isset($conf["width"])){
6386
 
6387
			#則$conf["width"]爲空值
6388
			$conf["width"]="";
6389
 
6390
			}#if end
6391
 
6392
		#如果$conf["width"]有設定
6393
		else{
6394
 
6395
			#則套用寬度的css設定值
6396
			$conf["width"]=" style=\"width:100%;\" ";
6397
 
6398
			}#else end
6399
 
6400
		#如果$conf["defaultValue"]沒設定
6401
		if(!isset($conf["defaultValue"])){
6402
 
6403
			#則$conf["defaultValue"]爲空
6404
			$conf["defaultValue"]="";
6405
 
6406
			}#else end
6407
 
6408
		#反之則設定該屬性
6409
		else{
6410
 
6411
			$conf["defaultValue"]=" value = ".$conf["defaultValue"];
6412
 
6413
			}#else end
6414
 
6415
		#如果$conf["class"]沒設定
6416
		if(!isset($conf["class"])){
6417
 
6418
			#則套用預設的css樣式
6419
			$conf["class"]=" class = __inputPasswordCssStyle ";
6420
 
6421
			}#if end
6422
 
6423
		#如果$conf["class"]有設定
6424
		else{
6425
 
6426
			#則套用樣式
6427
			$conf["class"]=" class = \"".$conf["class"]."\"";
6428
 
6429
			}#else end
6430
 
6431
		#如果 $conf["jsActivitor"] 與 $conf["jsAction"] 皆有設定
6432
		if( isset($conf["jsActivitor"]) && isset($conf["jsAction"]) ){
6433
 
6434
			#則將設定值組合
6435
			$conf["jsCustom"]=" ".$conf["jsActivitor"]."=".$conf["jsAction"]." ";
6436
 
6437
			}#if end
6438
 
6439
		#如果 $conf["jsCustom"] 沒有設定
6440
		if(!isset($conf["jsCustom"])){
6441
 
6442
			#將其設爲空值
6443
			$conf["jsCustom"]="";
6444
 
6445
			}#if end
6446
 
6447
		#如果 $conf["placeholder"] 有設定
6448
		if(isset($conf["placeholder"])){
6449
 
6450
			#設定 "placeholder" 屬性
6451
			$conf["placeholder"]=" placeholder=".$conf["placeholder"]." ";
6452
 
6453
			}#if end
6454
 
6455
		#反之設為 ""
6456
		else{
6457
 
6458
			$conf["placeholder"]="";
6459
 
6460
			}#else end
6461
 
6462
		#如果 $conf["required"] 為"true"
6463
		if($conf["required"]=="true"){
6464
 
6465
			#設置 "required" 屬性
6466
			$conf["required"]="required=true";
6467
 
6468
			}#if end
6469
 
6470
		#反之
6471
		else{
6472
 
6473
			#設為空值
6474
			$conf["required"]="";
6475
 
6476
			}#else end
6477
 
6478
		#過濾 $conf["name"] 避免錯誤
6479
		#函式說明:
6480
		#處理字串避免網頁出錯
6481
		#回傳結果:
6482
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
6483
		#$result["function"],當前執行的函數.
6484
		#$result["content"],爲處理好的字串.
6485
		#$result["error"],錯誤訊息陣列.
6486
		#必填參數:
6487
		$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["name"];#爲要處理的字串
6488
		#可省略的參數:
6489
		$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
6490
			#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
6491
			#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
6492
		#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
6493
		$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
6494
		unset($conf["stringProcess::correctCharacter"]);
6495
 
6496
		#如果過濾字串失敗
6497
		if($correctCharacter["status"]=="false"){
6498
 
6499
			#設置執行失敗
6500
			$result["status"]="false";
6501
 
6502
			#設置執行錯誤訊息
6503
			$result["error"]=$correctCharacter;
6504
 
6505
			#回傳結果
6506
			return $result;
6507
 
6508
			}#if end
6509
 
6510
		#置換過濾好了的$conf["name"]
6511
		$conf["name"]=$correctCharacter["content"];
6512
 
6513
		#如果 $conf["autoFocus"] 為 "true"
6514
		if($conf["autoFocus"]=="true"){
6515
 
6516
			#設置自動選取
6517
			$conf["autoFocus"]=" autofocus='ture' ";
6518
 
6519
			}#if end
6520
 
6521
		#反之
6522
		else{
6523
 
6524
			#設為 ""
6525
			$conf["autoFocus"]="";
6526
 
6527
			}#else end
6528
 
6529
		#如果有設置 $conf["dataFormId"]
6530
		if(isset($conf["dataFormId"])){
226 liveuser 6531
 
3 liveuser 6532
			#設置 data-id 屬性
6533
			$conf["dataFormId"]="data-form-id=\"".$conf["dataFormId"]."\"";
226 liveuser 6534
 
3 liveuser 6535
			}#if end
226 liveuser 6536
 
6537
		#反之設置為空數值
3 liveuser 6538
		else{
226 liveuser 6539
 
3 liveuser 6540
			$conf["dataFormId"]="";
226 liveuser 6541
 
3 liveuser 6542
			}#else end
226 liveuser 6543
 
3 liveuser 6544
		#放置可以輸入密碼的表單
6545
		$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"].">";
6546
 
6547
		#如果 $conf["formEnd"] 等於 "true"
6548
		if($conf["formEnd"]=="true"){
6549
 
6550
			#函式說明:
6551
			#表單結束
6552
			#回傳結果:
6553
			#$result,表單結束的語法
6554
			#必填參數:
6555
			#則設定其數值
6556
			$conf["form"]["end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。
6557
			$formEnd=form::end($conf["form"]["end"]);
6558
			unset($conf["form"]["end"]);
6559
 
6560
			#串接表單結束的語法
6561
			$result["content"]=$result["content"].$formEnd["content"];
6562
 
6563
			}#if end
6564
 
6565
		#如果其值爲 true
6566
		if($conf["tdEnd"]=="true"){
6567
 
6568
			#串接欄結束
6569
			$result["content"]=$result["content"]."</td>";
6570
 
6571
			}#if end
6572
 
6573
		#如果其值爲 true
6574
		if($conf["trEnd"]=="true"){
6575
 
6576
			#串接列結束
6577
			$result["content"]=$result["content"]."</tr>";
6578
 
6579
			}#if end
6580
 
6581
		#設置執行成功
6582
		$result["status"]="true";
6583
 
6584
		#回傳語法
6585
		return $result;
6586
 
6587
		}#function inputPassword end
6588
 
6589
	/*
6590
	#函式說明:
6591
	#建立下拉式表單
6592
	#回傳結果:
6593
	#$result["status"],執行是否正常,"true"代表正常,"false"代表失敗.
6594
	#$result["error"],錯誤訊息陣列.
6595
	#$result["content"],語法內容.
6596
	#$result["function"],設置當前執行的函式
6597
	#必填參數:
6598
	#$conf["name"],字串,爲該下拉式選單的名稱
6599
	$conf["name"]="";
6600
	#$conf["sendValue"],陣列值,爲每個選項的實際傳送的數值,e.g. $sendValue = array("a","b","c","d","e");
6601
	$conf["sendValue"]=array();
6602
	#可省略參數:
6603
	#$conf["formName"]="";#該表單的名稱
6604
	#$conf["outputValue"]=array();#爲陣列值,爲每個選項的實際顯示的數值, e.g. $outputValue = array("p","o","i","t","e");,如果沒有設定,則其值同$conf["sendValue"]。
6605
	#$conf["viewCount"]="";#為一次要顯示幾個選項,預設爲顯示一個。
6606
	#$conf["defaultValue"]="";#為預設選取那個選項,須爲$conf["sendValue"]其中的一個值。
6607
	#$conf["class"]="";#爲要套用的class樣式,預設為 "__qbpwcf_inputSelect".
6608
	#$conf["readOnly"],字串,內容是否唯獨,預設為"false",不唯獨,"true"為唯獨.
6609
	#$conf["readOnly"]="true";
6610
	#$conf["comment"],字串,輸入方框上面要放哪些註解文字,亦即用label來呈現,同時指定"for"屬性的數值為當前"input"標籤的id,意即參數"name"的內容.
6611
	#$conf["comment"]="";
6612
	#$conf["formAction"]="";#爲該下拉式表單要傳送到的位置
6613
	#$conf["actionTarget"]="_self";#要如何接收網頁的迴應,預設爲_self
6614
	#$conf["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsAction"]參數。
6615
	#$conf["jsAction"]="";#爲該js是要做什麼,可以是"document.forms.formName.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
6616
	#$conf["independentForm"]="false";#是否該下拉式選單就是一個完整的表單,"true"代表是,"false"代表不是,預設為"true"
6617
	#$conf["hiddenVar"],字串陣列,隱藏的變數名稱陣列.
6618
	#$conf["hiddenVar"]=array("");
6619
	#$conf["hiddanVarValue"],字串陣列,隱藏變數的數值內容.
6620
	#$conf["hiddenVarValue"]=array("");
6621
	#$conf["fixedPosition"],字串,該下拉式選單是否要隨着滾軸滾動時固定在畫面上特定的位置,於設為"false",代表不固定,"true"代表要固定.
6622
	#$conf["fixedPosition"]="true";
6623
	#$conf["fixedPosition.fixedTop"],字串,該選單距離畫面頂部的固定距離,預設為0px.
6624
	#$conf["fixedPosition.fixedTop"]="0px";
6625
	#$conf["fixedPosition.fixedLeft"],字串,該選單距離畫面左方的固定距離.預設為0px.
6626
	#$conf["fixedPosition.fixedLeft"]="0px";
6627
	#$conf["fixedPosition.emptySpaceSize"],字串,表單位置要放置多寬的空白,於設為40px.
6628
	#$conf["fixedPosition.emptySpaceSize"]="40px";
6629
	#$conf["tableStartClass"]="__withoutBorder";#表格要採用的css樣式,預設為__withoutBorder,__withoutBorder為沒有框線的樣式,__withBorder為有樣式的表格.
6630
	#$conf["tableStart"]="true";#爲是否要以<table>結尾,"true"表示"是"。也可以看作表格結束。
6631
	#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
6632
	#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
6633
	#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
6634
	#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
6635
	#$conf["tableEnd"]="true";#爲是否要以</table>結尾,"true"表示"是"。也可以看作表格結束。
6636
	#$conf["dataFormId"],字串,提供用於識別哪一張表單的data屬性名稱.
6637
	#$conf["dataFormId"]="";
6638
	#參考資料:
6639
	#無.
6640
	#備註:
6641
	#$_SERVER["PHP_SELF"]為php檔案自己
6642
	#http://stackoverflow.com/questions/833032/submit-is-not-a-function-in-javascript => form的id重複會導致"document.testForm.submit()"的javaScript語法出錯。
6643
	#http://stackoverflow.com/questions/14622124/all-of-commands-for-submit-in-onchange-select-not-work => documents.forms.formName.submit() 才會將正確的表單送出。
6644
	#http://stackoverflow.com/questions/368813/html-form-readonly-select-tag-input => 禁止改變選項,且也不會傳送該名稱表單
6645
	#tableStart & tableEnd 要補上
6646
	*/
6647
	public static function inputSelect(&$conf){
6648
 
6649
		#預設要回傳的數值
6650
		$result=array();
6651
 
6652
		#初始化要回傳的語法
6653
		$result["content"]="";
6654
 
6655
		#設置當前執行的函式
6656
		$result["function"]=__FUNCTION__;
6657
 
6658
		#如果 $conf 不為陣列
6659
		if(gettype($conf)!="array"){
6660
 
6661
			#設置執行失敗
6662
			$result["status"]="false";
6663
 
6664
			#設置執行錯誤訊息
6665
			$result["error"][]="\$conf變數須為陣列形態";
6666
 
6667
			#如果傳入的參數為 null
6668
			if($conf==null){
6669
 
6670
				#設置執行錯誤訊息
6671
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
6672
 
6673
				}#if end
6674
 
6675
			#回傳結果
6676
			return $result;
6677
 
6678
			}#if end
6679
 
6680
		#檢查參數
6681
		#函式說明:
6682
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
6683
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
6684
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
6685
		#$result["function"],當前執行的函式名稱.
6686
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
6687
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
6688
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
6689
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
6690
		#必填參數:
6691
		#$conf["form.checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
6692
		$conf["form.checkArguments"]["varInput"]=&$conf;
6693
		#$conf["form.checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
6694
		$conf["form.checkArguments"]["mustBeFilledVariableName"][]="name";
6695
		$conf["form.checkArguments"]["mustBeFilledVariableName"][]="sendValue";
6696
		#$conf["form.checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
6697
		$conf["form.checkArguments"]["mustBeFilledVariableType"][]="string";
6698
		$conf["form.checkArguments"]["mustBeFilledVariableType"][]="array";
6699
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
6700
		$conf["form.checkArguments"]["referenceVarKey"]="form.checkArguments";
6701
		#可省略參數:
6702
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
6703
		#$conf["canBeEmptyString"]="false";
6704
		#$conf["form.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
6705
		$conf["form.checkArguments"]["skipableVariableName"][]="tableStart";
6706
		$conf["form.checkArguments"]["skipableVariableName"][]="formAction";
6707
		$conf["form.checkArguments"]["skipableVariableName"][]="formName";
6708
		$conf["form.checkArguments"]["skipableVariableName"][]="hiddenVar";
6709
		$conf["form.checkArguments"]["skipableVariableName"][]="hiddenVarValue";
6710
		$conf["form.checkArguments"]["skipableVariableName"][]="fixedPosition";
6711
		$conf["form.checkArguments"]["skipableVariableName"][]="fixedPosition.top";
6712
		$conf["form.checkArguments"]["skipableVariableName"][]="fixedPosition.left";
6713
		$conf["form.checkArguments"]["skipableVariableName"][]="trStart";
6714
		$conf["form.checkArguments"]["skipableVariableName"][]="tdStart";
6715
		$conf["form.checkArguments"]["skipableVariableName"][]="defaultValue";
6716
		$conf["form.checkArguments"]["skipableVariableName"][]="viewCount";
6717
		$conf["form.checkArguments"]["skipableVariableName"][]="outputValue";
6718
		$conf["form.checkArguments"]["skipableVariableName"][]="jsActivitor";
6719
		$conf["form.checkArguments"]["skipableVariableName"][]="jsAction";
6720
		$conf["form.checkArguments"]["skipableVariableName"][]="jsCustom";
6721
		$conf["form.checkArguments"]["skipableVariableName"][]="readOnly";
6722
		$conf["form.checkArguments"]["skipableVariableName"][]="comment";
6723
		$conf["form.checkArguments"]["skipableVariableName"][]="class";
6724
		$conf["form.checkArguments"]["skipableVariableName"][]="tdEnd";
6725
		$conf["form.checkArguments"]["skipableVariableName"][]="trtdEnd";
6726
		$conf["form.checkArguments"]["skipableVariableName"][]="formAction";
6727
		$conf["form.checkArguments"]["skipableVariableName"][]="independentForm";
6728
		$conf["form.checkArguments"]["skipableVariableName"][]="tableEnd";
6729
		$conf["form.checkArguments"]["skipableVariableName"][]="actionTarget";
6730
		$conf["form.checkArguments"]["skipableVariableName"][]="dataFormId";
6731
		#$conf["form.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
6732
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6733
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6734
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6735
		$conf["form.checkArguments"]["skipableVariableType"][]="array";
6736
		$conf["form.checkArguments"]["skipableVariableType"][]="array";
6737
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6738
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6739
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6740
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6741
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6742
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6743
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6744
		$conf["form.checkArguments"]["skipableVariableType"][]="array";
6745
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6746
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6747
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6748
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6749
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6750
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6751
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6752
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6753
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6754
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6755
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6756
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6757
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
6758
		#$conf["form.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
6759
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6760
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6761
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="  ";
6762
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6763
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6764
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6765
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6766
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6767
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6768
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6769
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=" ";
6770
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="1";
6771
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="\$conf[\"sendValue\"]";
6772
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6773
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6774
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=" ";
6775
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=" ";
6776
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=" ";
6777
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="__qbpwcf_inputSelect";
6778
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6779
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6780
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6781
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="true";
6782
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6783
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="_self";
6784
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
6785
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
6786
		$conf["form.checkArguments"]["canBeEmptyString"]="false";
6787
		$checkResult=variableCheck::checkArguments($conf["form.checkArguments"]);
6788
		unset($conf["form.checkArguments"]);
6789
 
6790
		#如果$checkResult["status"] 等於 "false"
6791
		#意即如果檢查出錯
6792
		if($checkResult["status"]=="false"){
6793
 
6794
			#設置錯誤識別
6795
			$result["status"]="false";
6796
 
6797
			#設置錯誤訊息
6798
			$result["error"]=$checkResult;
6799
 
6800
			#回傳結果
6801
			return $result;
6802
 
6803
			}#if end
6804
 
6805
		#如果$checkResult["passed"] 等於 "false"
6806
		#意即如果檢查出錯
6807
		if($checkResult["passed"]=="false"){
6808
 
6809
			#設置錯誤識別
6810
			$result["status"]="false";
6811
 
6812
			#設置錯誤訊息
6813
			$result["error"]=$checkResult;
6814
 
6815
			#回傳結果
6816
			return $result;
6817
 
6818
			}#if end
6819
 
6820
		#如果 $conf["tableStart"] 有設置
6821
		if(isset($conf["tableStart"])){
6822
 
6823
			#如果 $conf["tableStart"] 等於 "true"
6824
			if($conf["tableStart"]=="true"){
6825
 
6826
				#函式說明:
6827
				#表格開始,可以設定表格的厚度和位置
6828
				#回傳結果:
6829
				#$result,表格開始的語法
6830
				#必填寫的參數:
6831
				$conf["table.start"]["class"]=$conf["tableStartClass"];#爲表格的css樣式,若為"",則代表不套用css樣式;若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
6832
				$tableStart=table::start($conf["table.start"]);
6833
				unset($conf["table.start"]);
6834
 
6835
				#如果表格開始失敗
6836
				if($tableStart["status"]=="false"){
6837
 
6838
					#設置錯誤識別
6839
					$result["status"]="false";
6840
 
6841
					#設置錯誤訊息
6842
					$result["error"]=$tableStart;
6843
 
6844
					#回傳結果
6845
					return $result;
6846
 
6847
					}#if end
6848
 
6849
				#串接表格開始的字串
6850
				$result["content"]=$result["content"].$tableStart["content"];
6851
 
6852
				}#if end
6853
 
6854
			}#if end
6855
 
6856
		#如果 $conf["formAction"] 有設定
6857
		if(isset($conf["formAction"])){
6858
 
6859
			#如果 $conf["actionTarget"] 有設定
6860
			if(isset($conf["actionTarget"])){
6861
 
6862
				#指派設定值
6863
				$conf["form.start"]["target"]=$conf["actionTarget"];
6864
 
6865
				}#if end
6866
 
6867
			#如果 $conf["formName"] 沒有設置
6868
			if(!isset($conf["formName"])){
6869
 
6870
				#預設爲空數值
6871
				$conf["formName"]="  ";
6872
 
6873
				}#if end
6874
 
6875
			#反之 $conf["formName"] 有設置
6876
			else{
6877
 
6878
				#過濾 $conf["formName"] 避免錯誤
6879
				#函式說明:
6880
				#處理字串避免網頁出錯
6881
				#回傳結果:
6882
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
6883
				#$result["function"],當前執行的函數.
6884
				#$result["content"],爲處理好的字串.
6885
				#$result["error"],錯誤訊息陣列.
6886
				#必填參數:
6887
				$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["formName"];#爲要處理的字串
6888
				#可省略的參數:
6889
				$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
6890
					#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
6891
					#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
6892
				#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
6893
				$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
6894
				unset($conf["stringProcess::correctCharacter"]);
6895
 
6896
				#如果過濾 $conf["formName"] 失敗
6897
				if($correctCharacter["status"]=="false"){
6898
 
6899
					#設置執行失敗
6900
					$result["status"]="false";
6901
 
6902
					#設置執行錯誤訊息
6903
					$result["error"]=$correctCharacter;
6904
 
6905
					#回傳結果
6906
					return $result;
6907
 
6908
					}#if end
6909
 
6910
				#則設定其數值
6911
				$conf["formName"]=$correctCharacter["content"];#爲該表單的名稱
6912
 
6913
				}#if end
6914
 
6915
			#函式說明:
6916
			#表單開始
6917
			#回傳結果:
6918
			#$result,表單開始的語法
6919
			#必填參數:
6920
			$conf["form.start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容
6921
			#可省略參數:
6922
			$conf["form.start"]["name"]=$conf["formName"];#爲該表單的名稱
6923
			#$conf["method"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
6924
			#$conf["target"]="";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
6925
			#$conf["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是;
6926
			#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100%
6927
			$formStart=form::start($conf["form.start"]);
6928
			unset($conf["form.start"]);
6929
 
6930
			#如果表單開始失敗
6931
			if($formStart["status"]=="false"){
6932
 
6933
				#設置錯誤識別
6934
				$result["status"]="false";
6935
 
6936
				#設置錯誤訊息
6937
				$result["error"]=$formStart;
6938
 
6939
				#回傳結果
6940
				return $result;
6941
 
6942
				}#if end
6943
 
6944
			#串接表單開始
6945
			$result["content"]=$result["content"].$formStart["content"];
6946
 
6947
			}#if end
6948
 
6949
		#如果 $conf["hiddenVar"]與$conf["hiddenVarValue"]皆有設置
6950
		if(isset($conf["hiddenVar"]) && isset($conf["hiddenVarValue"])){
6951
 
6952
			#且陣列元素數目相同
6953
			if(count($conf["hiddenVar"])==count($conf["hiddenVarValue"])){
6954
 
6955
				#建立隱藏的表單
6956
				#傳送多個隱藏表單的資訊
6957
				#回傳的數值:
6958
				#$result,語法
6959
				#$result["sendedArrayName"],
6960
				#$result["sendedArrayValue"],
6961
				#$result["sendedArrayCount"],
6962
				#必填參數:
6963
				$conf["form"]["inputMutiHidden"]["nameArray"]=$conf["hiddenVar"];#欲傳送的隱藏陣列變數名稱
6964
				$conf["form"]["inputMutiHidden"]["valueArray"]=$conf["hiddenVarValue"];#欲傳送的隱藏陣列變數數值
6965
				$hiddenVar=form::inputMultiHidden($conf["form"]["inputMutiHidden"]);
6966
				unset($conf["form"]);
6967
 
6968
				#如果隱藏的表單變數設置失敗
6969
				if($hiddenVar["status"]=="false"){
6970
 
6971
					#設置錯誤識別
6972
					$result["status"]="false";
6973
 
6974
					#設置錯誤訊息
6975
					$result["error"]=$hiddenVar;
6976
 
6977
					#回傳結果
6978
					return $result;
6979
 
6980
					}#if end
6981
 
6982
				#接上語法
6983
				$result["content"]=$result["content"].$hiddenVar["content"];
6984
 
6985
				}#if end
6986
 
6987
			}#if end
6988
 
6989
		#如果有設定 $conf["fixedPosition"]
6990
		if(isset($conf["fixedPosition"])){
6991
 
6992
			#如果 $conf["fixedPosition"] 等於 "true"
6993
			if($conf["fixedPosition"]=="true"){
6994
 
6995
				#如果 $conf["fixedPosition.fixedTop"] 沒有設置
6996
				if(!isset($conf["fixedPosition.fixedTop"])){
6997
 
6998
					#於設為0px
6999
					$conf["fixedPosition.fixedTop"]="0px";
7000
 
7001
					}#if end
7002
 
7003
				#如果 $conf["fixedPosition.fixedLeft"] 沒有設置
7004
				if(!isset($conf["fixedPosition.fixedLeft"])){
7005
 
7006
					#預設為0px
7007
					$conf["fixedPosition.fixedLeft"]="0px";
7008
 
7009
					}#if end
7010
 
7011
				#如果 $conf["fixedPosition.emptySpaceSize"] 沒有設置
7012
				if(!isset($conf["fixedPosition.emptySpaceSize"])){
7013
 
7014
					#預設為40px
7015
					$conf["fixedPosition.emptySpaceSize"]="40px";
7016
 
7017
					}#if end
7018
 
7019
				#建立按鈕的預設css樣式
7020
				#函式說明:
7021
				#創建 css 樣式
7022
				#必填參數:
7023
				$conf_createCssStyle["cssStyleName"]="__simpleButtonLinkDefaultButtonFixedPositionCssStyle";#為該 css 樣式的名稱,不能以數字開頭。
7024
				$conf_createCssStyle["attributes"]=array("width","height","font-size","text-align","position","top","left");#為屬性名稱,須為陣列值
7025
				$conf_createCssStyle["content"]=array("100%",(50*$conf["viewCount"])."px","30","center","fixed",$conf["fixedPosition.fixedTop"],$conf["fixedPosition.fixedLeft"]);#為屬性值,須為陣列值
7026
				$css=css::createCssStyle($conf_createCssStyle);
7027
				unset($conf_createCssStyle);
7028
 
7029
				#如果建立css樣式失敗
7030
				if($css["status"]=="false"){
7031
 
7032
					#設置錯誤識別
7033
					$result["status"]="false";
7034
 
7035
					#設置錯誤訊息
7036
					$result["error"]=$css;
7037
 
7038
					#回傳結果
7039
					return $result;
7040
 
7041
					}#if end
7042
 
7043
				#串接css樣式
7044
				$result["content"]=$result["content"].$css["content"];
7045
 
7046
				#函式說明:
7047
				#創建 css 樣式
7048
				#回傳結果:
7049
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
7050
				#$result["css"],css設定內容
7051
				#$result["function"],當前執行的函數
7052
				#$result["error"],函式錯誤訊息,若爲""則表示沒有錯誤
7053
				#必填參數:
7054
				$conf["css.createCssStyle"]["cssStyleName"]="emptyStyle";#為該 css 樣式的名稱,不能以數字開頭。
7055
				$conf["css.createCssStyle"]["attributes"]=array("font-size");#為屬性名稱,須為陣列值
7056
				$conf["css.createCssStyle"]["content"]=array("40px");#為屬性值,須為陣列值
7057
				$css=css::createCssStyle($conf["css.createCssStyle"]);
7058
				unset($conf["css.createCssStyle"]);
7059
 
7060
				#如果建立css樣式失敗
7061
				if($css["status"]=="false"){
7062
 
7063
					#設置錯誤識別
7064
					$result["status"]="false";
7065
 
7066
					#設置錯誤訊息
7067
					$result["error"]=$css;
7068
 
7069
					#回傳結果
7070
					return $result;
7071
 
7072
					}#if end
7073
 
7074
				#串接css樣式
7075
				$result["content"]=$result["content"].$css["content"];
7076
 
7077
				}#if end
7078
 
7079
			}#if end
7080
 
7081
		#如果 $conf["trStart"] 存在
7082
		if(isset($conf["trStart"])){
7083
 
7084
			#如果其值爲 true
7085
			if($conf["trStart"]=="true"){
7086
 
7087
				#串接列開始
7088
				$result["content"]=$result["content"]."<tr>";
7089
 
7090
				}#if end
7091
 
7092
			}#if end
7093
 
7094
		#如果 $conf["tdStart"] 存在
7095
		if(isset($conf["tdStart"])){
7096
 
7097
			#如果其值爲 true
7098
			if($conf["tdStart"]=="true"){
7099
 
7100
				#串接欄開始
7101
				$result["content"]=$result["content"]."<td>";
7102
 
7103
				}#if end
7104
 
7105
			}#if end
7106
 
7107
		#如果 $conf["viewCount"] 有設定
7108
		if(isset($conf["viewCount"])){
7109
 
7110
			#就按照設定值
7111
			$conf["viewCount"]=" size = ".$conf["viewCount"]." ";
7112
 
7113
			}#if end
7114
 
7115
		#反之
7116
		else{
7117
 
7118
			#設為""
7119
			$conf["viewCount"]="";
7120
 
7121
			}#else end
7122
 
7123
		#如果有設定 $conf["fixedPosition"]
7124
		if(isset($conf["fixedPosition"])){
7125
 
7126
			#如果 $conf["fixedPosition"] 等於 "true"
7127
			if($conf["fixedPosition"]=="true"){
7128
 
7129
				#用固定位置的樣式
7130
				$conf["class"]="__simpleButtonLinkDefaultButtonFixedPositionCssStyle";
7131
 
7132
				}#if end
7133
 
7134
			}#if end
7135
 
7136
		#設定要套用的css類別樣式
7137
		$conf["class"] = " class='".$conf["class"]."' ";
7138
 
7139
		#如果 $conf["jsActivitor"] 與 $conf["jsAction"] 皆有設定
7140
		if( isset($conf["jsActivitor"]) && isset($conf["jsAction"]) ){
7141
 
7142
			#處理jsAction裏面不能有空格
7143
			#函式說明:
7144
			#處理字串避免網頁出錯
7145
			#回傳結果:
7146
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
7147
			#$result["function"],當前執行的函數.
7148
			#$result["content"],爲處理好的字串.
7149
			#$result["error"],錯誤訊息陣列.
226 liveuser 7150
			#$result["argu"],使用的參數.
3 liveuser 7151
			#必填參數:
7152
			$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["jsAction"];#爲要處理的字串
7153
			#可省略的參數:
7154
			$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array(" ");#爲被選擇要處理的字串/字元,須爲陣列值。
7155
				#若不設定則預設爲要將這些字串作替換 ("<",">","=","//","'","$","%","&","|","/*","*","#","\"").
7156
				#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
7157
			#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
7158
			$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
7159
			unset($conf["stringProcess::correctCharacter"]);
7160
 
7161
			#如果處理失敗
7162
			if($correctCharacter["status"]==="false"){
7163
 
7164
				#設置執行失敗
7165
				$result["status"]="false";
7166
 
7167
				#設置執行錯誤
7168
				$result["error"]=$correctCharacter;
7169
 
7170
				#回傳結果
7171
				return $result;
7172
 
226 liveuser 7173
				}#if end
3 liveuser 7174
 
7175
			#get new jsAction
7176
			$conf["jsAction"]=$correctCharacter["content"];#爲該表單的名稱
7177
 
7178
			#則將設定值組合
7179
			$conf["jsCustom"]=" ".$conf["jsActivitor"]."=".$conf["jsAction"]." ";
7180
 
7181
			}#if end
7182
 
7183
		#如果 $conf["readOnly"] 為 "true"
7184
		if($conf["readOnly"]=="true"){
7185
 
7186
			#設置為 " readonly "
7187
			$conf["readOnly"]=" disabled ";
7188
 
7189
			}#if end
7190
 
7191
		#反之
7192
		else{
7193
 
7194
			#設置為 ""
7195
			$conf["readOnly"]="";
7196
 
7197
			}#else end
7198
 
7199
		#過濾 $conf["name"] 避免錯誤
7200
		#函式說明:
7201
		#處理字串避免網頁出錯
7202
		#回傳結果:
7203
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
7204
		#$result["function"],當前執行的函數.
7205
		#$result["content"],爲處理好的字串.
7206
		#$result["error"],錯誤訊息陣列.
7207
		#必填參數:
7208
		$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["name"];#爲要處理的字串
7209
		#可省略的參數:
7210
		$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
7211
			#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
7212
			#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
7213
		#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
7214
		$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
7215
		unset($conf["stringProcess::correctCharacter"]);
7216
 
7217
		#如果過濾字串失敗
7218
		if($correctCharacter["status"]=="false"){
7219
 
7220
			#設置執行失敗
7221
			$result["status"]="false";
7222
 
7223
			#設置執行錯誤訊息
7224
			$result["error"]=$correctCharacter;
7225
 
7226
			#回傳結果
7227
			return $result;
7228
 
7229
			}#if end
7230
 
7231
		#置換過濾好了的$conf["name"]
7232
		$conf["name"]=$correctCharacter["content"];
7233
 
7234
		#建立註解文字用的預設css樣式
7235
		#函式說明:
7236
		#創建 css 樣式
7237
		#必填參數:
7238
		$conf_createCssStyle["cssStyleName"]="__commentDefaultCssStyle";#為該 css 樣式的名稱,不能以數字開頭。
7239
		$conf_createCssStyle["attributes"]=array("font-size","text-align");#為屬性名稱,須為陣列值
7240
		$conf_createCssStyle["content"]=array("30","center");#為屬性值,須為陣列值
7241
		$css=css::createCssStyle($conf_createCssStyle);
7242
		unset($conf_createCssStyle);
7243
 
7244
		#如果建立css樣式失敗
7245
		if($css["status"]=="false"){
7246
 
7247
			#設置錯誤識別
7248
			$result["status"]="false";
7249
 
7250
			#設置錯誤訊息
7251
			$result["error"]=$css;
7252
 
7253
			#回傳結果
7254
			return $result;
7255
 
7256
			}#if end
7257
 
7258
		#串接css樣式
7259
		$result["content"]=$result["content"].$css["content"];
7260
 
7261
		#如果有設置 $conf["dataFormId"]
7262
		if(isset($conf["dataFormId"])){
226 liveuser 7263
 
3 liveuser 7264
			#設置 data-id 屬性
7265
			$conf["dataFormId"]="data-form-id=\"".$conf["dataFormId"]."\"";
226 liveuser 7266
 
3 liveuser 7267
			}#if end
226 liveuser 7268
 
7269
		#反之設置為空數值
3 liveuser 7270
		else{
226 liveuser 7271
 
3 liveuser 7272
			$conf["dataFormId"]="";
226 liveuser 7273
 
3 liveuser 7274
			}#else end
7275
 
7276
		#下拉式表單的名稱
7277
		$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"].">";
7278
 
7279
		#將有幾個選項的數目放進 $count
7280
		$count=count($conf["sendValue"]);
7281
 
7282
		#n個選項跑n次
7283
		for($i=0;$i<$count;$i++){
7284
 
7285
			#如果選項的內容等於預設的數值,
7286
			if($conf["defaultValue"]==$conf["sendValue"][$i]){
7287
 
7288
				#增加可用的選項,且設為預設選項。
7289
				$result["content"]=$result["content"]."<option value = \"".$conf["sendValue"][$i]."\" selected='selected'>".$conf["outputValue"][$i]."</option>";
7290
 
7291
				}#if end
7292
 
7293
			#反之則照常處理
7294
			else{
7295
 
7296
				#謹增加可用的選項
7297
				$result["content"]=$result["content"]."<option value = \"".$conf["sendValue"][$i]."\">".$conf["outputValue"][$i]."</option>";
7298
 
7299
				}#else end
7300
 
7301
			}#回圈結束
7302
 
7303
		#選項結束
7304
		$result["content"]=$result["content"]."</select>";
7305
 
7306
		#如果有設定 $conf["fixedPosition"]
7307
		if(isset($conf["fixedPosition"])){
7308
 
7309
			#如果 $conf["fixedPosition"] 等於 "true"
7310
			if($conf["fixedPosition"]=="true"){
7311
 
7312
				#空白區塊
7313
				#函式說明:
7314
				#<span>區塊:
7315
				#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.
7316
				#$result["functin"],字串,當前函數的名稱.
7317
				#$result["error"],陣列,錯訊訊息.
7318
				#$result["content"],字串,<div>標籤的開始與設定語法.
7319
				#必填參數:
7320
				#$conf["css.spanSection"]["contentArray"],字串陣列,要放入的內容陣列.
7321
				$conf["css.spanSection"]["contentArray"]=array("&nbsp;");
7322
				#可省略參數
7323
				#$conf["css.spanSection"]["class"],字串,div區段要套用的css樣式.
7324
				$conf["css.spanSection"]["class"]="emptyStyle";
7325
				$spanSection=css::spanSection($conf["css.spanSection"]);
7326
				unset($conf["css.spanSection"]);
7327
 
7328
				#如果 spanSection 建立失敗
7329
				if($spanSection["status"]==="false"){
7330
 
7331
					#設置錯誤識別
7332
					$result["status"]="false";
7333
 
7334
					#設置錯誤訊息
7335
					$result["error"]=$spanSection;
7336
 
7337
					#回傳結果
7338
					return $result;
7339
 
7340
					}#if end
7341
 
7342
				#串接 spanSection
7343
				$result["content"]=$result["content"].$spanSection["content"];
7344
 
7345
				}#if end
7346
 
7347
			}#if end
7348
 
7349
		#如果 $conf["tdEnd"] 存在
7350
		if(isset($conf["tdEnd"])){
7351
 
7352
			#如果其值爲 true
7353
			if($conf["tdEnd"]==="true"){
7354
 
7355
				#欄結束
7356
				$result["content"]=$result["content"]."</td>";
7357
 
7358
				}#if end
7359
 
7360
			}#if end
7361
 
7362
		#如果 $conf["trtdEnd"] 存在
7363
		if(isset($conf["trEnd"])){
7364
 
7365
			#如果其值爲 true
7366
			if($conf["trEnd"]==="true"){
7367
 
7368
				#列結束
7369
				$result["content"]=$result["content"]."</tr>";
7370
 
7371
				}#if end
7372
 
7373
			}#if end
7374
 
7375
		#如果 $conf["formAction"] 有設定
7376
		if(isset($conf["formAction"])){
7377
 
7378
			#如果 $conf["independentForm"] 等於 "true"
7379
			if($conf["independentForm"]=="true"){
7380
 
7381
				#函式說明:
7382
				#表單結束
7383
				#回傳結果:
7384
				#$result,表單結束的語法
7385
				#必填參數:
7386
				$conf["form.end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。
7387
				$formEnd=form::end($conf["form.end"]);
7388
				unset($conf["form.end"]);
7389
 
7390
				#如果表單結束失敗
7391
				if($formEnd["status"]==="false"){
7392
 
7393
					#設置錯誤識別
7394
					$result["status"]="false";
7395
 
7396
					#設置錯誤訊息
7397
					$result["error"]=$formEnd;
7398
 
7399
					#回傳結果
7400
					return $result;
7401
 
7402
					}#if end
7403
 
7404
				#串接表單結束
7405
				$result["content"]=$result["content"].$formEnd["content"];
7406
 
7407
				}#if end
7408
 
7409
			}#if end
7410
 
7411
		#如果 $conf["tableEnd"] 有設置
7412
		if(isset($conf["tableEnd"])){
7413
 
7414
			#如果 $conf["tableEnd"] 等於 "true"
7415
			if($conf["tableEnd"]=="true"){
7416
 
7417
				#函式說明:
7418
				#表格結束
7419
				#回傳結果:
7420
				#表格結束的語法
7421
				$result["content"]=$result["content"].table::end();
7422
 
7423
				}#if end
7424
 
7425
			}#if end
7426
 
7427
		#設置執行正常
7428
		$result["status"]="true";
7429
 
7430
		#印出表格的設定以及表單的目的、呈現的方式、傳送的方式。
7431
		return $result;
7432
 
7433
		}#function inputSelect end
7434
 
7435
	/*
7436
	#函式說明:
7437
	#建立下拉式表單,選項會用全螢幕的div區塊呈現.
7438
	#回傳結果:
7439
	#$result["status"],執行是否正常,"true"代表正常,"false"代表失敗.
7440
	#$result["error"],錯誤訊息陣列.
7441
	#$result["content"],語法內容.
7442
	#$result["function"],設置當前執行的函式
7443
	#必填參數:
7444
	#$conf["name"],字串,爲該下拉式選單的名稱
7445
	$conf["name"]="";
7446
	#$conf["sendValue"],陣列值,爲每個選項的實際傳送的數值,e.g. $sendValue = array("a","b","c","d","e");
7447
	$conf["sendValue"]=array();
7448
	#可省略參數:
7449
	#$conf["formName"]="";#該表單的名稱,不能跟 "name" 一樣,會造成關閉選單後,選單也跟着消失的問題.
7450
	#$conf["outputValue"]=array();#爲陣列值,爲每個選項的實際顯示的數值, e.g. $outputValue = array("p","o","i","t","e");,如果沒有設定,則其值同$conf["sendValue"]。
7451
	#$conf["viewCount"]="";#為一次要顯示幾個選項,預設爲顯示一個。
7452
	#$conf["defaultValue"]="";#為預設選取那個選項,須爲$conf["sendValue"]其中的一個值。
7453
	#$conf["class"]="";#爲要套用的class樣式,預設為 "__qbpwcf_inputSelect".
7454
	#$conf["readOnly"],字串,內容是否唯獨,預設為"false",不唯獨,"true"為唯獨.
7455
	#$conf["readOnly"]="true";
7456
	#$conf["comment"],字串,輸入方框上面要放哪些註解文字,亦即用label來呈現,同時指定"for"屬性的數值為當前"input"標籤的id,意即參數"name"的內容.
7457
	#$conf["comment"]="";
7458
	#$conf["formAction"]="";#爲該下拉式表單要傳送到的位置
7459
	#$conf["actionTarget"]="_self";#要如何接收網頁的迴應,預設爲_self
7460
	#$conf["independentForm"]="false";#是否該下拉式選單就是一個完整的表單,"true"代表是,"false"代表不是,預設為"true"
7461
	#$conf["hiddenVar"],字串陣列,隱藏的變數名稱陣列.
7462
	#$conf["hiddenVar"]=array("");
7463
	#$conf["hiddanVarValue"],字串陣列,隱藏變數的數值內容.
7464
	#$conf["hiddenVarValue"]=array("");
7465
	#$conf["fixedPosition"],字串,該下拉式選單是否要隨着滾軸滾動時固定在畫面上特定的位置,於設為"false",代表不固定,"true"代表要固定.
7466
	#$conf["fixedPosition"]="true";
7467
	#$conf["fixedPosition.fixedTop"],字串,該選單距離畫面頂部的固定距離,預設為0px.
7468
	#$conf["fixedPosition.fixedTop"]="0px";
7469
	#$conf["fixedPosition.fixedLeft"],字串,該選單距離畫面左方的固定距離.預設為0px.
7470
	#$conf["fixedPosition.fixedLeft"]="0px";
7471
	#$conf["fixedPosition.emptySpaceSize"],字串,表單位置要放置多寬的空白,於設為40px.
7472
	#$conf["fixedPosition.emptySpaceSize"]="40px";
7473
	#$conf["tableStartClass"]="__withoutBorder";#表格要採用的css樣式,預設為__withoutBorder,__withoutBorder為沒有框線的樣式,__withBorder為有樣式的表格.
7474
	#$conf["tableStart"]="true";#爲是否要以<table>結尾,"true"表示"是"。也可以看作表格結束。
7475
	#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
7476
	#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
7477
	#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
7478
	#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
7479
	#$conf["tableEnd"]="true";#爲是否要以</table>結尾,"true"表示"是"。也可以看作表格結束。
7480
	#$conf["closeIcon"],字串,關閉滾軸選單的按鈕圖示,預設為"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpvc2I9Imh0dHA6Ly93d3cub3BlbnN3YXRjaGJvb2sub3JnL3VyaS8yMDA5L29zYiIKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgd2lkdGg9IjEwNS43ODE3Mm1tIgogICBoZWlnaHQ9IjEwNS4zNDM0NG1tIgogICB2aWV3Qm94PSIwIDAgMTA1Ljc4MTcyIDEwNS4zNDM0NCIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnOCIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45MitkZXZlbCB1bmtub3duIgogICBzb2RpcG9kaTpkb2NuYW1lPSJjbG9zZUljb24uc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzMiI+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzMTUiCiAgICAgICBvc2I6cGFpbnQ9InNvbGlkIj4KICAgICAgPHN0b3AKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzAwMDAwMDtzdG9wLW9wYWNpdHk6MTsiCiAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgaWQ9InN0b3A0MzEzIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0MzkxIgogICAgICAgeD0iLTAuMDY4OTc3MTAzIgogICAgICAgd2lkdGg9IjEuMTM3OTU0MiIKICAgICAgIHk9Ii0wLjA3NTI5OTk5MyIKICAgICAgIGhlaWdodD0iMS4xNTA2Ij4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIxLjAwNjI1NDMiCiAgICAgICAgIGlkPSJmZUdhdXNzaWFuQmx1cjQzOTMiIC8+CiAgICA8L2ZpbHRlcj4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0NDM4IgogICAgICAgeD0iLTAuMDIyNjIyOTA0IgogICAgICAgd2lkdGg9IjEuMDQ1MjQ1OCIKICAgICAgIHk9Ii0wLjAyNTU1NTYxNCIKICAgICAgIGhlaWdodD0iMS4wNTExMTEyIj4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIwLjIyMTcwNjAxIgogICAgICAgICBpZD0iZmVHYXVzc2lhbkJsdXI0NDQwIiAvPgogICAgPC9maWx0ZXI+CiAgICA8ZmlsdGVyCiAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICBzdHlsZT0iY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOnNSR0IiCiAgICAgICBpZD0iZmlsdGVyNDQ0NiIKICAgICAgIHg9Ii0wLjAyMzIzMjg0NyIKICAgICAgIHdpZHRoPSIxLjA0NjQ2NTgiCiAgICAgICB5PSItMC4wMjQ4MTk1NDUiCiAgICAgICBoZWlnaHQ9IjEuMDQ5NjM5MSI+CiAgICAgIDxmZUdhdXNzaWFuQmx1cgogICAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICAgIHN0ZERldmlhdGlvbj0iMC4yMjIwOTQyOCIKICAgICAgICAgaWQ9ImZlR2F1c3NpYW5CbHVyNDQ0OCIgLz4KICAgIDwvZmlsdGVyPgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMS40IgogICAgIGlua3NjYXBlOmN4PSIxMzAuNTY4NjgiCiAgICAgaW5rc2NhcGU6Y3k9IjIwMS4zNDg0NSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0iZzQ0ODgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtcm90YXRpb249IjAiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTYwMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI4MzYiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiIC8+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNSI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MC4wNTQwMzQsLTg5LjA0MzUyMikiPgogICAgPGcKICAgICAgIGlkPSJnNDQ4OCIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDIuNjU1MDQ0MywwLDAsMi44NTQ2OTA3LC0xMTAuOTk1MTgsLTMyNi45MjY1MikiPgogICAgICA8ZWxsaXBzZQogICAgICAgICByeT0iMTYuMDM1OTI3IgogICAgICAgICByeD0iMTcuNTA1ODg0IgogICAgICAgICBjeT0iMTY0LjE2NTUxIgogICAgICAgICBjeD0iODAuNTc4NzIiCiAgICAgICAgIGlkPSJwYXRoMzQ3NCIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MC4zO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC4yNjQ5OTk5OTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxO2ZpbHRlcjp1cmwoI2ZpbHRlcjQzOTEpO2ltYWdlLXJlbmRlcmluZzphdXRvIiAvPgogICAgICA8cmVjdAogICAgICAgICB0cmFuc2Zvcm09InJvdGF0ZSgtNDIuODA4OTU1KSIKICAgICAgICAgcnk9IjAiCiAgICAgICAgIHk9IjE3NC41NTY0OSIKICAgICAgICAgeD0iLTY3LjM5ODc1OCIKICAgICAgICAgaGVpZ2h0PSIyLjE1MjIwNjQiCiAgICAgICAgIHdpZHRoPSIyOS4yNzk2NDgiCiAgICAgICAgIGlkPSJyZWN0NDQxMyIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MTtmaWxsOiNmZmZmMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjA7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MTtmaWx0ZXI6dXJsKCNmaWx0ZXI0NDQ2KSIgLz4KICAgICAgPHJlY3QKICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoLTEzOS4wMzQ0MikiCiAgICAgICAgIHJ5PSIwIgogICAgICAgICB5PSItNzMuMDUwOTQ5IgogICAgICAgICB4PSItMTgyLjk2MjUyIgogICAgICAgICBoZWlnaHQ9IjIuMTUyMjA2NCIKICAgICAgICAgd2lkdGg9IjI5LjI3OTY0OCIKICAgICAgICAgaWQ9InJlY3Q0NDEzLTMiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDojZmZmZjAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjE7ZmlsdGVyOnVybCgjZmlsdGVyNDQzOCkiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K".
7481
	#$conf["closeIcon"]="";
7482
	#$conf["valNotSend"],字串,如果選擇的選項數值為何,就不傳送表單.
7483
	#$conf["valNotSend"]="";
7484
	#$conf["dataFormId"],字串,提供用於識別哪一張表單的data屬性名稱.
7485
	#$conf["dataFormId"]="";
7486
	#參考資料:
7487
	#http://stackoverflow.com/questions/833032/submit-is-not-a-function-in-javascript => form的id重複會導致"document.testForm.submit()"的javaScript語法出錯。
7488
	#http://stackoverflow.com/questions/14622124/all-of-commands-for-submit-in-onchange-select-not-work => documents.forms.formName.submit() 才會將正確的表單送出。
7489
	#http://stackoverflow.com/questions/368813/html-form-readonly-select-tag-input => 禁止改變選項,且也不會傳送該名稱表單
7490
	#備註:
7491
	#$_SERVER["PHP_SELF"]為php檔案自己
7492
	#在手機網頁瀏覽器不支援.
7493
	#tableStart & tableEnd 要補上
7494
	*/
7495
	public static function scrollingList(&$conf){
7496
 
7497
		#初始化要回傳的結果
7498
		$result=array();
7499
 
7500
		#取得當前執行的函數名稱
7501
		$result["function"]=__FUNCTION__;
7502
 
7503
		#如果沒有參數
7504
		if(func_num_args()==0){
7505
 
7506
			#設置執行失敗
7507
			$result["status"]="false";
7508
 
7509
			#設置執行錯誤訊息
7510
			$result["error"]="函數".$result["function"]."需要參數";
7511
 
7512
			#回傳結果
7513
			return $result;
7514
 
7515
			}#if end
7516
 
7517
		#取得參數
7518
		$result["argu"]=$conf;
7519
 
7520
		#如果 $conf 不為陣列
7521
		if(gettype($conf)!=="array"){
7522
 
7523
			#設置執行失敗
7524
			$result["status"]="false";
7525
 
7526
			#設置執行錯誤訊息
7527
			$result["error"][]="\$conf變數須為陣列形態";
7528
 
7529
			#如果傳入的參數為 null
7530
			if($conf===null){
7531
 
7532
				#設置執行錯誤訊息
7533
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
7534
 
7535
				}#if end
7536
 
7537
			#回傳結果
7538
			return $result;
7539
 
7540
			}#if end
7541
 
7542
		#如果有設置close icon
7543
		if(isset($conf["closeIcon"])){
7544
 
7545
			#另存路徑
7546
			$closeIcon=$conf["closeIcon"];
7547
 
7548
			#卸除不被 form::inputSelect 接受的參數
7549
			unset($conf["closeIcon"]);
7550
 
7551
			}#if end
7552
 
7553
		#反之
7554
		else{
7555
 
7556
			#用預設的 close icon
7557
			$closeIcon="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpvc2I9Imh0dHA6Ly93d3cub3BlbnN3YXRjaGJvb2sub3JnL3VyaS8yMDA5L29zYiIKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgd2lkdGg9IjEwNS43ODE3Mm1tIgogICBoZWlnaHQ9IjEwNS4zNDM0NG1tIgogICB2aWV3Qm94PSIwIDAgMTA1Ljc4MTcyIDEwNS4zNDM0NCIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnOCIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45MitkZXZlbCB1bmtub3duIgogICBzb2RpcG9kaTpkb2NuYW1lPSJjbG9zZUljb24uc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzMiI+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzMTUiCiAgICAgICBvc2I6cGFpbnQ9InNvbGlkIj4KICAgICAgPHN0b3AKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzAwMDAwMDtzdG9wLW9wYWNpdHk6MTsiCiAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgaWQ9InN0b3A0MzEzIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0MzkxIgogICAgICAgeD0iLTAuMDY4OTc3MTAzIgogICAgICAgd2lkdGg9IjEuMTM3OTU0MiIKICAgICAgIHk9Ii0wLjA3NTI5OTk5MyIKICAgICAgIGhlaWdodD0iMS4xNTA2Ij4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIxLjAwNjI1NDMiCiAgICAgICAgIGlkPSJmZUdhdXNzaWFuQmx1cjQzOTMiIC8+CiAgICA8L2ZpbHRlcj4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0NDM4IgogICAgICAgeD0iLTAuMDIyNjIyOTA0IgogICAgICAgd2lkdGg9IjEuMDQ1MjQ1OCIKICAgICAgIHk9Ii0wLjAyNTU1NTYxNCIKICAgICAgIGhlaWdodD0iMS4wNTExMTEyIj4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIwLjIyMTcwNjAxIgogICAgICAgICBpZD0iZmVHYXVzc2lhbkJsdXI0NDQwIiAvPgogICAgPC9maWx0ZXI+CiAgICA8ZmlsdGVyCiAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICBzdHlsZT0iY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOnNSR0IiCiAgICAgICBpZD0iZmlsdGVyNDQ0NiIKICAgICAgIHg9Ii0wLjAyMzIzMjg0NyIKICAgICAgIHdpZHRoPSIxLjA0NjQ2NTgiCiAgICAgICB5PSItMC4wMjQ4MTk1NDUiCiAgICAgICBoZWlnaHQ9IjEuMDQ5NjM5MSI+CiAgICAgIDxmZUdhdXNzaWFuQmx1cgogICAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICAgIHN0ZERldmlhdGlvbj0iMC4yMjIwOTQyOCIKICAgICAgICAgaWQ9ImZlR2F1c3NpYW5CbHVyNDQ0OCIgLz4KICAgIDwvZmlsdGVyPgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMS40IgogICAgIGlua3NjYXBlOmN4PSIxMzAuNTY4NjgiCiAgICAgaW5rc2NhcGU6Y3k9IjIwMS4zNDg0NSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0iZzQ0ODgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtcm90YXRpb249IjAiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTYwMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI4MzYiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiIC8+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNSI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MC4wNTQwMzQsLTg5LjA0MzUyMikiPgogICAgPGcKICAgICAgIGlkPSJnNDQ4OCIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDIuNjU1MDQ0MywwLDAsMi44NTQ2OTA3LC0xMTAuOTk1MTgsLTMyNi45MjY1MikiPgogICAgICA8ZWxsaXBzZQogICAgICAgICByeT0iMTYuMDM1OTI3IgogICAgICAgICByeD0iMTcuNTA1ODg0IgogICAgICAgICBjeT0iMTY0LjE2NTUxIgogICAgICAgICBjeD0iODAuNTc4NzIiCiAgICAgICAgIGlkPSJwYXRoMzQ3NCIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MC4zO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC4yNjQ5OTk5OTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxO2ZpbHRlcjp1cmwoI2ZpbHRlcjQzOTEpO2ltYWdlLXJlbmRlcmluZzphdXRvIiAvPgogICAgICA8cmVjdAogICAgICAgICB0cmFuc2Zvcm09InJvdGF0ZSgtNDIuODA4OTU1KSIKICAgICAgICAgcnk9IjAiCiAgICAgICAgIHk9IjE3NC41NTY0OSIKICAgICAgICAgeD0iLTY3LjM5ODc1OCIKICAgICAgICAgaGVpZ2h0PSIyLjE1MjIwNjQiCiAgICAgICAgIHdpZHRoPSIyOS4yNzk2NDgiCiAgICAgICAgIGlkPSJyZWN0NDQxMyIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MTtmaWxsOiNmZmZmMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjA7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MTtmaWx0ZXI6dXJsKCNmaWx0ZXI0NDQ2KSIgLz4KICAgICAgPHJlY3QKICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoLTEzOS4wMzQ0MikiCiAgICAgICAgIHJ5PSIwIgogICAgICAgICB5PSItNzMuMDUwOTQ5IgogICAgICAgICB4PSItMTgyLjk2MjUyIgogICAgICAgICBoZWlnaHQ9IjIuMTUyMjA2NCIKICAgICAgICAgd2lkdGg9IjI5LjI3OTY0OCIKICAgICAgICAgaWQ9InJlY3Q0NDEzLTMiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDojZmZmZjAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjE7ZmlsdGVyOnVybCgjZmlsdGVyNDQzOCkiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K";
7558
 
7559
			}#else end
7560
 
7561
		#如果有設置 $conf["valNotSend"]
7562
		if(isset($conf["valNotSend"])){
7563
 
7564
			#設置不傳送表單的js語法
7565
			$valNotSend=
7566
			"
7567
				//如果表單的數值為 ".$conf["valNotSend"]."
7568
				if(clickedValue==='".$conf["valNotSend"]."'){
7569
 
7570
					//結束動作
7571
					return true;
7572
 
7573
					}//if end
7574
			";
7575
 
7576
			}#if end
7577
 
7578
		#反之
7579
		else{
7580
 
7581
			#設為空值
7582
			$valNotSend="";
7583
 
7584
			}#else end
7585
 
7586
		#卸除不被 form::inputSelect 接受的參數
7587
		unset($conf["valNotSend"]);
7588
 
7589
		#如果有設置 formName
7590
		if(isset($conf["formName"])){
7591
 
7592
			#如果 formName 跟 name 一樣
7593
			if($conf["formName"]===$conf["name"]){
7594
 
7595
				#增加 formName 的名稱
7596
				$conf["formName"]=$conf["formName"]."FormName";
7597
 
7598
				}#if end
7599
 
7600
			}#if end
7601
 
7602
		#函式說明:
7603
		#建立下拉式表單
7604
		#回傳結果:
7605
		#$result["status"],執行是否正常,"true"代表正常,"false"代表失敗.
7606
		#$result["error"],錯誤訊息陣列.
7607
		#$result["content"],語法內容.
7608
		#$result["function"],設置當前執行的函式
7609
		#必填參數:
7610
		#$conf["name"],字串,爲該下拉式選單的名稱
7611
		#$conf["name"]="";
7612
		#$conf["sendValue"],陣列值,爲每個選項的實際傳送的數值,e.g. $sendValue = array("a","b","c","d","e");
7613
		#$conf["sendValue"]=array();
7614
		#可省略參數:
7615
		#$conf["formName"]="";#該表單的名稱
7616
		#$conf["outputValue"]=array();#爲陣列值,爲每個選項的實際顯示的數值, e.g. $outputValue = array("p","o","i","t","e");,如果沒有設定,則其值同$conf["sendValue"]。
7617
		#$conf["viewCount"]="";#為一次要顯示幾個選項,預設爲顯示一個。
7618
		#$conf["defaultValue"]="";#為預設選取那個選項,須爲$conf["sendValue"]其中的一個值。
7619
		#$conf["class"]="";#爲要套用的class樣式,預設為 "__qbpwcf_inputSelect".
7620
		#$conf["readOnly"],字串,內容是否唯獨,預設為"false",不唯獨,"true"為唯獨.
7621
		#$conf["readOnly"]="true";
7622
		#$conf["comment"],字串,輸入方框上面要放哪些註解文字,亦即用label來呈現,同時指定"for"屬性的數值為當前"input"標籤的id,意即參數"name"的內容.
7623
		#$conf["comment"]="";
7624
		#$conf["formAction"]="";#爲該下拉式表單要傳送到的位置
7625
		#$conf["actionTarget"]="_self";#要如何接收網頁的迴應,預設爲_self
7626
		#$conf["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsAction"]參數。
7627
		#$conf["jsAction"]="";#爲該js是要做什麼,可以是"document.forms.formName.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
7628
		#$conf["independentForm"]="true";#是否該下拉式選單就是一個完整的表單,"true"代表是,"false"代表不是,預設為"true"
7629
		#$conf["hiddenVar"],字串陣列,隱藏的變數名稱陣列.
7630
		#$conf["hiddenVar"]=array("");
7631
		#$conf["hiddanVarValue"],字串陣列,隱藏變數的數值內容.
7632
		#$conf["hiddenVarValue"]=array("");
7633
		#$conf["fixedPosition"],字串,該下拉式選單是否要隨着滾軸滾動時固定在畫面上特定的位置,於設為"false",代表不固定,"true"代表要固定.
7634
		#$conf["fixedPosition"]="true";
7635
		#$conf["fixedPosition.fixedTop"],字串,該選單距離畫面頂部的固定距離,預設為0px.
7636
		#$conf["fixedPosition.fixedTop"]="0px";
7637
		#$conf["fixedPosition.fixedLeft"],字串,該選單距離畫面左方的固定距離.預設為0px.
7638
		#$conf["fixedPosition.fixedLeft"]="0px";
7639
		#$conf["fixedPosition.emptySpaceSize"],字串,表單位置要放置多寬的空白,於設為40px.
7640
		#$conf["fixedPosition.emptySpaceSize"]="40px";
7641
		#$conf["tableStartClass"]="__withoutBorder";#表格要採用的css樣式,預設為__withoutBorder,__withoutBorder為沒有框線的樣式,__withBorder為有樣式的表格.
7642
		#$conf["tableStart"]="true";#爲是否要以<table>結尾,"true"表示"是"。也可以看作表格結束。
7643
		#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
7644
		#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
7645
		#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
7646
		#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
7647
		#$conf["tableEnd"]="true";#爲是否要以</table>結尾,"true"表示"是"。也可以看作表格結束。
226 liveuser 7648
 
3 liveuser 7649
		#如果有設置 $conf["dataFormId"]
7650
		if(isset($conf["dataFormId"])){
226 liveuser 7651
 
3 liveuser 7652
			#設置 data-id 屬性
7653
			$conf["dataFormId"]=$conf["dataFormId"];
226 liveuser 7654
 
3 liveuser 7655
			}#if end
226 liveuser 7656
 
3 liveuser 7657
		#備註:
7658
		#$_SERVER["PHP_SELF"]為php檔案自己
7659
		#參考資料來源:
7660
		#http://stackoverflow.com/questions/833032/submit-is-not-a-function-in-javascript => form的id重複會導致"document.testForm.submit()"的javaScript語法出錯。
7661
		#http://stackoverflow.com/questions/14622124/all-of-commands-for-submit-in-onchange-select-not-work => documents.forms.formName.submit() 才會將正確的表單送出。
7662
		#http://stackoverflow.com/questions/368813/html-form-readonly-select-tag-input => 禁止改變選項,且也不會傳送該名稱表單
7663
		#tableStart & tableEnd 要補上
7664
		$inputSelect=form::inputSelect($conf);
7665
 
7666
		#如果建立失敗
7667
		if($inputSelect["content"]==="false"){
226 liveuser 7668
 
3 liveuser 7669
			#設置執行失敗
7670
			$result["status"]="false";
226 liveuser 7671
 
3 liveuser 7672
			#設置錯誤訊息
7673
			$result["error"]=$inputSelect;
226 liveuser 7674
 
3 liveuser 7675
			#回傳結果
7676
			return $result;
226 liveuser 7677
 
3 liveuser 7678
			}#if end
7679
 
7680
		#將$conf["name"]進行處理,避免js錯誤
7681
		#函式說明:
7682
		#處理字串避免網頁出錯
7683
		#回傳結果:
7684
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
7685
		#$result["function"],當前執行的函數.
7686
		#$result["content"],爲處理好的字串.
7687
		#$result["error"],錯誤訊息陣列.
7688
		#必填參數:
7689
		$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["name"];#爲要處理的字串
7690
		#可省略的參數:
7691
		$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*","#","\"","-");#爲被選擇要處理的字串/字元,須爲陣列值。
7692
			#若不設定則預設爲要將這些字串作替換 ("<",">","=","//","'","$","%","&","|","/*","*","#","\"").
7693
			#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
7694
		#$conf["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
7695
		$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
7696
		unset($conf["stringProcess::correctCharacter"]);
7697
 
7698
		#如果處理失敗
7699
		if($correctCharacter["status"]==="false"){
226 liveuser 7700
 
3 liveuser 7701
			#設置執行失敗
7702
			$result["status"]="false";
226 liveuser 7703
 
3 liveuser 7704
			#設置錯誤訊息
7705
			$result["error"]=$correctCharacter;
226 liveuser 7706
 
3 liveuser 7707
			#回傳結果
7708
			return $result;
226 liveuser 7709
 
3 liveuser 7710
			}#if end
7711
 
7712
		#比對名稱是否符合規則
7713
		if($conf["name"]!==$correctCharacter["content"]){
226 liveuser 7714
 
3 liveuser 7715
			#設置執行失敗
7716
			$result["status"]="false";
226 liveuser 7717
 
3 liveuser 7718
			#設置錯誤訊息
7719
			$result["error"]=$correctCharacter;
226 liveuser 7720
 
3 liveuser 7721
			#設置額外錯誤訊息
7722
			$result["error"][]=$conf["name"]." 不是合法的參數";
226 liveuser 7723
 
3 liveuser 7724
			#回傳結果
7725
			return $result;
226 liveuser 7726
 
3 liveuser 7727
			}#if end
7728
 
7729
		#另存表單的名稱
7730
		$name=$conf["name"];
7731
 
7732
		#設置用js傳送表單的動作
7733
		$sendForm=
7734
		"
7735
			return false;
7736
		";
7737
		if(isset($conf["independentForm"])){
7738
			$independentForm=$conf["independentForm"];
7739
			if($independentForm==="true"){
7740
				if(isset($conf["formName"]) && isset($conf["formAction"])){
7741
					$sendForm=
7742
						"
7743
						document.forms.".$conf["formName"].".submit();
7744
						";
7745
					}#if end
7746
				}#if end
7747
			}#if end
7748
		unset($conf);
7749
 
7750
		#如果建立失敗
7751
		if($inputSelect["status"]==="false"){
7752
 
7753
			#設置執行失敗
7754
			$result["status"]="false";
7755
 
7756
			#設置錯誤訊息
7757
			$result["error"]=$inputSelect;
7758
 
7759
			#回傳結果
7760
			return $result;
7761
 
7762
			}#if end
7763
 
7764
		#取得下拉式選單的語法
7765
		$result["content"]=$inputSelect["content"];
7766
 
7767
		#建立 scrollingList() 用的js
7768
		#函式說明:
7769
		#將要執行的script語法透過該函式執行(會在程式外層用<script></script>包起來).
7770
		#回傳結果:
7771
		#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
7772
		#$result["error"],錯誤訊息陣列
7773
		#$result["function"],當前執行的函數名稱
7774
		#$result["content"],要執行的javaScript語法
7775
		#必填參數:
7776
		#$conf["script"],字串,要執行的javaScript語法.
7777
		$conf["javaScript::toScript"]["script"]=
7778
		"
7779
		//取得下拉式選單元素
7780
		var ".$name."=document.getElementById('".$name."');
7781
 
7782
		//將下拉式選單綁定'mousedown'事件,
7783
		var scrollingListMousedownEvent = ".$name.".addEventListener('mousedown',function(event){
7784
 
7785
			//debug
7786
			console.log('mousedown event start');
7787
 
7788
			//取消預設按下滑鼠的效果
7789
			event.preventDefault();
7790
 
7791
			//停止擴散事件
7792
			event.stopPropagation();
7793
 
7794
			//debug
7795
			console.log('mousedown event end');
7796
 
7797
			});
7798
 
7799
		//將下拉式選單綁定'mouseup'事件,
7800
		var scrollingListMouseupEvent = ".$name.".addEventListener('mouseup',function(event){
7801
 
7802
			//debug
7803
			console.log('mouseup event start');
7804
 
7805
			//取消預設滑鼠放開的效果
7806
			event.preventDefault();
7807
 
7808
			//停止擴散事件
7809
			event.stopPropagation();
7810
 
7811
			//debug
7812
			console.log('mouseup event end');
7813
 
7814
			});
7815
 
7816
		//將下拉式選單綁定'ontouchstart'事件,
7817
		var scrollingListTouchStartEvent = ".$name.".addEventListener('ontouchstart',function(event){
7818
 
7819
			//debug
7820
			console.log('ontouch event start');
7821
 
7822
			//取消預設觸碰的效果
7823
			event.preventDefault();
7824
 
7825
			//停止擴散事件
7826
			event.stopPropagation();
7827
 
7828
			//debug
7829
			console.log('ontouch event end');
7830
 
7831
			});
7832
 
7833
		//將下拉式選單綁定'ontouchend'事件,
7834
		var scrollingListTouchEndEvent = ".$name.".addEventListener('ontouchend',function(event){
7835
 
7836
			//debug
7837
			console.log('ontouch event start');
7838
 
7839
			//取消預設觸碰的效果
7840
			event.preventDefault();
7841
 
7842
			//停止擴散事件
7843
			event.stopPropagation();
7844
 
7845
			//debug
7846
			console.log('ontouch event end');
7847
 
7848
			});
7849
 
7850
		//將下拉式選單綁定'click'事件,觸發時要執行物件__qbpwcf_scrollingList的函數
7851
		var scrollingListClickEvent = ".$name.".addEventListener('click',function(event){
7852
 
7853
			//debug
7854
			console.log(event);
7855
 
7856
			//取消預設點擊的效果
7857
			event.preventDefault();
7858
 
7859
			//取得下拉式選單內容
7860
			var inputSelect=event.target;
7861
 
7862
			//debug
7863
			//console.log(inputSelect);
7864
 
7865
			//讓下拉式選單趕緊隱藏
7866
			inputSelect.style.opacity='0';
7867
 
7868
			//取得選項的數目
7869
			var opLen=inputSelect.options.length;
7870
 
7871
			//debug
7872
			//console.log(opLen);
7873
 
7874
			//新增覆蓋全螢幕的div
7875
			var root=document.createElement('div');
7876
 
7877
			//設置最外層div的id
7878
			root.setAttribute('id','scrollingListRootDiv');
7879
 
7880
			//設置最外層div的樣式
7881
			root.setAttribute('class','__qbpwcf_scrollingListRootDiv');
7882
 
7883
			//新增為了將不足divForMiddle可見高度的選項們置中的div
7884
			var divForMiddle=document.createElement('div');
7885
 
7886
			//設置為了上下置中的div樣式
7887
			divForMiddle.setAttribute('class','__qbpwcf_scrollingListOutterDiv');
7888
 
7889
			//初始化記錄選擇的選項index
7890
			var selectedOptionIndex=-1;
7891
 
7892
			//針對每個選項
7893
			for(var i=0;i< opLen;i++){
7894
 
7895
				//debug
7896
				//console.log(i);
7897
 
7898
				//debug
7899
				//console.log(inputSelect.options[i].value);
7900
 
7901
				//取得選項實際數值
7902
				var opVal=inputSelect.options[i].value;
7903
 
7904
				//debug
7905
				//console.log(inputSelect.options[i].innerHTML);
7906
 
7907
				//取得選項顯示名稱
7908
				var opShow=inputSelect.options[i].innerHTML;
7909
 
7910
				//debug
7911
				//console.log(opVal+'=>'+opShow);
7912
 
7913
				//建立選項的div
7914
				var opDiv=document.createElement('div');
7915
 
7916
				//設置選項div的class
7917
				opDiv.setAttribute('class','__qbpwcf_inputSelect __qbpwcf_inputSelect_hover');
7918
 
7919
				//設置選項div的數值內容
7920
				opDiv.setAttribute('data-val',opVal);
7921
 
7922
				//設置選項div的編號(從0開始)
7923
				opDiv.setAttribute('data-no',i);
7924
 
7925
				//若該選項有 'selected' 屬性
7926
				if(inputSelect.options[i].attributes['selected']!==undefined){
7927
 
7928
					//debug
7929
					//console.log('第'+opDiv.attributes['data-no'].value+'個選項為現有選擇的項目');
7930
 
7931
					//標記該選項為原先所選擇的項目
7932
					opDiv.setAttribute('data-selected','true');
7933
 
7934
					//記錄原先所選擇的項目的index
7935
					var selectedOptionIndex=parseInt(opDiv.attributes['data-no'].value);
7936
 
7937
					}//if end
7938
 
7939
				//建立選項名稱文字節點
7940
				var textnode = document.createTextNode(opShow);
7941
 
7942
				//將文字放進選項的div
7943
				opDiv.appendChild(textnode);
7944
 
7945
				//將選項放進為了上下左右置中的div
7946
				divForMiddle.appendChild(opDiv);
7947
 
7948
				}//for end
7949
 
7950
			//新增為了上下左右置中的div
7951
			var divForCenterMiddle=document.createElement('div');
7952
 
7953
			//設置為了內部元素都上下左右置中的div樣式
7954
			//divForCenterMiddle.setAttribute('style','background-color:white;position:fixed;top:15%;left:15%;height:70%;width:70%;overflow-y:auto;border:1px solid black;');
7955
			divForCenterMiddle.setAttribute('class','__qbpwcf_scrollingListInnerDiv');
7956
 
7957
			//將上下置中的選項們放進可以上下左右置中的div
7958
			divForCenterMiddle.appendChild(divForMiddle);
7959
 
7960
			//將選項放進最外層的div
7961
			root.appendChild(divForCenterMiddle);
7962
 
7963
			//將整個div放到body裡面
7964
			document.body.appendChild(root);
7965
 
7966
			//調整滾軸表單的置中效果
7967
			scrollingListMiddleFunction();
7968
 
7969
			//取得所有選項
7970
			var allOptions=document.getElementsByClassName('__qbpwcf_inputSelect_hover');
7971
 
7972
			//debug
7973
			//console.log(allOptions);
7974
 
7975
			//移動滾軸讓原本選擇的選項盡量置中
7976
 
7977
			//原先選擇的項目索引
7978
			//console.log(selectedOptionIndex);
7979
 
7980
			//opLen 選項的數目
7981
			//console.log(opLen);
7982
 
7983
			//取得選單的滾軸上端位置
7984
			//var scrollingListScrollTop=document.getElementById('scrollingListRootDiv').children[0].scrollTop;
7985
 
7986
			//debug
7987
			//console.log(scrollingListScrollTop);
7988
 
7989
			//取得選單的滾軸上端位置最大值
7990
			var scrollingListScrollTopMax=document.getElementById('scrollingListRootDiv').children[0].scrollTopMax;
7991
 
7992
			//debug
7993
			//console.log(scrollingListScrollTopMax);
7994
 
7995
			//取得選單的可見高度
7996
			//var scrollingListViewHeight=document.getElementById('scrollingListRootDiv').children[0].clientHeight;
7997
 
7998
			//debug
7999
			//console.log(scrollingListViewHeight);
8000
 
8001
			//取得選單含滾軸的總高度
8002
			//var scrollingListScrollHeight=document.getElementById('scrollingListRootDiv').children[0].scrollHeight;
8003
 
8004
			//debug
8005
			//console.log(scrollingListScrollHeight);
8006
 
8007
			//debug
8008
			//console.log(selectedOptionIndex);
8009
 
8010
			//如果有滾軸
8011
			if(scrollingListScrollTopMax!==0){
8012
 
8013
				//如果是第一個選項
8014
				if(selectedOptionIndex===0){
8015
 
8016
					//滾軸拉到最上面
8017
					document.getElementById('scrollingListRootDiv').children[0].scrollTop=0;
8018
 
8019
					//debug
8020
					//console.log('scrollingListScrollTop=0');
8021
 
8022
					}//if end
8023
 
8024
				//如果之前選擇的選項索引剛好等於 opLen/2
8025
				else if(((selectedOptionIndex+1)===(opLen/2))){
8026
 
8027
					//debug
8028
					//console.log('之前選擇的選項索引剛好等於一半');
8029
 
8030
					//取得新的滾軸高度
8031
					var newScrollTop=scrollingListScrollTopMax/2;
8032
 
8033
					//設置滾軸的上端位置
8034
					document.getElementById('scrollingListRootDiv').children[0].scrollTop=newScrollTop;
8035
 
8036
					//debug
8037
					//console.log('scrollingListScrollTop='+newScrollTop.toString());
8038
 
8039
					}//if end
8040
 
8041
				//如果之前選擇的選項索引小於半
8042
				else if((selectedOptionIndex+1)<(opLen/2)){
8043
 
8044
					//debug
8045
					//console.log('之前選擇的選項索引未過半,加幾個'+(selectedOptionIndex+1).toString());
8046
 
8047
					//取得新的滾軸高度
8048
					var newScrollTop=scrollingListScrollTopMax/opLen*selectedOptionIndex+1;
8049
 
8050
					//設置滾軸的上端位置
8051
					document.getElementById('scrollingListRootDiv').children[0].scrollTop=newScrollTop;
8052
 
8053
					//debug
8054
					//console.log('scrollingListScrollTop='+newScrollTop.toString());
8055
 
8056
					}//if end
8057
 
8058
				//如果之前選擇的選項索引過半
8059
				else if((selectedOptionIndex+1)>(opLen/2)){
8060
 
8061
					//debug
8062
					//console.log('之前選擇的選項索引過半,減幾個'+(opLen-selectedOptionIndex-1).toString());
8063
 
8064
					//取得新的滾軸高度
8065
					var newScrollTop=scrollingListScrollTopMax-scrollingListScrollTopMax/opLen*(opLen-selectedOptionIndex-1);
8066
 
8067
					//設置滾軸的上端位置
8068
					document.getElementById('scrollingListRootDiv').children[0].scrollTop=newScrollTop;
8069
 
8070
					//debug
8071
					//console.log('scrollingListScrollTop='+newScrollTop.toString());
8072
 
8073
					}//if end
8074
 
8075
				//如果是最後一個選項
8076
				else if(selectedOptionIndex===opLen){
8077
 
8078
					//如果是最後一個選項
8079
					document.getElementById('scrollingListRootDiv').children[0].scrollTop=scrollingListScrollTopMax;
8080
 
8081
					//debug
8082
					//console.log('scrollingListScrollTop='+scrollingListScrollTopMax);
8083
 
8084
					}//if end
8085
 
8086
				//不應該跑到的地方
8087
				else{
8088
 
8089
					//debug
8090
					console.log('error occur!');
8091
 
8092
					}//else end
8093
 
8094
				}//if end
8095
 
8096
			//針對每個選項
8097
			for(var i=0;i<allOptions.length;i++){
8098
 
8099
				//綁定所有選項的 'click' 事件
8100
				allOptions[i].addEventListener('click',function(event){
8101
 
8102
					//debug
8103
					//console.log(event);
8104
 
8105
					//取得點擊到的選項
8106
					var clickedOption=event.target;
8107
 
8108
					//debug
8109
					//console.log(clickedOption);
8110
 
8111
					//取得點擊到的選項數值
8112
					var clickedValue=clickedOption.attributes['data-val'].value;
8113
 
8114
					//debug
8115
					//console.log(clickedValue);
8116
 
8117
					//取得點擊到的選項編號
8118
					var clickedNo=clickedOption.attributes['data-no'].value;
8119
 
8120
					//debug
8121
					//console.log(clickedNo);
8122
 
8123
					//取得點擊到的選項名稱
8124
					var clickedName=clickedOption.innerHTML;
8125
 
8126
					//debug
8127
					//console.log(clickedName);
8128
 
8129
					//修改下拉式選單選則的數值
8130
 
8131
					//針對每個下拉式選單實際的選項
8132
					for(var j=0;j<allOptions.length;j++){
8133
 
8134
						//移除 selected 屬性
8135
						inputSelect.options[j].removeAttribute('selected');
8136
 
8137
						}//for end
8138
 
8139
					//debug
8140
					//console.log('設置 inputSelect.options['+clickedNo+'] 的 selected 屬性');
8141
 
8142
					//設置點選的選項的 selected 屬性
8143
					inputSelect.options[clickedNo].setAttribute('selected','');
8144
 
8145
					//取得要移除 scrolling list 的 div
8146
					var divToDel=document.getElementById('scrollingListRootDiv');
8147
 
8148
					//debug
8149
					//console.log(divTodel);
8150
 
8151
					//移除 scrolling list div
8152
					divToDel.remove();
8153
 
8154
					//復原下拉式選單
8155
					inputSelect.style.opacity='unset';
8156
 
8157
					".$valNotSend."
8158
 
8159
					//馬上傳送表單
8160
					sendForm();
8161
 
8162
					});//function end
8163
 
8164
				}//for end
8165
 
8166
				//建立 close icon
8167
				closeIcon();
8168
 
8169
			});
8170
 
8171
			//停止擴散事件
8172
			event.stopPropagation();
8173
		";
8174
		#可省略參數:
8175
		#$conf["onReady"],字串,是否要在網頁載入完再執行,"false"為不等載入完就先執行,預設為"true"要等載入完再執行.
8176
		#$conf["onReady"]="true";
8177
		#$conf["globalJs"],字串陣列,為要放入<script>標籤的js全域變數.
8178
		$conf["javaScript::toScript"]["globalJs"][]=
8179
		"
8180
		//取得下拉式選單元素
8181
		var ".$name."=document.getElementById('".$name."');
8182
		";
8183
		#$conf["jsFunciton"],字串陣列,為要放入<script>標籤的js函數.
8184
		$conf["javaScript::toScript"]["jsFunciton"][]=
8185
		"
8186
			//馬上傳送表單
8187
			function sendForm(){
8188
 
8189
				".$sendForm."
8190
 
8191
				}//function sendForm end
8192
 
8193
			//關閉 list 的按鈕與事件
8194
			function closeIcon(){
8195
 
8196
				//建立 close icon
8197
				var closeIcon = document.createElement('img');
8198
 
8199
				//設置 close icon 的樣式
8200
				closeIcon.style['position']='fixed';
8201
				closeIcon.style['top']='15%';
8202
				closeIcon.style['left']='85%';
8203
				closeIcon.style['width']='5%';
8204
				closeIcon.style['min-width']='30px';
8205
				closeIcon.style['max-width']='50px';
8206
				closeIcon.style['cursor']='pointer';
8207
 
8208
				//設置 close icon img 的屬性
8209
				closeIcon.src='".$closeIcon."';
8210
 
8211
				//設置 close icon img 的id
8212
				closeIcon.setAttribute('id','qbpwcfScrollingListCloseIcon');
8213
 
8214
				//取得 scrollingList 的 root div
8215
				var slrd=document.getElementById('scrollingListRootDiv');
8216
 
8217
				//將 close icon outer div 放到 scrollingList 的 root div 裡面
8218
				slrd.appendChild(closeIcon);
8219
 
8220
				//取得 close icon img
8221
				var closeIcon=document.getElementById('qbpwcfScrollingListCloseIcon');
8222
 
8223
				//新增 close icon img 的點擊事件
8224
				closeIcon.addEventListener('click',function(){
8225
 
8226
					//取得要移除 scrolling list 的 div
8227
					var divToDel=document.getElementById('scrollingListRootDiv');
8228
 
8229
					//debug
8230
					//console.log(divTodel);
8231
 
8232
					//移除 scrolling list div
8233
					divToDel.remove();
8234
 
8235
					//復原下拉式選單
8236
					".$name.".style.opacity='unset';
8237
 
8238
					});
8239
 
8240
				}//function closeIcon end
8241
		";
8242
		#參考資料:
8243
		#http://stackoverflow.com/questions/9899372/pure-javascript-equivalent-to-jquerys-ready-how-to-call-a-function-when-the
8244
		$toScript=javaScript::toScript($conf["javaScript::toScript"]);
8245
		unset($conf["javaScript::toScript"]);
8246
 
8247
		#如果建立js失敗
8248
		if($toScript["status"]==="false"){
8249
 
8250
			#設置執行失敗
8251
			$result["status"]="false";
8252
 
8253
			#設置錯誤訊息
8254
			$result["error"]=$toScript;
8255
 
8256
			#回傳結果
8257
			return $result;
8258
 
8259
			}#if end
8260
 
8261
		#串接scrollingList用的js
8262
		$result["content"]=$result["content"].$toScript["content"];
8263
 
8264
		#設置執行正常
8265
		$result["status"]="true";
8266
 
8267
		#回傳結果
8268
		return $result;
8269
 
8270
		}#function scrollingList end
8271
 
8272
	/*
8273
	#函式說明:
8274
	#建立滾軸式表單取代傳統下拉式選單,選項會用全螢幕的div區塊呈現.
8275
	#回傳結果:
8276
	#$result["status"],執行是否正常,"true"代表正常,"false"代表失敗.
8277
	#$result["error"],錯誤訊息陣列.
8278
	#$result["content"],語法內容.
8279
	#$result["function"],設置當前執行的函式
8280
	#必填參數:
8281
	#$conf["name"],字串,爲該下拉式選單的元素的id.
8282
	$conf["name"]="";
8283
	#$conf["sendValue"],陣列值,爲每個選項的實際傳送的數值,e.g. $sendValue = array("a","b","c","d","e");
8284
	$conf["sendValue"]=array();
8285
	#可省略參數:
8286
	#$conf["outputValue"],字串陣列,爲每個選項的實際顯示的數值, e.g. $outputValue = array("p","o","i","t","e");,如果沒有設定,則其值同$conf["sendValue"]。
8287
	#$conf["outputValue"]=array();
8288
	#$conf["defaultValue"],字串,為預設選取那個選項,須爲$conf["sendValue"]其中的一個值。
8289
	#$conf["defaultValue"]="";
8290
	#$conf["class"],字串,爲要套用的class樣式,預設為 "__qbpwcf_inputSelect".
8291
	#$conf["class"]="";
8292
	#$conf["readOnly"],字串,內容是否唯獨,預設為"false",不唯獨,"true"為唯獨.
8293
	#$conf["readOnly"]="true";
8294
	#$conf["comment"],字串,輸入方框上面要放哪些註解文字,亦即用label來呈現,同時指定"for"屬性的數值為當前"input"標籤的id,意即參數"name"的內容.
8295
	#$conf["comment"]="";
8296
	#$conf["formAction"],字串,爲該下拉式表單要傳送到的位置.
8297
	#$conf["formAction"]="";
8298
	#$conf["independentForm"],字串,是否該下拉式選單就是一個完整的表單,"true"代表是,"false"代表不是,預設為"true".
8299
	#$conf["independentForm"]="false";
8300
	#$conf["hiddenVar"],字串陣列,隱藏的變數名稱陣列.
8301
	#$conf["hiddenVar"]=array("");
8302
	#$conf["hiddanVarValue"],字串陣列,隱藏變數的數值內容.
8303
	#$conf["hiddenVarValue"]=array("");
8304
	#$conf["closeIcon"],字串,關閉滾軸選單的按鈕圖示,預設為"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpvc2I9Imh0dHA6Ly93d3cub3BlbnN3YXRjaGJvb2sub3JnL3VyaS8yMDA5L29zYiIKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgd2lkdGg9IjEwNS43ODE3Mm1tIgogICBoZWlnaHQ9IjEwNS4zNDM0NG1tIgogICB2aWV3Qm94PSIwIDAgMTA1Ljc4MTcyIDEwNS4zNDM0NCIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnOCIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45MitkZXZlbCB1bmtub3duIgogICBzb2RpcG9kaTpkb2NuYW1lPSJjbG9zZUljb24uc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzMiI+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzMTUiCiAgICAgICBvc2I6cGFpbnQ9InNvbGlkIj4KICAgICAgPHN0b3AKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzAwMDAwMDtzdG9wLW9wYWNpdHk6MTsiCiAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgaWQ9InN0b3A0MzEzIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0MzkxIgogICAgICAgeD0iLTAuMDY4OTc3MTAzIgogICAgICAgd2lkdGg9IjEuMTM3OTU0MiIKICAgICAgIHk9Ii0wLjA3NTI5OTk5MyIKICAgICAgIGhlaWdodD0iMS4xNTA2Ij4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIxLjAwNjI1NDMiCiAgICAgICAgIGlkPSJmZUdhdXNzaWFuQmx1cjQzOTMiIC8+CiAgICA8L2ZpbHRlcj4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0NDM4IgogICAgICAgeD0iLTAuMDIyNjIyOTA0IgogICAgICAgd2lkdGg9IjEuMDQ1MjQ1OCIKICAgICAgIHk9Ii0wLjAyNTU1NTYxNCIKICAgICAgIGhlaWdodD0iMS4wNTExMTEyIj4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIwLjIyMTcwNjAxIgogICAgICAgICBpZD0iZmVHYXVzc2lhbkJsdXI0NDQwIiAvPgogICAgPC9maWx0ZXI+CiAgICA8ZmlsdGVyCiAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICBzdHlsZT0iY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOnNSR0IiCiAgICAgICBpZD0iZmlsdGVyNDQ0NiIKICAgICAgIHg9Ii0wLjAyMzIzMjg0NyIKICAgICAgIHdpZHRoPSIxLjA0NjQ2NTgiCiAgICAgICB5PSItMC4wMjQ4MTk1NDUiCiAgICAgICBoZWlnaHQ9IjEuMDQ5NjM5MSI+CiAgICAgIDxmZUdhdXNzaWFuQmx1cgogICAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICAgIHN0ZERldmlhdGlvbj0iMC4yMjIwOTQyOCIKICAgICAgICAgaWQ9ImZlR2F1c3NpYW5CbHVyNDQ0OCIgLz4KICAgIDwvZmlsdGVyPgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMS40IgogICAgIGlua3NjYXBlOmN4PSIxMzAuNTY4NjgiCiAgICAgaW5rc2NhcGU6Y3k9IjIwMS4zNDg0NSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0iZzQ0ODgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtcm90YXRpb249IjAiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTYwMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI4MzYiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiIC8+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNSI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MC4wNTQwMzQsLTg5LjA0MzUyMikiPgogICAgPGcKICAgICAgIGlkPSJnNDQ4OCIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDIuNjU1MDQ0MywwLDAsMi44NTQ2OTA3LC0xMTAuOTk1MTgsLTMyNi45MjY1MikiPgogICAgICA8ZWxsaXBzZQogICAgICAgICByeT0iMTYuMDM1OTI3IgogICAgICAgICByeD0iMTcuNTA1ODg0IgogICAgICAgICBjeT0iMTY0LjE2NTUxIgogICAgICAgICBjeD0iODAuNTc4NzIiCiAgICAgICAgIGlkPSJwYXRoMzQ3NCIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MC4zO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC4yNjQ5OTk5OTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxO2ZpbHRlcjp1cmwoI2ZpbHRlcjQzOTEpO2ltYWdlLXJlbmRlcmluZzphdXRvIiAvPgogICAgICA8cmVjdAogICAgICAgICB0cmFuc2Zvcm09InJvdGF0ZSgtNDIuODA4OTU1KSIKICAgICAgICAgcnk9IjAiCiAgICAgICAgIHk9IjE3NC41NTY0OSIKICAgICAgICAgeD0iLTY3LjM5ODc1OCIKICAgICAgICAgaGVpZ2h0PSIyLjE1MjIwNjQiCiAgICAgICAgIHdpZHRoPSIyOS4yNzk2NDgiCiAgICAgICAgIGlkPSJyZWN0NDQxMyIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MTtmaWxsOiNmZmZmMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjA7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MTtmaWx0ZXI6dXJsKCNmaWx0ZXI0NDQ2KSIgLz4KICAgICAgPHJlY3QKICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoLTEzOS4wMzQ0MikiCiAgICAgICAgIHJ5PSIwIgogICAgICAgICB5PSItNzMuMDUwOTQ5IgogICAgICAgICB4PSItMTgyLjk2MjUyIgogICAgICAgICBoZWlnaHQ9IjIuMTUyMjA2NCIKICAgICAgICAgd2lkdGg9IjI5LjI3OTY0OCIKICAgICAgICAgaWQ9InJlY3Q0NDEzLTMiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDojZmZmZjAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjE7ZmlsdGVyOnVybCgjZmlsdGVyNDQzOCkiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K".
8305
	#$conf["closeIcon"]="";
8306
	#$conf["valNotSend"],字串,如果選擇的選項數值為何,就不傳送表單.
8307
	#$conf["valNotSend"]="";
8308
	#$conf["newLineOption"],字串,"true"代表要建立換行的div選單元素,"false"代表要建立不換行的 span 元素,與設為"false".
8309
	#$conf["newLineOption"]="false";
8310
	#$conf["dataFormId"],字串,提供用於識別哪一張表單的data屬性名稱.
8311
	#$conf["dataFormId"]="";
8312
	#參考資料:
8313
	#無.
8314
	#備註:
176 liveuser 8315
	#建議用javaScript::qbpwcfScript中的window.qbpwcf.form.fakeScrollingList來實作.
3 liveuser 8316
	*/
8317
	public static function fakeScrollingList(&$conf){
8318
 
8319
		#初始化要回傳的結果
8320
		$result=array();
8321
 
8322
		#取得當前執行的函數名稱
8323
		$result["function"]=__FUNCTION__;
8324
 
8325
		#如果沒有參數
8326
		if(func_num_args()==0){
8327
 
8328
			#設置執行失敗
8329
			$result["status"]="false";
8330
 
8331
			#設置執行錯誤訊息
8332
			$result["error"]="函數".$result["function"]."需要參數";
8333
 
8334
			#回傳結果
8335
			return $result;
8336
 
8337
			}#if end
8338
 
8339
		#取得參數
8340
		$result["argu"]=$conf;
8341
 
8342
		#如果 $conf 不為陣列
8343
		if(gettype($conf)!=="array"){
8344
 
8345
			#設置執行失敗
8346
			$result["status"]="false";
8347
 
8348
			#設置執行錯誤訊息
8349
			$result["error"][]="\$conf變數須為陣列形態";
8350
 
8351
			#如果傳入的參數為 null
8352
			if($conf===null){
8353
 
8354
				#設置執行錯誤訊息
8355
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
8356
 
8357
				}#if end
8358
 
8359
			#回傳結果
8360
			return $result;
8361
 
8362
			}#if end
8363
 
8364
		#如果有設置close icon
8365
		if(isset($conf["closeIcon"])){
8366
 
8367
			#另存路徑
8368
			$closeIcon=$conf["closeIcon"];
8369
 
8370
			#卸除不被 form::inputSelect 接受的參數
8371
			unset($conf["closeIcon"]);
8372
 
8373
			}#if end
8374
 
8375
		#反之
8376
		else{
8377
 
8378
			#用預設的 close icon
8379
			$closeIcon="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpvc2I9Imh0dHA6Ly93d3cub3BlbnN3YXRjaGJvb2sub3JnL3VyaS8yMDA5L29zYiIKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgd2lkdGg9IjEwNS43ODE3Mm1tIgogICBoZWlnaHQ9IjEwNS4zNDM0NG1tIgogICB2aWV3Qm94PSIwIDAgMTA1Ljc4MTcyIDEwNS4zNDM0NCIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnOCIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45MitkZXZlbCB1bmtub3duIgogICBzb2RpcG9kaTpkb2NuYW1lPSJjbG9zZUljb24uc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzMiI+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzMTUiCiAgICAgICBvc2I6cGFpbnQ9InNvbGlkIj4KICAgICAgPHN0b3AKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzAwMDAwMDtzdG9wLW9wYWNpdHk6MTsiCiAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgaWQ9InN0b3A0MzEzIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0MzkxIgogICAgICAgeD0iLTAuMDY4OTc3MTAzIgogICAgICAgd2lkdGg9IjEuMTM3OTU0MiIKICAgICAgIHk9Ii0wLjA3NTI5OTk5MyIKICAgICAgIGhlaWdodD0iMS4xNTA2Ij4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIxLjAwNjI1NDMiCiAgICAgICAgIGlkPSJmZUdhdXNzaWFuQmx1cjQzOTMiIC8+CiAgICA8L2ZpbHRlcj4KICAgIDxmaWx0ZXIKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQiIKICAgICAgIGlkPSJmaWx0ZXI0NDM4IgogICAgICAgeD0iLTAuMDIyNjIyOTA0IgogICAgICAgd2lkdGg9IjEuMDQ1MjQ1OCIKICAgICAgIHk9Ii0wLjAyNTU1NTYxNCIKICAgICAgIGhlaWdodD0iMS4wNTExMTEyIj4KICAgICAgPGZlR2F1c3NpYW5CbHVyCiAgICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgICAgc3RkRGV2aWF0aW9uPSIwLjIyMTcwNjAxIgogICAgICAgICBpZD0iZmVHYXVzc2lhbkJsdXI0NDQwIiAvPgogICAgPC9maWx0ZXI+CiAgICA8ZmlsdGVyCiAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICBzdHlsZT0iY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOnNSR0IiCiAgICAgICBpZD0iZmlsdGVyNDQ0NiIKICAgICAgIHg9Ii0wLjAyMzIzMjg0NyIKICAgICAgIHdpZHRoPSIxLjA0NjQ2NTgiCiAgICAgICB5PSItMC4wMjQ4MTk1NDUiCiAgICAgICBoZWlnaHQ9IjEuMDQ5NjM5MSI+CiAgICAgIDxmZUdhdXNzaWFuQmx1cgogICAgICAgICBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiCiAgICAgICAgIHN0ZERldmlhdGlvbj0iMC4yMjIwOTQyOCIKICAgICAgICAgaWQ9ImZlR2F1c3NpYW5CbHVyNDQ0OCIgLz4KICAgIDwvZmlsdGVyPgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMS40IgogICAgIGlua3NjYXBlOmN4PSIxMzAuNTY4NjgiCiAgICAgaW5rc2NhcGU6Y3k9IjIwMS4zNDg0NSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0iZzQ0ODgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtcm90YXRpb249IjAiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTYwMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI4MzYiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiIC8+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNSI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MC4wNTQwMzQsLTg5LjA0MzUyMikiPgogICAgPGcKICAgICAgIGlkPSJnNDQ4OCIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDIuNjU1MDQ0MywwLDAsMi44NTQ2OTA3LC0xMTAuOTk1MTgsLTMyNi45MjY1MikiPgogICAgICA8ZWxsaXBzZQogICAgICAgICByeT0iMTYuMDM1OTI3IgogICAgICAgICByeD0iMTcuNTA1ODg0IgogICAgICAgICBjeT0iMTY0LjE2NTUxIgogICAgICAgICBjeD0iODAuNTc4NzIiCiAgICAgICAgIGlkPSJwYXRoMzQ3NCIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MC4zO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC4yNjQ5OTk5OTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxO2ZpbHRlcjp1cmwoI2ZpbHRlcjQzOTEpO2ltYWdlLXJlbmRlcmluZzphdXRvIiAvPgogICAgICA8cmVjdAogICAgICAgICB0cmFuc2Zvcm09InJvdGF0ZSgtNDIuODA4OTU1KSIKICAgICAgICAgcnk9IjAiCiAgICAgICAgIHk9IjE3NC41NTY0OSIKICAgICAgICAgeD0iLTY3LjM5ODc1OCIKICAgICAgICAgaGVpZ2h0PSIyLjE1MjIwNjQiCiAgICAgICAgIHdpZHRoPSIyOS4yNzk2NDgiCiAgICAgICAgIGlkPSJyZWN0NDQxMyIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MTtmaWxsOiNmZmZmMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjA7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MTtmaWx0ZXI6dXJsKCNmaWx0ZXI0NDQ2KSIgLz4KICAgICAgPHJlY3QKICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoLTEzOS4wMzQ0MikiCiAgICAgICAgIHJ5PSIwIgogICAgICAgICB5PSItNzMuMDUwOTQ5IgogICAgICAgICB4PSItMTgyLjk2MjUyIgogICAgICAgICBoZWlnaHQ9IjIuMTUyMjA2NCIKICAgICAgICAgd2lkdGg9IjI5LjI3OTY0OCIKICAgICAgICAgaWQ9InJlY3Q0NDEzLTMiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDojZmZmZjAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjE7ZmlsdGVyOnVybCgjZmlsdGVyNDQzOCkiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K";
8380
 
8381
			}#else end
8382
 
8383
		#如果有設置 $conf["valNotSend"]
8384
		if(isset($conf["valNotSend"])){
8385
 
8386
			#設置不傳送表單的js語法
8387
			$valNotSend=
8388
			"
8389
				//如果表單的數值為 ".$conf["valNotSend"]."
8390
				if(clickedValue==='".$conf["valNotSend"]."'){
8391
 
8392
					//結束動作
8393
					return true;
8394
 
8395
					}//if end
8396
			";
8397
 
8398
			}#if end
8399
 
8400
		#反之
8401
		else{
8402
 
8403
			#設為空值
8404
			$valNotSend="";
8405
 
8406
			}#else end
8407
 
8408
		#卸除不被 form::inputSelect 接受的參數
8409
		unset($conf["valNotSend"]);
8410
 
8411
		#檢查參數
8412
		#函式說明:
8413
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
8414
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
8415
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
8416
		#$result["function"],當前執行的函式名稱.
8417
		#$result["argu"],設置給予的參數.
8418
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
8419
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
8420
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
8421
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
8422
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
8423
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
8424
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
8425
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
8426
		#必填寫的參數:
8427
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
8428
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
8429
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
8430
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
8431
		#可以省略的參數:
8432
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
8433
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("name","sendValue");
8434
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
8435
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","array");
8436
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
8437
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
8438
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
8439
		$conf["variableCheck::checkArguments"]["canNotBeEmpty"]=array("name","sendValue");
8440
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
8441
		#$conf["canBeEmpty"]=array();
8442
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
8443
		$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("outputValue","defaultValue","newLineOption","formAction","hiddenVar","hiddenVarValue");
8444
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
8445
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("outputValue","defaultValue","newLineOption","formAction","hiddenVar","hiddenVarValue","comment","class","readOnly","dataFormId");
8446
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
8447
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array","string","string","string","array","array","string","string","string","string");
8448
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
8449
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("\$conf[\"sendValue\"]",null,"false",null,null,null,null,"__qbpwcf_inputSelect","false",null);
8450
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
8451
		#$conf["disallowAllSkipableVarIsEmpty"]="";
8452
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
8453
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
8454
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
8455
		$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("hiddenVar","hiddenVarValue");
8456
		#參考資料:
8457
		#array_keys=>http://php.net/manual/en/function.array-keys.php
8458
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
8459
		unset($conf["variableCheck::checkArguments"]);
8460
 
8461
		#如果檢查失敗
8462
		if($checkArguments["status"]==="false"){
8463
 
8464
			#設置執行失敗
8465
			$result["status"]="false";
8466
 
8467
			#設置執行錯誤訊息
8468
			$result["error"]=$checkArguments;
8469
 
8470
			#回傳結果
8471
			return $result;
8472
 
8473
			}#if end
8474
 
8475
		#如果檢查失敗
8476
		if($checkArguments["passed"]==="false"){
8477
 
8478
			#設置執行失敗
8479
			$result["status"]="false";
8480
 
8481
			#設置執行錯誤訊息
8482
			$result["error"]=$checkArguments;
8483
 
8484
			#回傳結果
8485
			return $result;
8486
 
8487
			}#if end
8488
 
8489
		#設置傳送表單的參數
8490
		$sendForm="";
8491
 
8492
		#如果有設置 $conf["formAction"]
8493
		if(isset($conf["formAction"])){
8494
 
8495
			#預設隱藏的變數為""
8496
			$hiddenVar="";
8497
 
8498
			#如果有設置隱藏的參數 hiddenVar 與 hiddenVarValue
8499
			if(isset($conf["hiddenVar"]) && isset($conf["hiddenVarValue"])){
8500
 
8501
				#加密要傳送的隱藏表單資料
8502
				$hiddenVar=base64_encode(json_encode(array("hiddenVar"=>$conf["hiddenVar"],"hiddenVarValue"=>$conf["hiddenVarValue"])));
8503
 
8504
				}#if end
8505
 
8506
			#設置傳送表單的參數
8507
			$sendForm=
8508
			"
8509
			//馬上傳送表單
8510
			window.form_fakeScrollingList_sendForm_".$conf["name"]."('".$conf["name"]."',oriOptionsInfo.sendValue[clickedNo],'".$conf["formAction"]."','".$hiddenVar."');
8511
			";
8512
 
8513
			}#if end
8514
 
8515
		#儲存選項呈現的元素變數
8516
		$optionOutEle="";
8517
 
8518
		#如果沒有指定預設的選項
8519
		if(!isset($conf["defaultValue"])){
8520
 
8521
			#預設為第一個選項的內容
8522
			$conf["defaultValue"]=$conf["sendValue"][0];
8523
 
8524
			}#if end
8525
 
8526
		#取得預設選項對應的顯示內容
8527
		#函式說明:
8528
		#檢查一個數值是否與陣列裏面的元素相同,找到一個相符合的元素後就會停止搜尋.
8529
		#回傳的結果:
8530
		#$result["status"],"true"表示執行正確,"false"表示執行錯誤.
8531
		#$result["founded"],"true"表示有找到相同的,"false"表示沒有找到相同的.
8532
		#$result["error"],錯誤訊息
8533
		#$result["function"],當前執行的函數名稱
8534
		#$result["argv"],使用的參數
8535
		#$result["equalVarName"],相等的變數名稱或key.
8536
		#$result["equalVarValue"],相等的變數數值內容.
8537
		#必填參數:
8538
		$conf["search::getEqualVar"]["conditionElement"]=$conf["defaultValue"];#條件元素,要等於的元素內容.
8539
		$conf["search::getEqualVar"]["compareElements"]=$conf["sendValue"];#要比對的陣列變數內容.
8540
		$getEqualVar=search::getEqualVar($conf["search::getEqualVar"]);
8541
		unset($conf["search::getEqualVar"]);
8542
 
8543
		#如果執失敗
8544
		if($getEqualVar["status"]==="false"){
8545
 
8546
			#設置執行失敗
8547
			$result["status"]="false";
8548
 
8549
			#設置執行錯誤訊息
8550
			$result["error"]=$getEqualVar;
8551
 
8552
			#回傳結果
8553
			return $result;
8554
 
8555
			}#if end
8556
 
8557
		#如果沒有對應的選項
8558
		if($getEqualVar["founded"]==="false"){
8559
 
8560
			#設置執行失敗
8561
			$result["status"]="false";
8562
 
8563
			#設置執行錯誤訊息
8564
			$result["error"]=$getEqualVar;
8565
 
8566
			#回傳結果
8567
			return $result;
8568
 
8569
			}#if end
8570
 
8571
		#取得預設選項的顯示內容
8572
		$defaultShowVal=$conf["outputValue"][$getEqualVar["equalVarName"]];
8573
 
8574
		#fake scrolling list data var name
8575
		$fakeScrollingListDataVar="qbpwcf-fakeScrollingList-options";
8576
 
8577
		#判斷 $conf["newLineOption"] 參數的內容
8578
		switch($conf["newLineOption"]){
8579
 
8580
			#如果要建立 div 選項
8581
			case "true":
8582
 
8583
				#函式說明:
8584
				#<div>區塊,裡面可以指定css的class樣式,可以指定提示文字.
8585
				#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.
8586
				#$result["functin"],字串,當前函數的名稱.
8587
				#$result["error"],陣列,錯訊訊息.
8588
				#$result["content"],字串,含有<div>標籤的內容.
8589
				#必填參數:
8590
				#$conf["contentArray"],字串陣列,要放入的內容陣列.
8591
				$conf["css::divSection"]["contentArray"]=array($defaultShowVal);
8592
				#可省略參數
8593
				#$conf["id"],字串,div區塊的id.
8594
				$conf["css::divSection"]["id"]=$conf["name"];
8595
				#$conf["styleAttr"],字串陣列,給div區段要套用的style樣式屬性.
8596
				#$conf["styleAttr"]=array();
8597
				#$conf["styleVal"],字串陣列,給div區段要套用的style樣式數值.
8598
				#$conf["styleVal"]=array();
8599
				#$conf["class"],字串,div區段要套用的css樣式.
8600
				$conf["css::divSection"]["class"]=$conf["class"];
8601
				#$conf["title"],陣列,滑鼠移到上面時要顯示的內容,每個元素代表一列內容.
8602
				#$conf["title"]=array();
8603
				#$conf["oneScreenSize"],字串,div區塊是否要占一個螢幕的大小,預設為"false"不設定,"true"為設定成一個螢幕的大小.
8604
				#$conf["oneScreenSize"]="false";
8605
				#$conf["textAlignCenter"],字串,div區塊是否要置中,預設為$conf["oneScreenSize"]的值,"false"為不置中,"true"代表要置中.
8606
				#$conf["textAlignCenter"]="";
8607
				#$conf["css::divSection"["data"],字串陣列,每個要設置的屬性data內容,例如array("option1"=>"A","option2"=>"B"),預設不使用.
8608
				$conf["css::divSection"]["data"]=array($fakeScrollingListDataVar=>base64_encode(json_encode(array("outputValue"=>$conf["outputValue"],"sendValue"=>$conf["sendValue"],"defaultValue"=>$conf["defaultValue"],"defaultShowVal"=>$defaultShowVal))));
226 liveuser 8609
 
3 liveuser 8610
				#如果有設置 $conf["dataFormId"]
8611
				if(isset($conf["dataFormId"])){
226 liveuser 8612
 
3 liveuser 8613
					#設置 data-form-id 屬性
8614
					$conf["css::divSection"]["data"]["form-id"]=$conf["dataFormId"];
226 liveuser 8615
 
3 liveuser 8616
					}#if end
226 liveuser 8617
 
3 liveuser 8618
				$divSection=css::divSection($conf["css::divSection"]);
8619
				unset($conf["css::divSection"]);
8620
 
8621
				#如果建立div區段失敗
8622
				if($divSection["status"]==="false"){
8623
 
8624
					#設置執行失敗
8625
					$result["status"]="false";
8626
 
8627
					#設置執行錯誤訊息
8628
					$result["error"]=$divSection;
8629
 
8630
					#回傳結果
8631
					return $result;
8632
 
8633
					}#if end
8634
 
8635
				#取得div的內容
8636
				$optionOutEle=$optionOutEle.$divSection["content"];
8637
 
8638
				#跳出switch
8639
				break;
8640
 
8641
			#如果要建立 span 選項
8642
			case "false":
8643
 
8644
				#函式說明:
8645
				#<span>區塊,裡面可以指定css的class樣式,可以指定提示文字,若要使用移動的css樣式,請改用divSection函數.
8646
				#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.
8647
				#$result["functin"],字串,當前函數的名稱.
8648
				#$result["error"],陣列,錯訊訊息.
8649
				#$result["content"],字串,含有<span>標籤的內容.
8650
				#必填參數:
8651
				#$conf["contentArray"],字串陣列,要放入的內容陣列.
8652
				$conf["css::spanSection"]["contentArray"]=array($defaultShowVal);
8653
				#可省略參數
8654
				#$conf["id"],字串,span區塊的id.
8655
				$conf["css::spanSection"]["id"]=$conf["name"];
8656
				#$conf["class"],字串,span區段要套用的css樣式.
8657
				$conf["css::spanSection"]["class"]=$conf["class"];
8658
				#$conf["title"],陣列,滑鼠移到上面時要顯示的內容,每個元素代表一列內容
8659
				#$conf["title"]=array();
8660
				#$conf["css::spanSection"]["data"],字串陣列,每個data屬性名稱為數值內容,例如array("a"=>"A","b"=>"B")
8661
				$conf["css::spanSection"]["data"]=array($fakeScrollingListDataVar=>base64_encode(json_encode(array("outputValue"=>$conf["outputValue"],"sendValue"=>$conf["sendValue"],"defaultValue"=>$conf["defaultValue"],"defaultShowVal"=>$defaultShowVal))));
226 liveuser 8662
 
3 liveuser 8663
				#如果有設置 $conf["dataFormId"]
8664
				if(isset($conf["dataFormId"])){
226 liveuser 8665
 
3 liveuser 8666
					#設置 data-form-id 屬性
8667
					$conf["css::spanSection"]["data"]["form-id"]=$conf["dataFormId"];
226 liveuser 8668
 
3 liveuser 8669
					}#if end
226 liveuser 8670
 
3 liveuser 8671
				$spanSection=css::spanSection($conf["css::spanSection"]);
8672
				unset($conf["css::spanSection"]);
8673
 
8674
				#如果建立span區段失敗
8675
				if($spanSection["status"]==="false"){
8676
 
8677
					#設置執行失敗
8678
					$result["status"]="false";
8679
 
8680
					#設置執行錯誤訊息
8681
					$result["error"]=$spanSection;
8682
 
8683
					#回傳結果
8684
					return $result;
8685
 
8686
					}#if end
8687
 
8688
				#取得span的內容
8689
				$optionOutEle=$optionOutEle.$spanSection["content"];
8690
 
8691
				#跳出switch
8692
				break;
8693
 
8694
			#其他數值的內容
8695
			default :
8696
 
8697
				#設置不換行
8698
				$conf["newLineOption"]="false";
8699
 
8700
				#跳出switch
8701
				break;
8702
 
8703
			}#switch end
8704
 
8705
			#如果有設置提示文字
8706
			if(isset($conf["comment"])){
8707
 
8708
				#設置提示文字
8709
				#函式說明:
8710
				#<div>區塊,裡面可以指定css的class樣式,可以指定提示文字.
8711
				#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.
8712
				#$result["functin"],字串,當前函數的名稱.
8713
				#$result["error"],陣列,錯訊訊息.
8714
				#$result["content"],字串,含有<div>標籤的內容.
8715
				#必填參數:
8716
				#$conf["contentArray"],字串陣列,要放入的內容陣列.
8717
				$conf["css::divSection"]["contentArray"]=array($conf["comment"]);
8718
				#可省略參數
8719
				#$conf["id"],字串,div區塊的id.
8720
				$conf["css::divSection"]["id"]=$conf["name"]."_comment";
8721
				#$conf["styleAttr"],字串陣列,給div區段要套用的style樣式屬性.
8722
				#$conf["styleAttr"]=array();
8723
				#$conf["styleVal"],字串陣列,給div區段要套用的style樣式數值.
8724
				#$conf["styleVal"]=array();
8725
				#$conf["class"],字串,div區段要套用的css樣式.
8726
				#$conf["class"]="";
8727
				#$conf["title"],陣列,滑鼠移到上面時要顯示的內容,每個元素代表一列內容.
8728
				#$conf["title"]=array();
8729
				#$conf["oneScreenSize"],字串,div區塊是否要占一個螢幕的大小,預設為"false"不設定,"true"為設定成一個螢幕的大小.
8730
				#$conf["oneScreenSize"]="false";
8731
				#$conf["textAlignCenter"],字串,div區塊是否要置中,預設為$conf["oneScreenSize"]的值,"false"為不置中,"true"代表要置中.
8732
				#$conf["textAlignCenter"]="";
8733
				#$conf["css::divSection"["data"],字串陣列,每個要設置的屬性data內容,例如array("option1"=>"A","option2"=>"B"),預設不使用.
8734
				#$conf["css::divSection"]["data"]=array($fakeScrollingListDataVar=>base64_encode(json_encode(array("outputValue"=>$conf["outputValue"],"sendValue"=>$conf["sendValue"],"defaultValue"=>$conf["defaultValue"],"defaultShowVal"=>$defaultShowVal))));
8735
				$divSection=css::divSection($conf["css::divSection"]);
8736
				unset($conf["css::divSection"]);
8737
 
8738
				#如果建立div區段失敗
8739
				if($divSection["status"]==="false"){
8740
 
8741
					#設置執行失敗
8742
					$result["status"]="false";
8743
 
8744
					#設置執行錯誤訊息
8745
					$result["error"]=$divSection;
8746
 
8747
					#回傳結果
8748
					return $result;
8749
 
8750
					}#if end
8751
 
8752
				#取得div的內容
8753
				$optionOutEle=$divSection["content"].$optionOutEle;
8754
 
8755
				}#if end
8756
 
8757
			#設置語法內容
8758
			$result["content"]=&$optionOutEle;
8759
 
8760
			#取得表單的名稱
8761
			$name=$conf["name"];
8762
 
8763
			#如果 readOnly
8764
			if($conf["readOnly"]==="true"){
226 liveuser 8765
 
3 liveuser 8766
				#設置執行正常
8767
				$result["status"]="true";
8768
 
8769
				#回傳結果
176 liveuser 8770
				return $result;
226 liveuser 8771
 
3 liveuser 8772
				}#if end
8773
 
8774
			#函式說明:
8775
			#將要執行的script語法透過該函式執行(會在程式外層用<script></script>包起來).
8776
			#回傳結果:
8777
			#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
8778
			#$result["error"],錯誤訊息陣列
8779
			#$result["function"],當前執行的函數名稱
8780
			#$result["content"],要執行的javaScript語法
8781
			#必填參數:
8782
			#$conf["script"],字串,要執行的javaScript語法.
8783
			$conf["javaScript::toScript"]["script"]="";
8784
			#可省略參數:
8785
			#$conf["onReady"],字串,是否要在網頁完全載入後再執行,"false"為不等載入完就先執行,預設為"true"要等載入完再執行.
8786
			#$conf["onReady"]="true";
8787
			#$conf["globalJs"],字串陣列,為要放入<script>標籤的js全域變數.
8788
			$conf["javaScript::toScript"]["globalJs"][]=
8789
			"
8790
			var ".$name."=document.getElementById('".$name."');
8791
 
8792
			//將下拉式選單綁定'click'事件,觸發時要執行物件__qbpwcf_scrollingList的函數
8793
			".$name.".addEventListener('click',function(event){
8794
 
8795
				//debug
8796
				console.log(event);
8797
 
8798
				//取消預設點擊的效果
8799
				event.preventDefault();
8800
 
8801
				//取得下拉式選單內容
8802
				var inputSelect=event.target;
8803
 
8804
				//debug
8805
				//console.log(inputSelect);
8806
 
8807
				//讓下拉式選單趕緊隱藏
8808
				inputSelect.style.opacity='0';
8809
 
8810
				//解析選項的資訊
8811
				var optionsInfo=JSON.parse(atob(inputSelect.dataset.qbpwcfFakescrollinglistOptions));
8812
 
8813
				//取得選項的數目
8814
				var opLen=optionsInfo.sendValue.length;
8815
 
8816
				//新增覆蓋全螢幕的div
8817
				var root=document.createElement('div');
8818
 
8819
				//設置最外層div的id
8820
				root.setAttribute('id','scrollingListRootDiv');
8821
 
8822
				//設置最外層div的樣式
8823
				root.setAttribute('class','__qbpwcf_scrollingListRootDiv');
8824
 
8825
				//新增為了將不足divForMiddle可見高度的選項們置中的div
8826
				var divForMiddle=document.createElement('div');
8827
 
8828
				//設置為了上下置中的div樣式
8829
				divForMiddle.setAttribute('class','__qbpwcf_scrollingListOutterDiv');
8830
 
8831
				//初始化記錄選擇的選項index
8832
				var selectedOptionIndex=-1;
8833
 
8834
				//針對每個選項
8835
				for(var i=0;i<opLen;i++){
8836
 
8837
					//debug
8838
					//console.log(i);
8839
 
8840
					//debug
8841
					//console.log(optionsInfo.sendValue[i]);
8842
 
8843
					//取得選項實際數值
8844
					var opVal=optionsInfo.sendValue[i];
8845
 
8846
					//debug
8847
					//console.log(optionsInfo.showValue[i]);
8848
 
8849
					//取得選項顯示名稱
8850
					//var opShow=optionsInfo.sendValue[i];
8851
					var opShow=optionsInfo.outputValue[i];
8852
 
8853
					//debug
8854
					//console.log(opVal+'=>'+opShow);
8855
 
8856
					//建立選項的div
8857
					var opDiv=document.createElement('div');
8858
 
8859
					//讓選項上下置中
8860
					opDiv.style.paddingTop='15px';
8861
 
8862
					//設置選項div的class
8863
					opDiv.setAttribute('class','__qbpwcf_inputSelect __qbpwcf_inputSelect_hover');
8864
 
8865
					//設置選項div的數值內容
8866
					opDiv.setAttribute('data-val',opVal);
8867
 
8868
					//設置選項div的編號(從0開始)
8869
					opDiv.setAttribute('data-no',i);
226 liveuser 8870
 
3 liveuser 8871
					//設置裡面的文字要換行的時候改用...表示
8872
					opDiv.style.whiteSpace='nowrap';
176 liveuser 8873
					opDiv.style.width='100%';
3 liveuser 8874
					opDiv.style.overflow='hidden';
8875
					opDiv.style.textOverflow='ellipsis';
226 liveuser 8876
 
3 liveuser 8877
					//偶數欄位
8878
					if(i%2===0)
8879
					{
8880
						//設置選項div底色為藍色
8881
						opDiv.style.backgroundColor='CCCCFF';
8882
					}
8883
					//反之為奇數欄位
8884
					else
8885
					{
8886
						//設置選項div底色為紅色
8887
						opDiv.style.backgroundColor='FFCCCC';
8888
					}
8889
 
8890
					//解析選項的資訊
8891
					var oriOptionsInfo=JSON.parse(atob(inputSelect.dataset.qbpwcfFakescrollinglistOptions));
8892
 
8893
					//若該選項為當前選擇的項目
8894
					if(oriOptionsInfo.sendValue[i]===inputSelect.innerText){
8895
 
8896
						//debug
8897
						//console.log('第'+opDiv.attributes['data-no'].value+'個選項為現有選擇的項目');
8898
 
8899
						//標記該選項為原先所選擇的項目
8900
						opDiv.setAttribute('data-selected','true');
8901
 
8902
						//記錄原先所選擇的項目的index
8903
						var selectedOptionIndex=parseInt(opDiv.attributes['data-no'].value);
8904
 
8905
						}//if end
8906
 
8907
					//建立選項名稱文字節點
8908
					var textnode = document.createTextNode(opShow);
8909
 
8910
					//將文字放進選項的div
8911
					opDiv.appendChild(textnode);
8912
 
8913
					//將選項放進為了上下左右置中的div
8914
					divForMiddle.appendChild(opDiv);
8915
 
8916
					}//for end
8917
 
8918
				//新增為了上下左右置中的div
8919
				var divForCenterMiddle=document.createElement('div');
8920
 
8921
				//設置為了內部元素都上下左右置中的div樣式
8922
				divForCenterMiddle.setAttribute('class','__qbpwcf_scrollingListInnerDiv');
8923
 
8924
				//將上下置中的選項們放進可以上下左右置中的div
8925
				divForCenterMiddle.appendChild(divForMiddle);
8926
 
8927
				//將選項放進最外層的div
8928
				root.appendChild(divForCenterMiddle);
8929
 
8930
				//將整個div放到body裡面
8931
				document.body.appendChild(root);
8932
 
8933
				//調整滾軸表單的置中效果
8934
				scrollingListMiddleFunction();
8935
 
8936
				//取得所有選項
8937
				var allOptions=document.getElementsByClassName('__qbpwcf_inputSelect_hover');
8938
 
8939
				//debug
8940
				//console.log(allOptions);
8941
 
8942
				//移動滾軸讓原本選擇的選項盡量置中
8943
 
8944
				//原先選擇的項目索引
8945
				//console.log(selectedOptionIndex);
8946
 
8947
				//opLen 選項的數目
8948
				//console.log(opLen);
8949
 
8950
				//取得選單的滾軸上端位置
8951
				//var scrollingListScrollTop=document.getElementById('scrollingListRootDiv').children[0].scrollTop;
8952
 
8953
				//debug
8954
				//console.log(scrollingListScrollTop);
8955
 
8956
				//取得選單的滾軸上端位置最大值
8957
				var scrollingListScrollTopMax=document.getElementById('scrollingListRootDiv').children[0].scrollTopMax;
8958
 
8959
				//debug
8960
				//console.log(scrollingListScrollTopMax);
8961
 
8962
				//取得選單的可見高度
8963
				//var scrollingListViewHeight=document.getElementById('scrollingListRootDiv').children[0].clientHeight;
8964
 
8965
				//debug
8966
				//console.log(scrollingListViewHeight);
8967
 
8968
				//取得選單含滾軸的總高度
8969
				//var scrollingListScrollHeight=document.getElementById('scrollingListRootDiv').children[0].scrollHeight;
8970
 
8971
				//debug
8972
				//console.log(scrollingListScrollHeight);
8973
 
8974
				//debug
8975
				//console.log(selectedOptionIndex);
8976
 
8977
				//如果有滾軸
8978
				if(scrollingListScrollTopMax!==0){
8979
 
8980
					//如果是第一個選項
8981
					if(selectedOptionIndex===0){
8982
 
8983
						//滾軸拉到最上面
8984
						document.getElementById('scrollingListRootDiv').children[0].scrollTop=0;
8985
 
8986
						//debug
8987
						//console.log('scrollingListScrollTop=0');
8988
 
8989
						}//if end
8990
 
8991
					//如果之前選擇的選項索引剛好等於 opLen/2
8992
					else if(((selectedOptionIndex+1)===(opLen/2))){
8993
 
8994
						//debug
8995
						//console.log('之前選擇的選項索引剛好等於一半');
8996
 
8997
						//取得新的滾軸高度
8998
						var newScrollTop=scrollingListScrollTopMax/2;
8999
 
9000
						//設置滾軸的上端位置
9001
						document.getElementById('scrollingListRootDiv').children[0].scrollTop=newScrollTop;
9002
 
9003
						//debug
9004
						//console.log('scrollingListScrollTop='+newScrollTop.toString());
9005
 
9006
						}//if end
9007
 
9008
					//如果之前選擇的選項索引小於半
9009
					else if((selectedOptionIndex+1)<(opLen/2)){
9010
 
9011
						//debug
9012
						//console.log('之前選擇的選項索引未過半,加幾個'+(selectedOptionIndex+1).toString());
9013
 
9014
						//取得新的滾軸高度
9015
						var newScrollTop=scrollingListScrollTopMax/opLen*selectedOptionIndex+1;
9016
 
9017
						//設置滾軸的上端位置
9018
						document.getElementById('scrollingListRootDiv').children[0].scrollTop=newScrollTop;
9019
 
9020
						//debug
9021
						//console.log('scrollingListScrollTop='+newScrollTop.toString());
9022
 
9023
						}//if end
9024
 
9025
					//如果之前選擇的選項索引過半
9026
					else if((selectedOptionIndex+1)>(opLen/2)){
9027
 
9028
						//debug
9029
						//console.log('之前選擇的選項索引過半,減幾個'+(opLen-selectedOptionIndex-1).toString());
9030
 
9031
						//取得新的滾軸高度
9032
						var newScrollTop=scrollingListScrollTopMax-scrollingListScrollTopMax/opLen*(opLen-selectedOptionIndex-1);
9033
 
9034
						//設置滾軸的上端位置
9035
						document.getElementById('scrollingListRootDiv').children[0].scrollTop=newScrollTop;
9036
 
9037
						//debug
9038
						//console.log('scrollingListScrollTop='+newScrollTop.toString());
9039
 
9040
						}//if end
9041
 
9042
					//如果是最後一個選項
9043
					else if(selectedOptionIndex===opLen){
9044
 
9045
						//如果是最後一個選項
9046
						document.getElementById('scrollingListRootDiv').children[0].scrollTop=scrollingListScrollTopMax;
9047
 
9048
						//debug
9049
						//console.log('scrollingListScrollTop='+scrollingListScrollTopMax);
9050
 
9051
						}//if end
9052
 
9053
					//不應該跑到的地方
9054
					else{
9055
 
9056
						//debug
9057
						console.log('error occur!');
9058
 
9059
						}//else end
9060
 
9061
					}//if end
9062
 
9063
				//針對每個選項
9064
				for(var i=0;i<allOptions.length;i++){
9065
 
9066
					//綁定所有選項的 'click' 事件
9067
					allOptions[i].addEventListener('click',function(event){
9068
 
9069
						//debug
9070
						//console.log(event);
9071
 
9072
						//取得點擊到的選項
9073
						var clickedOption=event.target;
9074
 
9075
						//debug
9076
						//console.log(clickedOption);
9077
 
9078
						//取得點擊到的選項數值
9079
						var clickedValue=clickedOption.attributes['data-val'].value;
9080
 
9081
						//debug
9082
						//console.log(clickedValue);
9083
 
9084
						//取得點擊到的選項編號
9085
						var clickedNo=clickedOption.attributes['data-no'].value;
9086
 
9087
						//debug
9088
						//console.log(clickedNo);
9089
 
9090
						//取得點擊到的選項名稱
9091
						var clickedName=clickedOption.innerHTML;
9092
 
9093
						//debug
9094
						//console.log(clickedName);
9095
 
9096
						//解析選項的資訊
9097
						var oriOptionsInfo=JSON.parse(atob(inputSelect.dataset.qbpwcfFakescrollinglistOptions));
9098
 
9099
						//取得顯示元素
9100
						var ".$name."=document.getElementById('".$name."');
9101
 
9102
						//更新選取的選項數值顯示內容
9103
						".$name.".innerText=oriOptionsInfo.outputValue[clickedNo];
9104
 
9105
						//取消透明效果
9106
						".$name.".style.opacity='unset';
9107
 
9108
						//取得要移除 scrolling list 的 div
9109
						var divToDel=document.getElementById('scrollingListRootDiv');
9110
 
9111
						//debug
9112
						//console.log(divTodel);
9113
 
9114
						//移除 scrolling list div
9115
						divToDel.remove();
9116
 
9117
						//復原下拉式選單
9118
						inputSelect.style.opacity='unset';
9119
 
9120
						".$valNotSend."
9121
 
9122
						".$sendForm."
9123
 
9124
						});//function end
9125
 
9126
					}//for end
9127
 
9128
					//建立 close icon
9129
					window.form_fakeScrollingList_closeIcon_".$conf["name"]."(".$name.");
9130
				});
9131
			";
9132
			#$conf["jsFunciton"],字串陣列,為要放入<script>標籤的js函數.
9133
			$conf["javaScript::toScript"]["jsFunciton"][]=
9134
			"
9135
			//馬上傳送表單,key代表要傳送的元素名稱,val代表元素對應的數值內容,rev代表要傳送到哪個地方.
9136
			window.form_fakeScrollingList_sendForm_".$conf["name"]."=function(key,val,rev,hidvar){
9137
 
9138
				//debug
9139
				console.log('prepare send form');
9140
 
9141
				//new XMLHttpRequest
9142
				xmlhttp=new XMLHttpRequest();
9143
 
9144
				//set response type to html document
9145
				xmlhttp.responseType='document';
9146
 
9147
				//當運行狀態改變時
9148
				xmlhttp.onreadystatechange=function(){
9149
 
9150
					//如果狀態為4且response code為200
9151
					if(xmlhttp.readyState==4 && xmlhttp.status==200){
9152
 
9153
						//將回應進行處理
9154
						res=xmlhttp.response;
9155
 
9156
						//debug
9157
						console.log(res);
9158
						console.log('url:'+res.URL);
9159
						console.log('title:'+res.title);
9160
 
9161
						//將回應刷新到當前頁面
226 liveuser 9162
 
3 liveuser 9163
						//no use?
9164
						stateObj={};
226 liveuser 9165
 
3 liveuser 9166
						//取得新 title
9167
						title=res.title;
226 liveuser 9168
 
3 liveuser 9169
						//取得新 url
9170
						newUrl=res.URL;
226 liveuser 9171
 
3 liveuser 9172
						//更新網頁標題與網址
9173
						//參考資料:https://developer.mozilla.org/en-US/docs/Web/API/History_API
9174
						history.pushState(stateObj, title, newUrl);
9175
 
9176
						//開新文件
9177
						document.open('text/html',true);
9178
 
9179
						//寫入取得的完整回應
9180
						document.write(res.all[0].outerHTML);
9181
 
9182
						//結束輸出
9183
						document.close();
9184
 
9185
						}//if end
9186
 
9187
					}//function end
9188
 
9189
				//建立表單物件
9190
				var formData = new FormData();
9191
 
9192
				//新增表單的名稱與對應的數值
9193
				formData.append(key,val);
9194
 
9195
				//如果有隱藏的表單變數
9196
				if(hidvar!==''){
9197
 
9198
					//解析隱藏的表單變數
9199
					hidvar=JSON.parse(atob(hidvar));
9200
 
9201
					//另存隱藏變數的名稱
9202
					hiddenVar=hidvar.hiddenVar;
9203
 
9204
					//另存隱藏變數對應的數值內容
9205
					hiddenVarValue=hidvar.hiddenVarValue;
9206
 
9207
					//取得隱藏變數的數量
9208
					hiddenVarCount=hiddenVar.length;
9209
 
9210
					//針對每個隱藏的表單變數
9211
					for(i=0;i<hiddenVarCount;i++){
9212
 
9213
						//新增表單隱藏變數的名稱與對應的數值
9214
						formData.append(hiddenVar[i],hiddenVarValue[i]);
9215
 
9216
						}//for end
9217
 
9218
					}//if end
9219
 
9220
				//用 post 傳送到 rev
9221
				xmlhttp.open('POST',rev);
9222
 
9223
				//set ajax header
9224
				xmlhttp.setRequestHeader('X-Requested-With','XMLHttpRequest');
9225
 
9226
				//傳送數值
9227
				xmlhttp.send(formData);
9228
 
9229
				//debug
9230
				console.log('form sended');
9231
 
9232
				}//function sendForm end
9233
 
9234
			//關閉 list 的按鈕與事件
9235
			window.form_fakeScrollingList_closeIcon_".$conf["name"]."=function(sectionId){
9236
 
9237
				//debug
9238
				console.log(sectionId);
9239
 
9240
				//建立 close icon
9241
				var closeIcon = document.createElement('img');
9242
 
9243
				//取得顯示項目的元素id
9244
				closeIcon.sectionId=sectionId;
9245
 
9246
				//設置 close icon 的樣式
9247
				closeIcon.style['position']='fixed';
9248
				closeIcon.style['top']='15%';
9249
				closeIcon.style['left']='85%';
9250
				closeIcon.style['width']='5%';
9251
				closeIcon.style['min-width']='30px';
9252
				closeIcon.style['max-width']='50px';
9253
				closeIcon.style['cursor']='pointer';
9254
 
9255
				//設置 close icon img 的屬性
9256
				closeIcon.src='".$closeIcon."';
9257
 
9258
				//設置 close icon img 的id
9259
				closeIcon.setAttribute('id','qbpwcfScrollingListCloseIcon');
9260
 
9261
				//取得 scrollingList 的 root div
9262
				var slrd=document.getElementById('scrollingListRootDiv');
9263
 
9264
				//將 close icon outer div 放到 scrollingList 的 root div 裡面
9265
				slrd.appendChild(closeIcon);
9266
 
9267
				//取得 close icon img
9268
				var closeIcon=document.getElementById('qbpwcfScrollingListCloseIcon');
9269
 
9270
				//新增 close icon img 的點擊事件
9271
				closeIcon.addEventListener('click',function(){
9272
 
9273
					//取得要移除 scrolling list 的 div
9274
					var divToDel=document.getElementById('scrollingListRootDiv');
9275
 
9276
					//debug
9277
					//console.log(divTodel);
9278
 
9279
					//移除 scrolling list div
9280
					divToDel.remove();
9281
 
9282
					//debug
9283
					console.log(closeIcon.sectionId);
9284
 
9285
					//取得顯示元素,移除透明效果,顯示數值
9286
					closeIcon.sectionId.style.opacity='unset';
9287
 
9288
					});
9289
 
9290
				}//function closeIcon end
9291
			";
9292
			#參考資料:
9293
			#http://stackoverflow.com/questions/9899372/pure-javascript-equivalent-to-jquerys-ready-how-to-call-a-function-when-the
9294
			$toScript=javaScript::toScript($conf["javaScript::toScript"]);
9295
			unset($conf["javaScript::toScript"]);
9296
 
9297
			#如果建立 script 失敗
9298
			if($toScript["status"]==="false"){
9299
 
9300
				#設置執行失敗
9301
				$result["status"]="false";
9302
 
9303
				#設置執行錯誤訊息
9304
				$result["error"]=$toScript;
9305
 
9306
				#回傳結果
9307
				return $result;
9308
 
9309
				}#if end
9310
 
9311
			#傳接 js
9312
			$result["content"]=$result["content"].$toScript["content"];
9313
 
9314
			#設置執行正常
9315
			$result["status"]="true";
9316
 
9317
			#回傳結果
9318
			return $result;
9319
 
9320
		}#funciton fakeScrollingList end
9321
 
9322
	/*
9323
	#函式說明:
9324
	#建立含有分群功能的下拉式選單
9325
	#回傳結果:
9326
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
9327
	#$result["error"],錯誤訊息陣列.
9328
	#$result["content"],語法.
9329
	#必填參數:
9330
	#$conf["option"][$group][$optionDisplayName]=$autualVal,二、三維字串陣列,代表$group群組的選項$optionDisplayName實際上傳送的內容為$autualVal;若為$conf["option"][$option]=$autualVal,則代表無群組的選項$option值為$autualVal.
9331
	$conf["option"][][]="";
9332
	#可省略參數:
9333
	#$conf["name"],字串,選單用於傳送的名稱,預設為"pullDownList[]".
9334
	#$conf["name"]="pullDownList[]";
9335
	#$conf["id"],字串,元素id,預設跟$conf["name"]一樣.
9336
	#$conf["id"]="pullDownList[]";
9337
	#$conf["default"],字串陣列,代表哪個群組的選項是預設要選取的,$conf["default"]=array("g1","v1")代表g1群組的v1選擇為預設值;$conf["default"]=array("o1")代表選項顯示為o1者為預設的選項.
9338
	#$conf["default"]=array($group,$optionDisplayName);
9339
	#$conf["class"],字串陣列,代表要使用哪些css的class.
9340
	#$conf["class"]=array();
9341
	#$conf["style"],二維字串陣列,代表要使用哪些css style,例如$conf["style"]["color"]="black",就代表使用"color"屬性,屬性值為"black".
9342
	#$conf["style"]["attr"]="";
9343
	#$conf["notSelectedText"],一維陣列字串,沒有選擇項目時要顯示的選項為何,預設為$conf["notSelectedText"]["請選擇"]="unSelected";則代表顯示"請選擇",值為"unSelected".
9344
	#$conf["notSelectedText"]["請選擇"]="unSelected"
9345
	#$conf["onChangeFunction"],字串,當下拉式選單的內容變動時,要執行哪個js函數與要帶的參數,或要做的js,預設為"return false;".
9346
	#$conf["onChangeFunction"]="return false;";
9347
	#參考資料:
9348
	#HTML <optgroup> Tag=>http://www.w3schools.com/Tags/tag_optgroup.asp
9349
	#備註:
9350
	#無.
9351
	*/
9352
    	public static function pullDownList(&$conf){
9353
 
9354
		#初始化要回傳的結果
9355
		$result=array();
9356
 
9357
		#取得當前執行的函數名稱
9358
		$result["function"]=__FUNCTION__;
9359
 
9360
		#如果沒有參數
9361
		if(func_num_args()==0){
9362
 
9363
			#設置執行失敗
9364
			$result["status"]="false";
9365
 
9366
			#設置執行錯誤訊息
9367
			$result["error"]="函數".$result["function"]."需要參數";
9368
 
9369
			#回傳結果
9370
			return $result;
9371
 
9372
			}#if end
9373
 
9374
		#取得參數
9375
		$result["argu"]=$conf;
9376
 
9377
		#如果 $conf 不為陣列
9378
		if(gettype($conf)!=="array"){
9379
 
9380
			#設置執行失敗
9381
			$result["status"]="false";
9382
 
9383
			#設置執行錯誤訊息
9384
			$result["error"][]="\$conf變數須為陣列形態";
9385
 
9386
			#如果傳入的參數為 null
9387
			if($conf===null){
9388
 
9389
				#設置執行錯誤訊息
9390
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
9391
 
9392
				}#if end
9393
 
9394
			#回傳結果
9395
			return $result;
9396
 
9397
			}#if end
9398
 
9399
		#檢查參數
9400
		#函式說明:
9401
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
9402
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
9403
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
9404
		#$result["function"],當前執行的函式名稱.
9405
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
9406
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
9407
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
9408
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
9409
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
9410
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
9411
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
9412
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
9413
		#必填參數:
9414
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
9415
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
9416
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
9417
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("option");
9418
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
9419
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
9420
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
9421
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
9422
		#可省略參數:
9423
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
9424
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
9425
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
9426
		#$conf["canNotBeEmpty"]=array();
9427
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
9428
		#$conf["canBeEmpty"]=array();
9429
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
9430
		$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("name","id","default","class","style");
9431
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
9432
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("name","id","default","class","style","notSelectedText","onChangeFunction");
9433
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
9434
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","array","array","array","array","string");
9435
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
9436
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("pullDownList[]","pullDownList[]",null,null,null,array("請選擇"=>"unSelected"),"return false;");
9437
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
9438
		#$conf["arrayCountEqualCheck"][]=array();
9439
		#參考資料:
9440
		#array_keys=>http://php.net/manual/en/function.array-keys.php
9441
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
9442
		unset($conf["variableCheck::checkArguments"]);
9443
 
9444
		#如果檢查參數失敗
9445
		if($checkArguments["status"]==="false"){
9446
 
9447
			#設置錯誤識別
9448
			$result["status"]="false";
9449
 
9450
			#設置錯誤訊息
9451
			$result["error"]=$checkArguments;
9452
 
9453
			#回傳結果
9454
			return $result;
9455
 
9456
			}#if end
9457
 
9458
		#如果檢查不通過
9459
		if($checkArguments["passed"]==="false"){
9460
 
9461
			#設置錯誤識別
9462
			$result["status"]="false";
9463
 
9464
			#設置錯誤訊息
9465
			$result["error"]=$checkArguments;
9466
 
9467
			#回傳結果
9468
			return $result;
9469
 
9470
			}#if end
9471
 
9472
		#檢查 $conf["option"] 是否為二維陣列
9473
		#針對$conf["option"]的每個元素
9474
		foreach($conf["option"] as $groups){
9475
 
9476
			#如果$arrays不為陣列形態
9477
			if(gettype($groups)!=="array" && gettype($groups)!=="string"){
9478
 
9479
				#設置錯誤識別
9480
				$result["status"]="false";
9481
 
9482
				#設置錯誤訊息
9483
				$result["error"][]="參數 option 須為一、二維字串陣列";
9484
 
9485
				#回傳結果
9486
				return $result;
9487
 
9488
				}#if end
9489
 
9490
			}#foreach end
9491
 
9492
		#初始化要套用 css style 屬性字串
9493
		$style="";
9494
 
9495
		#如果有設定 $conf["style"]
9496
		if(isset($conf["style"])){
9497
 
9498
			#初始化儲存style屬性的陣列
9499
			$styleAttr=array();
9500
 
9501
			#初始化儲存style屬性值的陣列
9502
			$styleVal=array();
9503
 
9504
			#$conf["style"] 有幾個元素就執行幾次
9505
			foreach($conf["style"] as $attr => $val){
9506
 
9507
				#如果屬性值不為字串
9508
				if(gettype($attr)!=="string" || gettype($val)!=="string"){
9509
 
9510
					#設置執行不正常
9511
					$result["status"]="false";
9512
 
9513
					#設置執行錯誤
9514
					$result["error"][]="參數style的元素key與value皆須為字串";
9515
 
9516
					#回傳結果
9517
					return $result;
9518
 
9519
					}#if end
9520
 
9521
				#取得屬性
9522
				$styleAttr[]=$attr;
9523
 
9524
				#取得屬性值
9525
				$styleVal[]=$val;
9526
 
9527
				}#foreach end
9528
 
9529
			#如果有屬性與值,且數量對應正確
9530
			if(count($styleAttr)>0 && count($styleVal)>0 && count($styleAttr)===count($styleVal)){
9531
 
9532
				#建立 css style 屬性字串
9533
				#函式說明:
9534
				#建立給與html標籤使用的style屬性字串.
9535
				#回傳結果:
9536
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
9537
				#$result["function"],當前執行的函數
9538
				#$result["error"],錯誤訊息陣列
9539
				#$result["content"],css設定內容
9540
				#必填參數:
9541
				$conf["css::styleStr"]["styleName"]=$styleAttr;#為屬性名稱,須為陣列值
9542
				$conf["css::styleStr"]["styleValue"]=$styleVal;#為屬性值,須為陣列值
9543
				$styleStr=css::styleStr($conf["css::styleStr"]);
9544
				unset($conf["css::styleStr"]);
9545
 
9546
				#如果建立style字串失敗
9547
				if($styleStr["status"]==="false"){
9548
 
9549
					#設置執行不正常
9550
					$result["status"]="false";
9551
 
9552
					#設置執行錯誤
9553
					$result["error"]=$styleStr;
9554
 
9555
					#回傳結果
9556
					return $result;
9557
 
9558
					}#if end
9559
 
9560
				#設置屬性字串
9561
				$style=$styleStr["content"];
9562
 
9563
				}#if end
9564
 
9565
			}#if end
9566
 
9567
		#初始化要套用的 css class 屬性字串
9568
		$class="";
9569
 
9570
		#如果有設定 $conf["class"]
9571
		if(isset($conf["class"])){
9572
 
9573
			#設定要套用的css類別
9574
			#函式說明:
9575
			#建立class屬性字串,亦即套用多個class樣式的設定字串.
9576
			#回傳結果:
9577
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
9578
			#$result["function"],當前執行的函數
9579
			#$result["error"],錯誤訊息陣列
9580
			#$result["content"],class屬性字串的內容
9581
			#必填參數:
9582
			#$conf["class"],字串陣列,要套用的類別樣式名稱.
9583
			$conf["css::classStr"]["class"]=$conf["class"];
9584
			$classStr=css::classStr($conf["css::classStr"]);
9585
			unset($conf["css::classStr"]);
9586
 
9587
			#如果建立套用css類別的屬性字串失敗
9588
			if($classStr["status"]==="false"){
9589
 
9590
				#設置錯誤識別
9591
				$result["status"]="false";
9592
 
9593
				#設置錯誤訊息
9594
				$result["error"]=$classStr;
9595
 
9596
				#回傳結果
9597
				return $result;
9598
 
9599
				}#if end
9600
 
9601
			#取得css類別屬性字串
9602
			$class=$classStr["content"];
9603
 
9604
			}#if end
9605
 
9606
		#設置當內容改變時要觸發的js
9607
		$onChangeJs="onChange=\"".$conf["onChangeFunction"]."\"";
9608
 
9609
		#初始化要回傳的語法
9610
		$result["content"]="<select name=\"".$conf["name"]."\" id=\"".$conf["id"]."\" ".$style." ".$class." ".$onChangeJs." >";
9611
 
9612
		#針對 $conf["notSelectedText"] 變數
9613
		foreach($conf["notSelectedText"] as $unSelText => $unSelVal){
9614
 
9615
			#設置未選擇的選項
9616
			$result["content"]=$result["content"]."<option value=\"".$unSelVal."\">".$unSelText."</option>";
9617
 
9618
			}#foreach end
9619
 
9620
		#針對每個 $conf["option"]
9621
		foreach($conf["option"] as $groupName => $options){
9622
 
9623
			#如果 $options 為陣列
9624
			if(gettype($options)==="array"){
9625
 
9626
				#則代表是群組選項
9627
 
9628
				#群組 $groupName 開始
9629
				$result["content"]=$result["content"]."<optgroup label=\"".$groupName."\">";
9630
 
9631
				#針對每個 $options
9632
				foreach($options as $optionName => $optionVal){
9633
 
9634
					#初始化預設選取的語法
9635
					$selected="";
9636
 
9637
					#如果有設置預設值
9638
					if(isset($conf["default"])){
9639
 
9640
						#如果存在群組選項
9641
						if(isset($conf["default"][1]) && isset($conf["default"][1])){
9642
 
9643
							#如果是預設的群組選項
9644
							if($groupName===$conf["default"][0] && $optionName===$conf["default"][1]){
9645
 
9646
								#設置選取的語法
9647
								$selected="selected";
9648
 
9649
								}#if end
9650
 
9651
							}#if end
9652
 
9653
						}#if end
9654
 
9655
					#選項 $optionName
9656
					$result["content"]=$result["content"]."<option value=\"".$optionVal."\" ".$selected." >$optionName</option>";
9657
 
9658
					}#foreache end
9659
 
9660
				#群組 $groupName 結束
9661
				$result["content"]=$result["content"]."</optgroup>";
9662
 
9663
				}#if end
9664
 
9665
			#反之如果是字串
9666
			else if(gettype($options)==="string"){
9667
 
9668
				#則代表無歸屬群組的選項
9669
				#初始化預設選取的語法
9670
				$selected="";
9671
 
9672
				#如果有設置預設值
9673
				if(isset($conf["default"])){
9674
 
9675
					#如果存在選項
9676
					if(isset($conf["default"][0])){
9677
 
9678
						#如果是預設的選項
9679
						if($groupName===$conf["default"][0]){
9680
 
9681
							#設置選取的語法
9682
							$selected="selected";
9683
 
9684
							}#if end
9685
 
9686
						}#if end
9687
 
9688
					}#if end
9689
 
9690
				#選項 $groupName 的值為 $options
9691
				$result["content"]=$result["content"]."<option value=\"".$options."\" ".$selected." >$groupName</option>";
9692
 
9693
				}#if end
9694
 
9695
			}#foreach end
9696
 
9697
		#下拉式選單結束
9698
		$result["content"]=$result["content"]."</select>";
9699
 
9700
		#設置執行正常
9701
		$result["status"]="true";
9702
 
9703
		#回傳結果
9704
		return $result;
9705
 
9706
		}#function pullDownList end
9707
 
9708
	/*
9709
	#函式說明:
9710
	#黑點式選單(單選)
9711
	#回傳結果:
9712
	#$result["status"],執行是否正常,"true"代表正常,"false"代表失敗.
9713
	#$result["error"],錯誤訊息陣列.
9714
	#$result["content"],語法內容.
9715
	#$result["function"],設置當前執行的函式
9716
	#必填參數:
9717
	$conf["name"]="";#爲黑點式選單的名稱
9718
	$conf["sendValue"]=array();#爲陣列值,爲每個選項的實際傳送的數值,e.g. $sendValue = array("a","b","c","d","e");
9719
	#可省略參數:
9720
	#$conf["class"]="__withoutBorder";#爲要套用的class樣式,"__qbpwcf_inputRadioWithoutBorder"爲沒有框線的樣式;__qbpwcf_inputRadioWithBorder爲有框線的樣式
9721
	#$conf["outputValue"]=array();#爲陣列值,爲每個選項的實際顯示的數值, e.g. $outputValue = array("p","o","i","t","e"); 預設爲跟$conf["sendValue"]一樣。
9722
	#$conf["defaultValue"]="";#爲預設的選項,爲實際傳送的數值之一。
9723
	#$conf["comment"],字串,下拉式表單的註解文字.
9724
	#$conf["comment"]="";
9725
	#$conf["disableHr"]="true";#如果設爲"true",則結尾不用<hr>來結束單選的範圍,預設為"false".
9726
	#$conf["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。
9727
	#$conf["jsAction"]="";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
9728
	#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設為"false".
9729
	#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",其爲沒有框線的樣式;__withBorder爲有框線的樣式
9730
	#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是",也可以看成列裏面的元素開始,預設為"false".
9731
	#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,預設為"__withoutBorder",其爲沒有框線的樣式;__withBorder爲有框線的樣式
9732
	#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設為"false".
9733
	#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設為"false".
9734
	#$conf["brBetweenOption"]="true";#是否每個選項用<br>標籤隔開,預設為"true".
9735
	#參考資料:
9736
	#無.
9737
	#備註:
9738
	#無.
9739
	*/
9740
	public static function inputRadio($conf){
9741
 
9742
		#預設要回傳的數值
9743
		$result=array();
9744
 
9745
		#初始化要回傳的語法
9746
		$result["content"]="";
9747
 
9748
		#設置當前執行的函式
9749
		$result["function"]=__FUNCTION__;
9750
 
9751
		#如果 $conf 不為陣列
9752
		if(gettype($conf)!="array"){
9753
 
9754
			#設置執行失敗
9755
			$result["status"]="false";
9756
 
9757
			#設置執行錯誤訊息
9758
			$result["error"][]="\$conf變數須為陣列形態";
9759
 
9760
			#如果傳入的參數為 null
9761
			if($conf==null){
9762
 
9763
				#設置執行錯誤訊息
9764
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
9765
 
9766
				}#if end
9767
 
9768
			#回傳結果
9769
			return $result;
9770
 
9771
			}#if end
9772
 
9773
		#檢查參數
9774
		#函式說明:
9775
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
9776
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
9777
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
9778
		#$result["function"],當前執行的函式名稱.
9779
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
9780
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
9781
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
9782
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
9783
		#必填參數:
9784
		#$conf["form.checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
9785
		$conf["form.checkArguments"]["varInput"]=&$conf;
9786
		#$conf["form.checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
9787
		$conf["form.checkArguments"]["mustBeFilledVariableName"][]="name";
9788
		$conf["form.checkArguments"]["mustBeFilledVariableName"][]="sendValue";
9789
		#$conf["form.checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
9790
		$conf["form.checkArguments"]["mustBeFilledVariableType"][]="string";
9791
		$conf["form.checkArguments"]["mustBeFilledVariableType"][]="array";
9792
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
9793
		$conf["form.checkArguments"]["referenceVarKey"]="form.checkArguments";
9794
		#可省略參數:
9795
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
9796
		#$conf["canBeEmptyString"]="false";
9797
		#$conf["form.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
9798
		$conf["form.checkArguments"]["skipableVariableName"][]="class";
9799
		$conf["form.checkArguments"]["skipableVariableName"][]="outputValue";
9800
		$conf["form.checkArguments"]["skipableVariableName"][]="comment";
9801
		$conf["form.checkArguments"]["skipableVariableName"][]="disableHr";
9802
		$conf["form.checkArguments"]["skipableVariableName"][]="jsActivitor";
9803
		$conf["form.checkArguments"]["skipableVariableName"][]="jsAction";
9804
		$conf["form.checkArguments"]["skipableVariableName"][]="trStart";
9805
		$conf["form.checkArguments"]["skipableVariableName"][]="trClass";
9806
		$conf["form.checkArguments"]["skipableVariableName"][]="tdStart";
9807
		$conf["form.checkArguments"]["skipableVariableName"][]="tdClass";
9808
		$conf["form.checkArguments"]["skipableVariableName"][]="tdEnd";
9809
		$conf["form.checkArguments"]["skipableVariableName"][]="trEnd";
9810
		$conf["form.checkArguments"]["skipableVariableName"][]="brBetweenOption";
9811
		$conf["form.checkArguments"]["skipableVariableName"][]="defaultValue";
9812
		#$conf["form.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
9813
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9814
		$conf["form.checkArguments"]["skipableVariableType"][]="array";
9815
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9816
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9817
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9818
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9819
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9820
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9821
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9822
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9823
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9824
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9825
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9826
		$conf["form.checkArguments"]["skipableVariableType"][]="string";
9827
		#$conf["form.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
9828
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="__qbpwcf_inputRadioWithoutBorder";
9829
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="\$conf[\"sendValue\"]";
9830
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
9831
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="false";
9832
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
9833
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
9834
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="false";
9835
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="__qbpwcf_inputRadioWithoutBorder";
9836
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="false";
9837
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="__qbpwcf_inputRadioWithoutBorder";
9838
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="false";
9839
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="false";
9840
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]="true";
9841
		$conf["form.checkArguments"]["skipableVarDefaultValue"][]=null;
9842
		$checkResult=variableCheck::checkArguments($conf["form.checkArguments"]);
9843
		unset($conf["form.checkArguments"]);
9844
 
9845
		#如果$checkResult["status"] 等於 "false"
9846
		#意即如果檢查出錯
9847
		if($checkResult["status"]=="false"){
9848
 
9849
			#設置錯誤識別
9850
			$result["status"]="false";
9851
 
9852
			#設置錯誤訊息
9853
			$result["error"]=$checkResult;
9854
 
9855
			#回傳結果
9856
			return $result;
9857
 
9858
			}#if end
9859
 
9860
		#如果$checkResult["passed"] 等於 "false"
9861
		#意即如果檢查出錯
9862
		if($checkResult["passed"]=="false"){
9863
 
9864
			#設置錯誤識別
9865
			$result["status"]="false";
9866
 
9867
			#設置錯誤訊息
9868
			$result["error"]=$checkResult;
9869
 
9870
			#回傳結果
9871
			return $result;
9872
 
9873
			}#if end
9874
 
9875
		#如果其值爲 true
9876
		if($conf["trStart"]=="true"){
9877
 
9878
			#函式說明:
9879
			#列開始
9880
			#回傳結果:
9881
			#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
9882
			#$result["error"],函式錯誤訊息陣列.
9883
			#$result["content"],列開始的語法.
9884
			#$result["function"],當前執行的函式名稱.
9885
			#必填寫的參數:
9886
			$conf["table"]["trStart"]["class"]=$conf["trClass"];#該 tr 要套用套用的 css 樣式若爲 "" 則會採用預設的css樣式 __defaultTrCsssStyle,其屬性爲 border:1px solid blue
9887
			$trStart=table::trStart($conf["table"]["trStart"]);
9888
			unset($conf["table"]["trStart"]);
9889
 
9890
			#如果列開始失敗
9891
			if($trStart["status"]=="false"){
9892
 
9893
				#設置錯誤識別
9894
				$result["status"]="false";
9895
 
9896
				#設置錯誤訊息
9897
				$result["error"]=$trStart;
9898
 
9899
				#回傳結果
9900
				return $result;
9901
 
9902
				}#if end
9903
 
9904
			#串接列開始
9905
			$result["content"]=$result["content"].$trStart["content"];
9906
 
9907
			}#if end
9908
 
9909
		#如果其值爲 true
9910
		if($conf["tdStart"]=="true"){
9911
 
9912
			#函式說明:
9913
			#行開始
9914
			#回傳結果:
9915
			#$result,行開始的語法
9916
			#必填寫的參數:
9917
			$conf["table"]["tdStart"]["class"]=$conf["tdClass"];#該 td 要套用套用的 css 樣式
9918
				#預設的樣式
9919
				#"border-width","border","border-color","border-style","margin-right","margin-left"
9920
				#"100%","1px","#0000FF","solid","auto","auto"
9921
			$tdStart=table::tdStart($conf["table"]["tdStart"]);
9922
			unset($conf["table"]["tdStart"]);
9923
 
9924
			#如果 欄開始 失敗
9925
			if($tdStart["status"]=="false"){
9926
 
9927
				#設置錯誤識別
9928
				$result["status"]="false";
9929
 
9930
				#設置錯誤訊息
9931
				$result["error"]=$tdStar;
9932
 
9933
				#回傳結果
9934
				return $result;
9935
 
9936
				}#if end
9937
 
9938
			#串接欄開始
9939
			$result["content"]=$result["content"].$trStart["content"];
9940
 
9941
			}#if end
9942
 
9943
		#如果$conf["defaultValue"]沒有設定
9944
		if(!isset($conf["defaultValue"])){
9945
 
9946
			#則$conf["defaultValue"]爲""
9947
			$conf["defaultValue"]="";
9948
 
9949
			}#if end
9950
 
9951
		#如果$conf["outputValue"]沒設定
9952
		if(!isset($conf["outputValue"])){
9953
 
9954
			#則$conf["outputValue"]陣列內容將會等於$conf["sendValue"]陣列內容
9955
			$conf["outputValue"]=$conf["sendValue"];
9956
 
9957
			}#if end
9958
 
9959
		#暫存給註解用的css樣式
9960
		$commentCssStyle="";
9961
 
9962
		#如果爲 "__withBorder"
9963
		if($conf["class"]=="__withBorder"){
9964
 
9965
			#變更爲有框線的預設樣式
9966
			$conf["class"]="__withBorderInputRadioCssStyle";
9967
 
9968
			#取得註解要用的css樣式
9969
			$commentCssStyle=$conf["class"];
9970
 
9971
			}#if ned
9972
 
9973
		#如果爲 "__withoutBorder"
9974
		if($conf["class"]=="__withoutBorder"){
9975
 
9976
			#變更爲有框線的預設樣式
9977
			$conf["class"]="__withoutBorderInputRadioCssStyle";
9978
 
9979
			#取得註解要用的css樣式
9980
			$commentCssStyle=$conf["class"];
9981
 
9982
			}#if ned
9983
 
9984
		#則按照設定值
9985
		$conf["class"]=" class = ".$conf["class"]." ";
9986
 
9987
		#如果 $conf["jsActivitor"] 與 $conf["jsAction"] 皆有設定
9988
		if( isset($conf["jsActivitor"]) && isset($conf["jsAction"]) ){
9989
 
9990
			#則將設定值組合
9991
			$conf["jsCustom"]=" ".$conf["jsActivitor"]."=".$conf["jsAction"]." ";
9992
 
9993
			}#if end
9994
 
9995
		#如果 $conf["jsCustom"] 沒有設定
9996
		if(!isset($conf["jsCustom"])){
9997
 
9998
			#將其設爲空值
9999
			$conf["jsCustom"]="";
10000
 
10001
			}#if end
10002
 
10003
		#將有幾個選項的數目放進 $count
10004
		$count=count($conf["sendValue"]);
10005
 
10006
		#套用css樣式
10007
		$result["content"]=$result["content"]."<span ".$conf["class"]." >";
10008
 
10009
		#過濾 $conf["name"] 避免錯誤
10010
		#函式說明:
10011
		#處理字串避免網頁出錯
10012
		#回傳結果:
10013
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
10014
		#$result["function"],當前執行的函數.
10015
		#$result["content"],爲處理好的字串.
10016
		#$result["error"],錯誤訊息陣列.
10017
		#必填參數:
10018
		$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["name"];#爲要處理的字串
10019
		#可省略的參數:
10020
		$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
10021
			#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
10022
			#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
10023
		#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
10024
		$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
10025
		unset($conf["stringProcess::correctCharacter"]);
10026
 
10027
		#如果過濾字串失敗
10028
		if($correctCharacter["status"]=="false"){
10029
 
10030
			#設置執行失敗
10031
			$result["status"]="false";
10032
 
10033
			#設置執行錯誤訊息
10034
			$result["error"]=$correctCharacter;
10035
 
10036
			#回傳結果
10037
			return $result;
10038
 
10039
			}#if end
10040
 
10041
		#置換過濾好了的$conf["name"]
10042
		$conf["name"]=$correctCharacter["content"];
10043
 
10044
		#n個選項跑n此
10045
		for($i=0;$i<=($count-1);$i++){
10046
 
10047
			#如果選項的數值等於 預設的數值
10048
			if($conf["sendValue"][$i]==$conf["defaultValue"]){
10049
 
10050
				#則選取該選項
10051
				$result["content"]=$result["content"]."<label><input type = \"radio\" name = ".$conf["name"]." value = ".$conf["sendValue"][$i]." checked ".$conf["jsCustom"]." >".$conf["outputValue"][$i]."</label>";
10052
 
10053
				}#if end
10054
 
10055
			#反之
10056
			else{
10057
 
10058
				#選項的值等於現在畫面上的值
10059
				$result["content"]=$result["content"]."<label><input type = \"radio\" name = ".$conf["name"]." value = ".$conf["sendValue"][$i]." ".$conf["jsCustom"]." >".$conf["outputValue"][$i]."</label>";
10060
 
10061
				}#else end
10062
 
10063
			#如果 $conf["brBetweenOption"] 等於 "true"
10064
			if(($conf["brBetweenOption"]=="true")){
10065
 
10066
				#加上<br>標籤
10067
				$result["content"]=$result["content"]."<br>";
10068
 
10069
				}#if end
10070
 
10071
			}#for end
10072
 
10073
		#套用css樣式的範圍結束
10074
		$result["content"]=$result["content"]."</span ".$conf["class"]." >";
10075
 
10076
		#如果 不使用<hr> 的變數不存在
10077
		if(!isset($conf["disableHr"])){
10078
 
10079
			#則印出<hr>進行分割,以便放置下一個radioButton
10080
			$result["content"]=$result["content"]."<hr width = 0>";
10081
 
10082
			}#if end
10083
 
10084
		#如果其值爲 true
10085
		if($conf["tdEnd"]=="true"){
10086
 
10087
			#串接欄結束
10088
			$result["content"]=$result["content"]."</td>";
10089
 
10090
			}#if end
10091
 
10092
		#如果其值爲 true
10093
		if($conf["trEnd"]=="true"){
10094
 
10095
			#串接列結束
10096
			$result["content"]=$result["content"]."</tr>";
10097
 
10098
			}#if end
10099
 
10100
		#如果 $conf["comment"] 存在
10101
		if(isset($conf["comment"])){
10102
 
10103
			#給註解套上css樣式
10104
			#函式說明:
10105
			#<span>區塊,裡面可以指定css的class樣式,可以指定提示文字.
10106
			#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.
10107
			#$result["functin"],字串,當前函數的名稱.
10108
			#$result["error"],陣列,錯訊訊息.
10109
			#$result["content"],字串,含有<span>標籤的內容.
10110
			#必填參數:
10111
			#$conf["contentArray"],字串陣列,要放入的內容陣列.
10112
			$conf["css::spanSection"]["contentArray"]=array($conf["comment"]);
10113
			#可省略參數
10114
			#$conf["css::spanSection"]["class"],字串,div區段要套用的css樣式.
10115
			$conf["css::spanSection"]["class"]=$commentCssStyle;
10116
			#$conf["title"],陣列,滑鼠移到上面時要顯示的內容,每個元素代表一列內容
10117
			#$conf["title"]=array();
10118
			$spanSection=css::spanSection($conf["css::spanSection"]);
10119
			unset($conf["css::spanSection"]);
10120
 
10121
			#若建立 spanSection 失敗
10122
			if($spanSection["status"]=="false"){
10123
 
10124
				#設置錯誤識別
10125
				$result["status"]="false";
10126
 
10127
				#設置錯誤訊息
10128
				$result["error"]=$spanSection;
10129
 
10130
				#回傳結果
10131
				return $result;
10132
 
10133
				}#if end
10134
 
10135
			#加上註解
10136
			$result["content"]=$spanSection["content"]."<br>".$result["content"];
10137
 
10138
			}#if end
10139
 
10140
		#設置執行正常
10141
		$result["status"]="true";
10142
 
10143
		#回傳語法
10144
		return $result;
10145
 
10146
		}#function inputRadio end
10147
 
10148
	/*
10149
	#函式說明:
10150
	#勾選式選單(複選)
10151
	#回傳結果:
10152
	#$result["status"],執行是否正常,"true"代表正常,"false"代表失敗.
10153
	#$result["error"],錯誤訊息陣列.
10154
	#$result["content"],語法內容.
10155
	#$result["function"],當前執行的函式.
10156
	#必填參數:
10157
	$conf["name"]=array();#爲勾選式選單傳送時的各選項的名稱。例如:$conf["name"]=array("q-1","q-2","q-3","q-4","q-5");
10158
	$conf["sendValue"]=array();#爲陣列值,為勾選式選單實際傳送的內容.例如:$conf["sendValue"]=array("a","b","c","d","e");
10159
	#可省略參數:
10160
	#$conf["class"]=;#爲要套用的class樣式,預設為"__inputCheckBoxCssStyle",其樣式為"font-size:30px;text-align:center;"
10161
	#$conf["outputValue"]=array();#爲陣列值,爲每個選項的實際顯示的數值, e.g. $conf["outputValue"] = array("p","o","i","t","e"); 預設爲跟$conf["sendValue"]一樣。
10162
	#$conf["checkedOption"]=array();#爲那些選項是否要勾選,須爲陣列值。例如array("1","3","4"),就代表第1、3、4個選項是勾選的狀態。
10163
	#$conf["comment"]="";#為選單的註解
10164
	#$conf["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。
10165
	#$conf["jsAction"]="";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
10166
	#$conf["formName"]="";#爲表單的名稱
10167
	#$conf["formAction"]="";#爲表單要送到哪個php檔案。
10168
	#$conf["actionTarget"]="";#爲表單處理好後的呈現方式,有_top,_self,_blank,_parent,元素名稱也可以,預設為"_self"
10169
	#$conf["hiddenVar"],字串陣列,隱藏的變數名稱陣列.
10170
	#$conf["hiddenVar"]=array("");
10171
	#$conf["hiddanVarValue"],字串陣列,隱藏變數的數值內容.
10172
	#$conf["hiddenVarValue"]=array("");
10173
	#$conf["formEnd"]="false";#爲是否要表單結束,預設爲"false".
10174
	#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設爲"false".
10175
	#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是",也可以看成列裏面的元素開始,預設爲"false".
10176
	#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設爲"false".
10177
	#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設爲"false".
10178
	#$conf["brBetweenOption"]="true";#是否每個選項用<br>標籤隔開,"true"為要,預設爲"false".
10179
	#參考資料:
10180
	#無.
10181
	#備註:
10182
	#每個選項傳送的內容,修改成預設爲"true".
10183
	*/
10184
	public static function inputCheckBox(&$conf){
10185
 
10186
		#預設要回傳的數值
10187
		$result=array();
10188
 
10189
		#設置當前執行的函式
10190
		$result["function"]=__FUNCTION__;
10191
 
10192
		#初始化要回傳的語法
10193
		$result["content"]="";
10194
 
10195
		#如果 $conf 不為陣列
10196
		if(gettype($conf)!="array"){
10197
 
10198
			#設置執行失敗
10199
			$result["status"]="false";
10200
 
10201
			#設置執行錯誤訊息
10202
			$result["error"][]="\$conf變數須為陣列形態";
10203
 
10204
			#如果傳入的參數為 null
10205
			if($conf==null){
10206
 
10207
				#設置執行錯誤訊息
10208
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
10209
 
10210
				}#if end
10211
 
10212
			#回傳結果
10213
			return $result;
10214
 
10215
			}#if end
10216
 
10217
		#檢查參數
10218
		#函式說明:
10219
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
10220
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
10221
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
10222
		#$result["function"],當前執行的函式名稱.
10223
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
10224
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
10225
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
10226
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
10227
		#必填參數:
10228
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
10229
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
10230
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
10231
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("name","sendValue");
10232
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
10233
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("array","array");
10234
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
10235
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
10236
		#可省略參數:
10237
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
10238
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="true";
10239
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
10240
		$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("class","outputValue","checkedOption","comment","jsActivitor","jsAction","formName","formAction","actionTarget","trStart","tdStart","tdEnd","trEnd","brBetweenOption","hiddenVar","hiddenVarValue","formEnd");
10241
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
10242
		$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","array","array","string","string","string","string","string","string","string","string","string","string","string","array","array","string");
10243
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
10244
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array("__qbpwcf_inputCheckBoxCssStyle","\$conf[\"sendValue\"]",null,null,null,null,null,null,"_self","false","false","false","false","true",null,null,"false");
10245
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
10246
		unset($conf["variableCheck.checkArguments"]);
10247
 
10248
		#如果檢查失敗
10249
		if($checkResult["status"]=="false"){
10250
 
10251
			#設置執行不正常
10252
			$result["status"]="false";
10253
 
10254
			#程式停止執行
10255
			$result["error"]=$checkResult;
10256
 
10257
			#回傳結果
10258
			return $result;
10259
 
10260
			}#if end
10261
 
10262
		#如果檢查不通過
10263
		if($checkResult["passed"]=="false"){
10264
 
10265
			#設置執行不正常
10266
			$result["status"]="false";
10267
 
10268
			#程式停止執行
10269
			$result["error"]=$checkResult;
10270
 
10271
			#回傳結果
10272
			return $result;
10273
 
10274
			}#if end
10275
 
10276
		#如果 $conf["formAction"] 有設定
10277
		if(isset($conf["formAction"])){
10278
 
10279
			#如果 $conf["actionTarget"] 有設定
10280
			if(isset($conf["actionTarget"])){
10281
 
10282
				#指派設定值
10283
				$conf["form"]["start"]["target"]=$conf["actionTarget"];
10284
 
10285
				}#if end
10286
 
10287
			#如果 $conf["formName"] 沒有設置
10288
			if(!isset($conf["formName"])){
10289
 
10290
				#預設爲空數值
10291
				$conf["form"]["start"]["formName"]="  ";
10292
 
10293
				}#if end
10294
 
10295
			#函式說明:
10296
			#表單開始
10297
			#回傳結果:
10298
			#$result,表單開始的語法
10299
			#必填參數:
10300
			$conf["form"]["start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容
10301
			#可省略參數:
10302
			#$conf["form"]["start"]["name"]=$conf["formName"];#爲該表單的名稱
10303
			#$conf["method"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
10304
			#$conf["form"]["start"]["target"]=$conf["actionTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
10305
			#$conf["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是;
10306
			#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100%
10307
			$formStart=form::start($conf["form"]["start"]);
10308
			unset($conf["form"]["start"]);
10309
 
10310
			#如果表單開始失敗
10311
			if($formStart["status"]=="false"){
10312
 
10313
				#設置執行不正常
10314
				$result["status"]="false";
10315
 
10316
				#程式停止執行
10317
				$result["error"]=$formStart;
10318
 
10319
				#回傳結果
10320
				return $result;
10321
 
10322
				}#if end
10323
 
10324
			#串接表單開始
10325
			$result["content"]=$result["content"].$formStart["content"];
10326
 
10327
			}#if end
10328
 
10329
		#如果 $conf["hiddenVar"]與$conf["hiddenVarValue"]皆有設置
10330
		if(isset($conf["hiddenVar"]) && isset($conf["hiddenVarValue"])){
10331
 
10332
			#且陣列元素數目相同
10333
			if(count($conf["hiddenVar"])==count($conf["hiddenVarValue"])){
10334
 
10335
				#建立隱藏的表單
10336
				#傳送多個隱藏表單的資訊
10337
				#回傳的數值:
10338
				#$result,語法
10339
				#$result["sendedArrayName"],
10340
				#$result["sendedArrayValue"],
10341
				#$result["sendedArrayCount"],
10342
				#必填參數:
10343
				$conf["form"]["inputMutiHidden"]["nameArray"]=$conf["hiddenVar"];#欲傳送的隱藏陣列變數名稱
10344
				$conf["form"]["inputMutiHidden"]["valueArray"]=$conf["hiddenVarValue"];#欲傳送的隱藏陣列變數數值
10345
				$inputMultiHidden=form::inputMultiHidden($conf["form"]["inputMutiHidden"])["content"];
10346
				unset($conf["form"]["inputMutiHidden"]);
10347
 
10348
				#建立隱藏的表單失敗
10349
				if($inputMultiHidden["status"]=="false"){
10350
 
10351
					#設置執行不正常
10352
					$result["status"]="false";
10353
 
10354
					#程式停止執行
10355
					$result["error"]=$inputMultiHidden;
10356
 
10357
					#回傳結果
10358
					return $result;
10359
 
10360
					}#if end
10361
 
10362
				#串接隱藏的表單
10363
				$result["content"]=$result["content"].$inputMultiHidden;
10364
 
10365
				}#if end
10366
 
10367
			}#if end
10368
 
10369
		#如果其值爲 true
10370
		if($conf["trStart"]=="true"){
10371
 
10372
			#串接列開始
10373
			$result["content"]=$result["content"]."<tr>";
10374
 
10375
			}#if end
10376
 
10377
		#如果其值爲 true
10378
		if($conf["tdStart"]=="true"){
10379
 
10380
			#串接欄開始
10381
			$result["content"]=$result["content"]."<td>";
10382
 
10383
			}#if end
10384
 
10385
		#如果$conf["outputValue"]沒設定
10386
		if(!isset($conf["outputValue"])){
10387
 
10388
			#則$conf["outputValue"]陣列內容將會等於$conf["sendValue"]陣列內容
10389
			$conf["outputValue"]=$conf["sendValue"];
10390
 
10391
			}#if end
10392
 
10393
		#如果$conf["class"]沒設定
10394
		if(!isset($conf["class"])){
10395
 
10396
			#則$conf["class"]爲空
10397
			$conf["class"]="";
10398
 
10399
			}#if end
10400
 
10401
		#如果有$conf["class"]有設定
10402
		else{
10403
 
10404
			#則按照設定值
10405
			$conf["class"]=" class=".$conf["class"];
10406
 
10407
			}#else end
10408
 
10409
		#如果 $conf["jsActivitor"] 與 $conf["jsAction"] 皆有設定
10410
		if( isset($conf["jsActivitor"]) && isset($conf["jsAction"]) ){
10411
 
10412
			#則將設定值組合
10413
			$conf["jsCustom"]=" ".$conf["jsActivitor"]."=".$conf["jsAction"]." ";
10414
 
10415
			}#if end
10416
 
10417
		#如果 $conf["jsCustom"] 沒有設定
10418
		if(!isset($conf["jsCustom"])){
10419
 
10420
			#將其設爲空值
10421
			$conf["jsCustom"]="";
10422
 
10423
			}#if end
10424
 
10425
		#將有幾個選項的數目放進 $count
10426
		$count=count($conf["sendValue"]);
10427
 
10428
		#如果 $conf["comment"] 有設定
10429
		if(isset($conf["comment"])){
10430
 
10431
			#一開始先擺註解
10432
			$result["content"]=$result["content"]."<span ".$conf["class"].">".$conf["comment"]."</span><br>";
10433
 
10434
			}#if end
10435
 
10436
		#有幾個選項就執行幾次
10437
		for($i=0;$i<$count;$i++){
10438
 
10439
			#如果 $conf["checkedOption"] 參數存在
10440
			if(isset($conf["checkedOption"])){
10441
 
10442
				#檢查多個數值,是否與陣列裏面的某些元素相同。
10443
				#回傳結果:
10444
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
10445
				#$result["function"],當前執行的函數
10446
				#$result["error"],函式錯誤訊息,若爲""則表示沒有錯誤
10447
				#$result["founded"][$i],若爲"false"代表沒有相同的元素;反之"true"代表有相同的元素,$i爲第i+1個參數判斷後的結果。
10448
				#必填參數:
10449
				$conf_checkEquality["inputElement"]=array($i+1);#爲要進行比對的變數/數值。
10450
				$conf_checkEquality["blackBoxElement"]=$conf["checkedOption"];#爲用來比對的變數/數值陣列
10451
				$result_checkEquality=search::checkEquality($conf_checkEquality);
10452
				unset($conf_checkEquality);
10453
 
10454
				#如果檢查失敗
10455
				if($result_checkEquality["status"]=="false"){
10456
 
10457
					#設置執行不正常
10458
					$result["status"]="false";
10459
 
10460
					#程式停止執行
10461
					$result["error"]=$result_checkEquality;
10462
 
10463
					#回傳結果
10464
					return $result;
10465
 
10466
					}#if end
10467
 
10468
				#如果 $result_checkEquality"founded"][$i] 存在
10469
				if(isset($result_checkEquality["founded"][0])){
10470
 
10471
					#如果該選項是要勾選的
10472
					if($result_checkEquality["founded"][0]=="true"){
10473
 
10474
						#選取
10475
						$checked=" checked ";
10476
 
10477
						}#if end
10478
 
10479
					#反之
10480
					else{
10481
 
10482
						#不選取
10483
						$checked="";
10484
 
10485
						}#else end
10486
 
10487
					}#if end
10488
 
10489
				#反之
10490
				else{
10491
 
10492
					#不選取
10493
					$checked="";
10494
 
10495
					}#else end
10496
 
10497
				}#if end
10498
 
10499
			#反之
10500
			else{
10501
 
10502
				#不選取
10503
				$checked="";
10504
 
10505
				}#else end
10506
 
10507
			#放置勾選式表單
10508
			$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>";
10509
 
10510
			#如果 $conf["brBetweenOption"] 有設定
10511
			if(isset($conf["brBetweenOption"])){
10512
 
10513
				#如果 $conf["brBetweenOption"] 等於 "true"
10514
				if($conf["brBetweenOption"]=="true"){
10515
 
10516
					#如果不是最後一個選項
10517
					if($i!=$count-1){
10518
 
10519
						#加上<br>標籤
10520
						$result["content"]=$result["content"]."<br>";
10521
 
10522
						}#if end
10523
 
10524
					}#if end
10525
 
10526
				}#if end
10527
 
10528
			}#for end
10529
 
10530
		#如果其值爲 true
10531
		if($conf["tdEnd"]=="true"){
10532
 
10533
			#串接欄結束
10534
			$result["content"]=$result["content"]."</td>";
10535
 
10536
			}#if end
10537
 
10538
		#如果其值爲 true
10539
		if($conf["trEnd"]=="true"){
10540
 
10541
			#串接列結束
10542
			$result["content"]=$result["content"]."</tr>";
10543
 
10544
			}#if end
10545
 
10546
		#如果 $conf["formAction"] 有設定
10547
		if(isset($conf["formAction"])){
10548
 
10549
			#如果有設置 $conf["formEnd"]
10550
			if(isset($conf["formEnd"])){
10551
 
10552
				#如果 $conf["formEnd"] 設爲 "true"
10553
				if($conf["formEnd"]=="true"){
10554
 
10555
					#函式說明:
10556
					#表單結束
10557
					#回傳結果:
10558
					#$result,表單結束的語法
10559
					#必填參數:
10560
					$conf["form"]["end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。
10561
					$formEnd=form::end($conf["form"]["end"]);
10562
					unset($conf["form"]["end"]);
10563
 
10564
					#如果表單結束失敗
10565
					if($formEnd["status"]=="false"){
10566
 
10567
						#設置執行不正常
10568
						$result["status"]="false";
10569
 
10570
						#程式停止執行
10571
						$result["error"]=$formEnd;
10572
 
10573
						#回傳結果
10574
						return $result;
10575
 
10576
						}#if end
10577
 
10578
					#串接表單結束
10579
					$result["content"]=$result["content"].$formEnd["content"];
10580
 
10581
					}#if end
10582
 
10583
				}#if end
10584
 
10585
			}#if end
10586
 
10587
		#反之沒有設置$conf["formAction"]
10588
		else{
10589
 
10590
			#如果 $conf["formEnd"] 設爲 "true"
10591
			if($conf["formEnd"]=="true"){
10592
 
10593
				#函式說明:
10594
				#表單結束
10595
				#回傳結果:
10596
				#$result,表單結束的語法
10597
				#必填參數:
10598
				$conf["form"]["end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。
10599
				$formEnd=form::end($conf["form"]["end"]);
10600
				unset($conf["form"]["end"]);
10601
 
10602
				#如果表單結束失敗
10603
				if($formEnd["status"]==="false"){
10604
 
10605
					#設置執行不正常
10606
					$result["status"]="false";
10607
 
10608
					#程式停止執行
10609
					$result["error"]=$formEnd;
10610
 
10611
					#回傳結果
10612
					return $result;
10613
 
10614
					}#if end
10615
 
10616
				#串接表單結束
10617
				$result["content"]=$result["content"].$formEnd["content"];
10618
 
10619
				}#if end
10620
 
10621
			}#else end
10622
 
10623
		#設置執行成功
10624
		$result["status"]="true";
10625
 
10626
		#回傳結果
10627
		return $result;
10628
 
10629
		}#function inputCheckBox end
10630
 
10631
	/*
10632
	#函式說明:
10633
	#隱藏的表單傳送資訊
10634
	#回傳結果:
10635
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
10636
	#$result["error"],錯誤訊息
10637
	#$result["content"],語法
10638
	#$result["function"],當前執行的函數名稱
10639
	#必填參數:
10640
	$conf["name"]="";#隱藏的表單名稱
10641
	$conf["value"]="";#等於要傳送的數值
10642
	#可省略參數:
10643
	#無.
10644
	#參考資料:
10645
	#無.
10646
	#備註:
10647
	#無.
10648
	*/
10649
	public static function inputHidden($conf){
10650
 
10651
		#初始化要回傳的變數
10652
		$result=array();
10653
 
10654
		#設置當前執行的函式
10655
		$result["function"]=__FUNCTION__;
10656
 
10657
		#初始化表單開始的語法
10658
		$result["content"]="";
10659
 
10660
		#如果 $conf 不為陣列
10661
		if(gettype($conf)!="array"){
10662
 
10663
			#設置執行失敗
10664
			$result["status"]="false";
10665
 
10666
			#設置執行錯誤訊息
10667
			$result["error"][]="\$conf變數須為陣列形態";
10668
 
10669
			#如果傳入的參數為 null
10670
			if($conf==null){
10671
 
10672
				#設置執行錯誤訊息
10673
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
10674
 
10675
				}#if end
10676
 
10677
			#回傳結果
10678
			return $result;
10679
 
10680
			}#if end
10681
 
10682
		#檢查參數
10683
		#函式說明:
10684
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
10685
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
10686
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
10687
		#$result["function"],當前執行的函式名稱.
10688
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
10689
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
10690
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
10691
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
10692
		#必填參數:
10693
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
10694
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
10695
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
10696
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("name","value");
10697
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
10698
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
10699
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
10700
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
10701
		#可省略參數:
10702
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
10703
		#$conf["canBeEmptyString"]="false";
10704
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
10705
		#$conf["skipableVariableName"]=array();
10706
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
10707
		#$conf["skipableVariableType"]=array();
10708
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
10709
		#$conf["skipableVarDefaultValue"]=array("");
10710
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
10711
		#$conf["arrayCountEqualCheck"][]=array();
10712
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
10713
		unset($conf["variableCheck::checkArguments"]);
10714
 
10715
		#如果檢查參數失敗
10716
		if($checkResult["status"]=="false"){
10717
 
10718
			#設置執行失敗
10719
			$result["status"]="false";
10720
 
10721
			#設置執行錯誤
10722
			$result["error"]=$checkResult;
10723
 
10724
			#回傳結果
10725
			return $result;
10726
 
10727
			}#if end
10728
 
10729
		#如果檢查參數不通過
10730
		if($checkResult["passed"]=="false"){
10731
 
10732
			#設置執行失敗
10733
			$result["status"]="false";
10734
 
10735
			#設置執行錯誤
10736
			$result["error"]=$checkResult;
10737
 
10738
			#回傳結果
10739
			return $result;
10740
 
10741
			}#if end
10742
 
10743
		#放置隱藏的表單
10744
		$result["content"]="<input type = hidden name = ".$conf["name"]." value = \"".$conf["value"]."\">";
10745
 
10746
		#執行到這邊代表執行正常
10747
		$result["status"]="true";
10748
 
10749
		#回傳結果
10750
		return $result;
10751
 
10752
		}#function inputHidden end
10753
 
10754
	/*
10755
	#函式說明:
10756
	#傳送多個隱藏表單的資訊
10757
	#回傳的數值:
10758
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
10759
	#$result["error"],錯誤訊息陣列
10760
	#$result["function"],當前執行的函數
10761
	#$result["content"],語法
10762
	#$result["sendedArrayName"],傳送的隱藏變數陣列
10763
	#$result["sendedArrayValue"],傳送的隱藏變數陣列數值
10764
	#$result["sendedArrayCount"],傳送的隱藏變數計數
10765
	#必填參數:
10766
	$conf["nameArray"]=array("");#欲傳送的隱藏陣列變數名稱
10767
	$conf["valueArray"]=array("");#欲傳送的隱藏陣列變數數值
10768
	#可省略參數:
10769
	#無.
10770
	#參考資料:
10771
	#無.
10772
	#備註:
10773
	#無.
10774
	*/
10775
	public static function inputMultiHidden(&$conf){
10776
 
10777
		#預設要回傳的數值
10778
		$result=array();
10779
 
10780
		#設置當前執行的函數
10781
		$result["function"]=__FUNCTION__;
10782
 
10783
		#初始化要回傳的語法
10784
		$result["content"]="";
10785
 
10786
		#如果 $conf 不為陣列
10787
		if(gettype($conf)!="array"){
10788
 
10789
			#設置執行失敗
10790
			$result["status"]="false";
10791
 
10792
			#設置執行錯誤訊息
10793
			$result["error"][]="\$conf變數須為陣列形態";
10794
 
10795
			#如果傳入的參數為 null
10796
			if($conf==null){
10797
 
10798
				#設置執行錯誤訊息
10799
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
10800
 
10801
				}#if end
10802
 
10803
			#回傳結果
10804
			return $result;
10805
 
10806
			}#if end
10807
 
10808
		#檢查參數
10809
		#函式說明:
10810
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
10811
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
10812
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
10813
		#$result["function"],當前執行的函式名稱.
10814
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
10815
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
10816
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
10817
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
10818
		#必填參數:
10819
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
10820
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
10821
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
10822
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("nameArray","valueArray");
10823
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
10824
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("array","array");
10825
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
10826
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
10827
		#可省略參數:
10828
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
10829
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="true";
10830
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
10831
		#$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("width","maxInputLength","defaultValue","class","jsActivitor","jsAction","trStart","tdStart","tdEnd","trEnd","comment","placeholder");
10832
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
10833
		#$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string","string","string","string","string","string");
10834
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
10835
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array(null,null,null,"__inputPasswordCssStyle",null,null,"false","false","false","false",null,null);
10836
		#$conf["variableCheck.checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
10837
		$conf["variableCheck.checkArguments"]["arrayCountEqualCheck"][]=array("nameArray","valueArray");
10838
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
10839
		unset($conf["variableCheck.checkArguments"]);
10840
 
10841
		#如果檢查失敗
10842
		if($checkResult["status"]=="false"){
10843
 
10844
			#設置執行不正常
10845
			$result["status"]="false";
10846
 
10847
			#程式停止執行
10848
			$result["error"]=$checkResult;
10849
 
10850
			#回傳結果
10851
			return $result;
10852
 
10853
			}#if end
10854
 
10855
		#如果檢查不通過
10856
		if($checkResult["passed"]=="false"){
10857
 
10858
			#設置執行不正常
10859
			$result["status"]="false";
10860
 
10861
			#程式停止執行
10862
			$result["error"]=$checkResult;
10863
 
10864
			#回傳結果
10865
			return $result;
10866
 
10867
			}#if end
10868
 
10869
		#透過foreach建立陣列
10870
		#將陣列的key重新排序,然後回傳,以便後續存取,也可以指定key的內容,但一定要跟元素數量相同。
10871
		#回傳的解果:
10872
		#$result["status"],執行是否成功,"true"代表成功,"false"代表失敗.
10873
		#$result["error"],執行錯誤的訊息.
10874
		#$result["function"],當前執行的函數名稱.
10875
		#$result["dataContent"],儲存陣列元素的內容.
10876
		#必填參數:
10877
		$conf_createV2["arrayContent"]=$conf["nameArray"];#陣列元素的value,須爲陣列值。
10878
		#可省略的參數:
10879
		#$conf["arrayCounts"]="";#爲陣列的元素有幾個,若沒設定,則數量爲$conf["arrayContent"]裏的元素數量
10880
		#$conf["theSameAs"]="true";#若設爲"true",則所有元素內容都跟第一個元素內容相同
10881
		$result_nameArray=arrays::createV2($conf_createV2);
10882
		unset($conf_createV2);
10883
 
10884
		#如果重新排序陣列失敗
10885
		if($result_nameArray["status"]=="false"){
10886
 
10887
			#設置執行不正常
10888
			$result["status"]="false";
10889
 
10890
			#程式停止執行
10891
			$result["error"]=$result_nameArray;
10892
 
10893
			#回傳結果
10894
			return $result;
10895
 
10896
			}#if end
10897
 
10898
		#透過foreach建立陣列
10899
		#將陣列的key重新排序,然後回傳,以便後續存取。
10900
		#回傳的解果:
10901
		#$result["status"],執行是否成功,"true"代表成功,"false"代表失敗.
10902
		#$result["error"],執行錯誤的訊息.
10903
		#$result["function"],當前執行的函數名稱.
10904
		#$result["dataContent"],儲存陣列元素的內容.
10905
		#必填參數:
10906
		$conf_createV2["arrayContent"]=$conf["valueArray"];#陣列元素的value,須爲陣列值。
10907
		#可省略的參數:
10908
		#$conf["arrayCounts"]="";#爲陣列的元素有幾個,若沒設定,則數量爲$conf["arrayContent"]裏的元素數量
10909
		#$conf["theSameAs"]="true";#若設爲"true",則所有元素內容都跟第一個元素內容相同
10910
		$result_valueArray=arrays::createV2($conf_createV2);
10911
		unset($conf_createV2);
10912
 
10913
		#如果重新排序陣列失敗
10914
		if($result_valueArray["status"]=="false"){
10915
 
10916
			#設置執行不正常
10917
			$result["status"]="false";
10918
 
10919
			#程式停止執行
10920
			$result["error"]=$result_valueArray;
10921
 
10922
			#回傳結果
10923
			return $result;
10924
 
10925
			}#if end
10926
 
10927
		#有幾個要傳送的元素就執行幾次
10928
		for($i=0;$i<count($conf["nameArray"]);$i++){
10929
 
10930
			#隱藏的表單傳送資訊
10931
			#必填參數:
10932
			$conf_inputHidden["name"]=$result_nameArray["dataContent"][$i];#隱藏的表單名稱
10933
			$conf_inputHidden["value"]=$result_valueArray["dataContent"][$i];#等於要穿送的數值
10934
			$inputHidden=form::inputHidden($conf_inputHidden);
10935
			unset($conf_inputHidden);
10936
 
10937
			#如果建立隱藏的表單失敗
10938
			if($inputHidden["status"]=="false"){
10939
 
10940
				#設置錯誤
10941
				$result["status"]="false";
10942
 
10943
				#設置錯誤訊息
10944
				$result["error"]=$inputHidden;
10945
 
10946
				#回傳結果
10947
				return $inputHidden;
10948
 
10949
				}#if end
10950
 
10951
			#串接 隱藏的表單
10952
			$result["content"]=$result["content"].$inputHidden["content"];
10953
 
10954
			}#for end
10955
 
10956
		#設置執行正常
10957
		$result["status"]="true";
10958
 
10959
		#回傳結果
10960
		return $result;
10961
 
10962
		}#function inputMutiHidden end
10963
 
10964
	/*
10965
	#函式說明:
10966
	#簡單的控制面板,可以點選"新增"、"回上頁"的簡易面板
10967
	#回傳的結果:
10968
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
10969
	#$result["error"],錯誤訊息
10970
	#$result["content"],控制面板的語法
10971
	#$result["function"],當前執行的函數名稱
10972
	#必填參數:
10973
	$conf["addActionPage"]="";#不可省略,爲新增表單要交給那個頁面處理,屬性內容爲網頁位置。
10974
	$conf["goBackActionPage"]="";#不可省略,爲回上頁的目的地,屬性內容爲網頁位置。
10975
	#可省略參數:
10976
	#$conf["addActionPresentPage"]="";#可省略,爲新增表單的處理頁面要在那邊出現,可以用的數值有 _self (面板所處的頁面) _parent (父頁面) _blank (新視窗) 頁框名稱,預設爲_self
10977
	#$conf["addButtonName"]="";#可省略,預設爲"新增",爲新增表單的按鈕顯示名稱,屬性內容爲字串。
10978
	#$conf["addButtonStyleName"]="";#可省略,爲新增表單的按鈕css樣式,屬性內容爲 css 的類別名稱。
10979
	#$conf["goBackActionPresentPage"]="";#可省略,爲回上頁的目的地的頁面要在那邊出現,可以用的數值有 _self (面板所處的頁面) _parent (父頁面) _blank (新視窗) 頁框名稱,預設爲_self
10980
	#$conf["goBackButtonName"]="";#可省略,預設爲"回上頁",爲回上頁的按鈕顯示名稱,屬性內容爲字串。
10981
	#$conf["goBackButtonStyleName"]="";#可省略,爲回上頁按鈕的css樣式,屬性內容爲 css 的類別名稱。
10982
	#參考資料:
10983
	#無.
10984
	#備註:
10985
	#無.
10986
	*/
10987
	public static function simpleControlPanel($conf){
10988
 
10989
		#初始化要回傳的內容
10990
		$result=array();
10991
 
10992
		#設置當前執行的函數
10993
		$result["function"]=__FUNCTION__;
10994
 
10995
		#初始化content樣式內容
10996
		$result["content"]="";
10997
 
10998
		#如果 $conf 不為陣列
10999
		if(gettype($conf)!="array"){
11000
 
11001
			#設置執行失敗
11002
			$result["status"]="false";
11003
 
11004
			#設置執行錯誤訊息
11005
			$result["error"][]="\$conf變數須為陣列形態";
11006
 
11007
			#如果傳入的參數為 null
11008
			if($conf==null){
11009
 
11010
				#設置執行錯誤訊息
11011
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
11012
 
11013
				}#if end
11014
 
11015
			#回傳結果
11016
			return $result;
11017
 
11018
			}#if end
11019
 
11020
		#檢查參數
11021
		#函式說明:
11022
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
11023
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
11024
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
11025
		#$result["function"],當前執行的函式名稱.
11026
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
11027
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
11028
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
11029
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
11030
		#必填參數:
11031
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
11032
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
11033
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
11034
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("addActionPage","goBackActionPage");
11035
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
11036
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string","string");
11037
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
11038
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
11039
		#可省略參數:
11040
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
11041
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
11042
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
11043
		$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("addActionPresentPage","addButtonName","addButtonStyleName","goBackActionPresentPage","goBackButtonName","goBackButtonStyleName");
11044
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
11045
		$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string");
11046
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
11047
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array("_self","新增","__simpleButtonLinkDefaultButtonCssStyle","_self","回上頁","__simpleButtonLinkDefaultButtonCssStyle");
11048
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
11049
		unset($conf["variableCheck.checkArguments"]);
11050
 
11051
		#如果檢查失敗
11052
		if($checkResult["status"]=="false"){
11053
 
11054
			#設置執行不正常
11055
			$result["status"]="false";
11056
 
11057
			#程式停止執行
11058
			$result["error"]=$checkResult;
11059
 
11060
			#回傳結果
11061
			return $result;
11062
 
11063
			}#if end
11064
 
11065
		#如果檢查不通過
11066
		if($checkResult["passed"]=="false"){
11067
 
11068
			#設置執行不正常
11069
			$result["status"]="false";
11070
 
11071
			#程式停止執行
11072
			$result["error"]=$checkResult;
11073
 
11074
			#回傳結果
11075
			return $result;
11076
 
11077
			}#if end
11078
 
11079
		#新增的按鈕
11080
		#函式說明:
11081
		#放置按鈕
11082
		#回傳結果:
11083
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
11084
		#$result["function"],當前執行的函數.
11085
		#$result["error"],錯誤訊息陣列.
11086
		#$result["content"],按鈕語法.
11087
		#必填參數:
11088
		$conf["form::button"]["buttonDisplayValue"]=$conf["addButtonName"];#爲按鈕上顯示的文字。
11089
		#可省略參數:
11090
		$conf["form::button"]["buttonStyleName"]=$conf["addButtonStyleName"];#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __simpleButtonLinkDefaultButtonCssStyle 。
11091
			#其屬性爲   "width","height","font-size","text-align"
11092
			#其屬性值爲 "100%" ,  "50"  ,    "30"   ,   "center"
11093
		#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。
11094
			#"document.forms.formName.submit()"爲傳送名爲testForm的表單內容
11095
			#"window.print()"爲使用瀏覽器內建工具列印當前網頁
11096
		#$conf["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。
11097
		#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".
11098
		#$conf["tableStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"false"。
11099
		#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。
11100
		#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
11101
		#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",亦即沒有框線的樣式;"__withBorder"則爲有框線的樣式
11102
		#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".
11103
		#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
11104
		#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
11105
		#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
11106
		#$conf["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是,預設爲"false"。
11107
		$conf["form::button"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".
11108
		$conf["form::button"]["action"]=$conf["addActionPage"];#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用
11109
		$conf["form::button"]["target"]=$conf["addActionPresentPage"];#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用
11110
		$conf["form::button"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".
11111
		#參考資料:
11112
		#http://stackoverflow.com/questions/3014649/how-to-disable-html-button-using-javascript
11113
		$addButton=form::button($conf["form::button"]);
11114
		unset($conf["form::button"]);
11115
 
11116
		#如果建立新增按鈕失敗
11117
		if($addButton["status"]=="false"){
11118
 
11119
			#設置執行不正常
11120
			$result["status"]="false";
11121
 
11122
			#程式停止執行
11123
			$result["error"]=$addButton;
11124
 
11125
			#回傳結果
11126
			return $result;
11127
 
11128
			}#if end
11129
 
11130
		#回前頁的按鈕
11131
		#函式說明:
11132
		#放置按鈕
11133
		#回傳結果:
11134
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
11135
		#$result["function"],當前執行的函數.
11136
		#$result["error"],錯誤訊息陣列.
11137
		#$result["content"],按鈕語法.
11138
		#必填參數:
11139
		$conf["form::button"]["buttonDisplayValue"]=$conf["goBackButtonName"];#爲按鈕上顯示的文字。
11140
		#可省略參數:
11141
		$conf["form::button"]["buttonStyleName"]=$conf["goBackButtonStyleName"];#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __simpleButtonLinkDefaultButtonCssStyle 。
11142
			#其屬性爲   "width","height","font-size","text-align"
11143
			#其屬性值爲 "100%" ,  "50"  ,    "30"   ,   "center"
11144
		#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。
11145
			#"document.forms.formName.submit()"爲傳送名爲testForm的表單內容
11146
			#"window.print()"爲使用瀏覽器內建工具列印當前網頁
11147
		#$conf["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。
11148
		#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".
11149
		#$conf["tableStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"false"。
11150
		#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。
11151
		#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
11152
		#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",亦即沒有框線的樣式;"__withBorder"則爲有框線的樣式
11153
		#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".
11154
		#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
11155
		#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
11156
		#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
11157
		#$conf["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是,預設爲"false"。
11158
		$conf["form::button"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".
11159
		$conf["form::button"]["action"]=$conf["goBackActionPage"];#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用
11160
		$conf["form::button"]["target"]=$conf["goBackActionPresentPage"];#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用
11161
		$conf["form::button"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".
11162
		#參考資料:
11163
		#http://stackoverflow.com/questions/3014649/how-to-disable-html-button-using-javascript
11164
		$backButton=form::button($conf["form::button"]);
11165
		unset($conf["form::button"]);
11166
 
11167
		#如果建立回上頁按鈕失敗
11168
		if($backButton["status"]=="false"){
11169
 
11170
			#設置執行不正常
11171
			$result["status"]="false";
11172
 
11173
			#程式停止執行
11174
			$result["error"]=$backButton;
11175
 
11176
			#回傳結果
11177
			return $result;
11178
 
11179
			}#if end
11180
 
11181
		#函式說明:
11182
		#建立列的元素,以及指定裏面要放什麼內容
11183
		#回傳的變數:
11184
		#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
11185
		#$result["error"],錯誤訊息陣列.
11186
		#$result["function"],當前執行的函數名稱.
11187
		#$result["content"],建立列元素的語法.
11188
		#必填參數:
11189
		$conf["table"]["printRow"]["trClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
11190
		$conf["table"]["printRow"]["tdClass"]="__withoutBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
11191
		$conf["table"]["printRow"]["tdContent"]=array($backButton["content"],$addButton["content"]);#列裏面要放的元素是?如果要空一列則可以輸array("&nbsp;")
11192
		#可省略參數:
11193
		$conf["table"]["printRow"]["tableStartClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
11194
		#$conf["tableBorder"]="1px";#表格的厚度預設為"1px"
11195
		$conf["table"]["printRow"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。
11196
		$conf["table"]["printRow"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。
11197
		#$conf["formStart"]="true";#是否要有表單的開始
11198
		#$conf["formName"]="";#該表單的名稱
11199
		#$conf["formAction"]="";#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置
11200
		#$conf["formTarget"]="_self";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
11201
		#$conf["formEnd"]="true";#是否要有表單的結束
11202
		$printRow=table::printRow($conf["table"]["printRow"]);
11203
		unset($conf["table"]["printRow"]);
11204
 
11205
		#如果建立一列表格失敗
11206
		if($printRow["status"]=="false"){
11207
 
11208
			#設置執行不正常
11209
			$result["status"]="false";
11210
 
11211
			#程式停止執行
11212
			$result["error"]=$printRow;
11213
 
11214
			#回傳結果
11215
			return $result;
11216
 
11217
			}#if end
11218
 
11219
		#串接一列表格
11220
		$result["content"]=$result["content"].$printRow["content"];
11221
 
11222
		#設置執行成功
11223
		$result["status"]="true";
11224
 
11225
		#回傳結果
11226
		return $result;
11227
 
11228
		}#函式 simpleControlPanel 結束
11229
 
11230
	/*
11231
	#函式說明:
11232
	#移除東西的確認視窗.
11233
	#回傳結果:
11234
	#$result["status"],執行是否正常,"true"代表正常;"false"代表有問題
11235
	#$reuslt["error"],錯誤訊息陣列
11236
	#$result["function"],當前執行的函數名稱
11237
	#$result["content"],語法
11238
	#必填參數:
11239
	$conf["itemName"]="";#爲要刪除的物件提示名稱,格式爲字串。
11240
	$conf["cancleActionPage"]="";#爲按下取消按鈕後,要交給那個頁面處理。
11241
	$conf["removeActionPage"]="";#爲移除按鈕傳送的內容要交給哪一個頁面處理。
11242
	#可省略參數:
11243
	#$conf["itemNameFontColor"]="";#可省略預設爲 "#000000"(黑色),爲要刪除物件提示名稱文字的字型顏色,格式範圍爲 #000000~#FFFFFF。
11244
	#$conf["dbAddress"]=$dbAddress;#資料庫的位置.
11245
	#$conf["dbName"]=$dbName;#連線到資料庫的名稱.
11246
	#$conf["dtName"]="";#目標資料所屬資料表名稱.
11247
	#$conf["dbAccount"]=$dbAccount;#連線到資料庫的帳號名稱.
11248
	#$conf["dbPassword"]=$dbPassword;#連線到資料庫的帳號密碼.
11249
	#$conf["indexColumnName"]="id";#用於識別要移除資料的索引鍵欄位名稱,預設為"id".
11250
	#$conf["indexColumnValue"]="";#用於識別要移除資料的索引鍵欄位數值內容。
11251
	#$conf["columnForComment"]=array();#陣列字串,為要從資料庫取出作為要除物件的提示文字的資料表欄位名稱陣列。
11252
	#$conf["commentsName"]=array();#陣列字串,為要從資料庫取出作為要除物件的提示文字的資料表欄位名的顯示名稱,預設跟 $conf["columnForComment"] 一樣.
11253
	#$conf["cancleActionDisplayMethod"]="";#可省略,預設爲"_top",爲按下取消按鈕後,交給的處理的頁面要怎麼顯現,類型爲字串,可能值有 "_top" "_self" "_blank" "_blank"
11254
	#$conf["cancleButtonStyle"]="";#可省略,爲取消鈕的css樣式類別名稱,預設為"__qbpwcf_button".
11255
	#$conf["cancleButtonDisplayName"]="";#可省略,預設爲"取消",爲取消鈕的顯示名稱。
11256
	#$conf["cancleSendingVarName"]=array("");#爲按下取消按鈕後要傳送的數值名稱
11257
	#$conf["cancleSendingVarValue"]=array("");#爲按下取消按鈕後要傳送的數值內容
11258
	#$conf["removeActionDisplayMethod"]="";#可省略預設爲"_top",爲處理移除內容的頁面要如何顯現,類型爲字串,可能值有 "_top" "_self" "_blank" "_blank"
11259
	#$conf["removeButtonStyle"]="";#可省略,爲移除按鈕的css樣式類別名稱,,預設為"__qbpwcf_button".
11260
	#$conf["removeButtonDisplayName"]="";#可省略,預設爲"確認移除",爲移除按鈕的顯示文字內容
11261
	#$conf["removeSendingVarName"]=array("");#爲按下移除按鈕後要傳送的數值名稱
11262
	#$conf["removeSendingVarValue"]=array("");#爲按下移除按鈕後要傳送的數值內容
11263
	#參考資料:
11264
	#無.
11265
	#備註:
11266
	#建議參數 $conf["indexColumnName"] 與 $conf["indexColumnValue"] 的形態為字串陣列,以便擁有更多限制條件取得需要的資料.
11267
	*/
11268
	public static function removeConfirm(&$conf){
11269
 
11270
		#初始化要回傳的內容
11271
		$result=array();
11272
 
11273
		#初始化要回傳的語法
11274
		$result["content"]="";
11275
 
11276
		#記錄當前執行的函數名稱
11277
		$result["function"]=__FUNCTION__;
11278
 
11279
		#如果 $conf 不為陣列
11280
		if(gettype($conf)!="array"){
11281
 
11282
			#設置執行失敗
11283
			$result["status"]="false";
11284
 
11285
			#設置執行錯誤訊息
11286
			$result["error"][]="\$conf變數須為陣列形態";
11287
 
11288
			#如果傳入的參數為 null
11289
			if($conf==null){
11290
 
11291
				#設置執行錯誤訊息
11292
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
11293
 
11294
				}#if end
11295
 
11296
			#回傳結果
11297
			return $result;
11298
 
11299
			}#if end
11300
 
11301
		#檢查參數:
11302
		#函式說明:
11303
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
11304
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
11305
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
11306
		#$result["function"],當前執行的函式名稱.
11307
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
11308
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
11309
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
11310
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
11311
		#必填參數:
11312
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
11313
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
11314
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
11315
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("itemName","cancleActionPage","removeActionPage");
11316
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
11317
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string");
11318
		#可省略參數:
11319
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
11320
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
11321
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
11322
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array();
11323
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="dbAddress";
11324
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="dbName";
11325
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="dbAccount";
11326
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="dbPassword";
11327
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="dtName";
11328
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="indexColumnName";
11329
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="indexColumnValue";
11330
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="columnForComment";
11331
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="commentsName";
11332
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="itemNameFontColor";
11333
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="cancleButtonDisplayName";
11334
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="cancleActionDisplayMethod";
11335
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="cancleButtonStyle";
11336
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="cancleSendingVarName";
11337
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="cancleSendingVarValue";
11338
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="removeButtonDisplayName";
11339
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="removeActionDisplayMethod";
11340
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="removeButtonStyle";
11341
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="removeSendingVarName";
11342
		$conf["variableCheck::checkArguments"]["skipableVariableName"][]="removeSendingVarValue";
11343
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
11344
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array();
11345
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11346
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11347
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11348
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11349
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11350
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11351
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11352
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="array";
11353
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="array";
11354
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11355
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11356
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11357
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11358
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="array";
11359
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="array";
11360
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11361
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11362
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="string";
11363
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="array";
11364
		$conf["variableCheck::checkArguments"]["skipableVariableType"][]="array";
11365
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
11366
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array();
11367
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;
11368
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;
11369
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;
11370
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;
11371
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;
11372
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="id";
11373
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;
11374
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;
11375
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="\$conf[\"columnForComment\"]";
11376
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="#000000";
11377
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="取消";
11378
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="_top";
11379
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="__qbpwcf_button";
11380
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;
11381
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;
11382
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="確認移除";
11383
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="_top";
11384
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]="__qbpwcf_button";
11385
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;
11386
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"][]=null;
11387
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
11388
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
11389
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
11390
		#$conf["arrayCountEqualCheck"][]=array();
11391
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
11392
		unset($conf["variableCheck::checkArguments"]);
11393
 
11394
		#如果檢查出錯
11395
		if($checkResult["status"]=="false"){
11396
 
11397
			#設置執行錯誤
11398
			$result["status"]="false";
11399
 
11400
			#設置錯誤訊息
11401
			$result["error"]=$checkResult;
11402
 
11403
			#回傳結果
11404
			return $result;
11405
 
11406
			}#if end
11407
 
11408
		#如果檢查不通過
11409
		if($checkResult["passed"]=="false"){
11410
 
11411
			#設置執行錯誤
11412
			$result["status"]="false";
11413
 
11414
			#設置錯誤訊息
11415
			$result["error"]=$checkResult;
11416
 
11417
			#回傳結果
11418
			return $result;
11419
 
11420
			}#if end
11421
 
11422
		#取消移除的按鈕
11423
		#函式說明:
11424
		#一個簡單的按鈕,按了可以到指定的頁面,同時也可以傳送多個隱藏的變數
11425
		#回傳的結果
11426
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
11427
		#$result["error"],錯誤訊息陣列
11428
		#$result["function"],當前執行的函數名稱.
11429
		#$result["content"],語法內容
11430
		#必填參數:
11431
		$conf["form::sendHugeDataButton"]["buttonDisplayValue"]=$conf["cancleButtonDisplayName"];#按鈕上要顯示的文字
11432
		#可省略參數:
11433
		$conf["form::sendHugeDataButton"]["buttonStyleName"]=$conf["cancleButtonStyle"];#按鈕的css樣式應該爲何,若省略的話預設會採用 __simpleButtonLinkDefaultButtonCssStyle 的樣式,其設定為"width:100%;height:50;font-size:30;text-align:center;
11434
 
11435
		#如果 $conf["cancleSendingVarName"] 有存在
11436
		if(isset($conf["cancleSendingVarName"])){
11437
 
11438
			$conf["form::sendHugeDataButton"]["hiddenVarName"]=$conf["cancleSendingVarName"];#要傳送的隱藏變數名稱,與 $conf["hiddenVarContent"] 相對應。
11439
 
11440
			}#if end
11441
 
11442
		#如果 $conf["cancleSendingVarValue"] 有設定
11443
		if(isset($conf["cancleSendingVarValue"])){
11444
 
11445
			$conf["form::sendHugeDataButton"]["hiddenVarContent"]=$conf["cancleSendingVarValue"];#要傳誦的隱藏變數內容,與 $conf["hiddenVarName"] 相對應。
11446
 
11447
			}#if end
11448
 
11449
		#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".
11450
		$conf["form::sendHugeDataButton"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設爲"false".
11451
		#$conf["form::sendHugeDataButton"]["method"]=;#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
11452
		#$conf["formName"]="";#該表單的名稱
11453
		$conf["form::sendHugeDataButton"]["actionPage"]=$conf["cancleActionPage"];#按鈕按了之後要到哪個地方?若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面。
11454
		#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。
11455
			#可以是"document.forms.formName.submit()"(傳送名爲testForm的表單內容).
11456
		$conf["form::sendHugeDataButton"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設爲"false"
11457
		#$conf["tableStart"]="true";#爲是否要表格開始,"true"表示"是",預設為"false".
11458
		#$conf["tableClass"]="__withoutBorder";#爲表格要採用的css樣式名稱,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder".
11459
		#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
11460
		#$conf["trClass"]="__withoutBorder";#列開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder"
11461
		#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false"
11462
		#$conf["tdClass"]="__withoutBorder";#行開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder"
11463
		#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
11464
		#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
11465
		$conf["form::sendHugeDataButton"]["displayTarget"]=$conf["cancleActionDisplayMethod"];#頁面的呈現方法,可以是開新視窗(_blank)、在目前頁面、頁框裏面(_self)、在父頁面(_parent)、最上層頁面(_top),預設為"_top"。
11466
		#$conf["tableEnd"]="true";#爲是否要表格結束,"true"表示"是",預設為"false".
11467
		$cancleButton=form::sendHugeDataButton($conf["form::sendHugeDataButton"]);
11468
		unset($conf["form::sendHugeDataButton"]);
11469
 
11470
		#如果取消按鈕建立失敗
11471
		if($cancleButton["status"]==="false"){
11472
 
11473
			#設置執行錯誤
11474
			$result["status"]="false";
11475
 
11476
			#設置錯誤訊息
11477
			$result["error"]=$cancleButton;
11478
 
11479
			#回傳結果
11480
			return $result;
11481
 
11482
			}#if end
11483
 
11484
		#串接取消按鈕的語法
11485
		$conf["table.printColumn"]["tdContent"][]=$cancleButton["content"];
11486
 
11487
		#創建提示文字的css樣式
11488
		#函式說明:
11489
		#創建 css 樣式
11490
		#回傳結果:
11491
		#$result["css"],css設定內容
11492
		#$result["error"],函式錯誤訊息,若爲""則表示沒有錯誤
11493
		#必填參數:
11494
		$conf["css.createCssStyle"]["cssStyleName"]="__removeConfiremStrCssStyle";#為該 css 樣式的名稱,不能以數字開頭。
11495
		$conf["css.createCssStyle"]["attributes"]=array("text-align","font-size","color");#為屬性名稱,須為陣列值
11496
		$conf["css.createCssStyle"]["content"]=array("center","30px",$conf["itemNameFontColor"]);#為屬性值,須為陣列值
11497
		$css=css::createCssStyle($conf["css.createCssStyle"]);
11498
		unset($conf["css.createCssStyle"]);
11499
 
11500
		#如果css樣式建立失敗
11501
		if($css["status"]=="false"){
11502
 
11503
			#設置執行失敗
11504
			$result["status"]="false";
11505
 
11506
			#設置錯誤訊息
11507
			$result["error"]=$css;
11508
 
11509
			#回傳結果
11510
			return $result;
11511
 
11512
			}#if end
11513
 
11514
		#傳接css語法
11515
		$result["content"]=$result["content"].$css["content"];
11516
 
11517
		#確認移除的文字
11518
		#函式說明:
11519
		#<span>區塊,裡面可以指定css的class樣式,可以指定提示文字.
11520
		#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.
11521
		#$result["functin"],字串,當前函數的名稱.
11522
		#$result["error"],陣列,錯訊訊息.
11523
		#$result["content"],字串,含有<span>標籤的內容.
11524
		#必填參數:
11525
		#$conf["contentArray"],字串陣列,要放入的內容陣列.
11526
		$conf["css::spanSection"]["contentArray"]=array("您確定要移除該 「".$conf["itemName"]."」 嗎?");
11527
		#可省略參數
11528
		#$conf["class"],字串,div區段要套用的css樣式.
11529
		$conf["css::spanSection"]["class"]="__removeConfiremStrCssStyle";
11530
		#$conf["title"],陣列,滑鼠移到上面時要顯示的內容,每個元素代表一列內容
11531
		#$conf["title"]=array();
11532
		$spanSection=css::divSection($conf["css::spanSection"]);
11533
		unset($conf["css::spanSection"]);
11534
 
11535
		#如果 spanSection 建立失敗
11536
		if($spanSection["status"]=="false"){
11537
 
11538
			#設置執行失敗
11539
			$result["status"]="false";
11540
 
11541
			#設置錯誤訊息
11542
			$result["error"]=$spanSection;
11543
 
11544
			#回傳結果
11545
			return $result;
11546
 
11547
			}#if end
11548
 
11549
		#串接提示訊息
11550
		$conf["table.printColumn"]["tdContent"][]=$spanSection["content"];
11551
 
11552
		#如果 $conf["indexColumnValue"] 有設定
11553
		if(isset($conf["indexColumnValue"]) && isset($conf["dbName"]) && isset($conf["dbAddress"]) && isset($conf["dbAccount"]) && isset($conf["dtName"])){
11554
 
11555
			#如果 $conf["columnForComment"] 有設定
11556
			if(isset($conf["columnForComment"])){
11557
 
11558
				#函式說明:
11559
				#<span>區塊,裡面可以指定css的class樣式,可以指定提示文字.
11560
				#$result["status"],字串,執行否正常,"true"代表正常,"false"代表不正常.
11561
				#$result["functin"],字串,當前函數的名稱.
11562
				#$result["error"],陣列,錯訊訊息.
11563
				#$result["content"],字串,含有<span>標籤的內容.
11564
				#必填參數:
11565
				#$conf["contentArray"],字串陣列,要放入的內容陣列.
11566
				$conf["css::spanSection"]["contentArray"]=array("相關資訊如下所示:");
11567
				#可省略參數
11568
				#$conf["class"],字串,div區段要套用的css樣式.
11569
				$conf["css::spanSection"]["class"]="__removeConfiremStrCssStyle";
11570
				#$conf["title"],陣列,滑鼠移到上面時要顯示的內容,每個元素代表一列內容
11571
				#$conf["title"]=array();
11572
				$spanSection=css::divSection($conf["css::spanSection"]);
11573
				unset($conf["css::spanSection"]);
11574
 
11575
				#如果 spanSection 建立失敗
11576
				if($spanSection["status"]=="false"){
11577
 
11578
					#設置執行失敗
11579
					$result["status"]="false";
11580
 
11581
					#設置錯誤訊息
11582
					$result["error"]=$spanSection;
11583
 
11584
					#回傳結果
11585
					return $result;
11586
 
11587
					}#if end
11588
 
11589
				#串接提示訊息
11590
				$conf["table.printColumn"]["tdContent"][]=$spanSection["content"];
11591
 
11592
				#取得特定資料的指定欄位資料
11593
				#函式說明:
11594
				#一次取得資料庫、表的資料
11595
				#回傳的結果
11596
				#$result["status"],執行結果"true"為成功;"false"為執行失敗。
11597
				#$result["error"],錯誤訊息陣列。
11598
				#$result["dataColumnName"],抓取的資料欄位名稱陣列.
11599
					#$result["dataColumnName"][$i]代表第$i+1個欄位名稱
11600
				#$result["dataContent"],爲資料的內容。
11601
				#$result["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]
11602
					#$dataSetNum 爲第$dataSetNum+1筆資料
11603
					#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱
11604
				#$result["dataCount"],爲取得的資料筆數。
11605
				#$result["sql"],執行的sql字串.
11606
				#必填參數:
11607
				$conf["db.fastGetDbData"]["dbAddress"]=$conf["dbAddress"];#爲dbServer的位置。
11608
				$conf["db.fastGetDbData"]["dbAccount"]=$conf["dbAccount"];#爲登入dbServer的帳號。
11609
				$conf["db.fastGetDbData"]["dbName"]=$conf["dbName"];#爲要存取的資料庫名稱
11610
				$conf["db.fastGetDbData"]["tableName"]=$conf["dtName"];#爲要存取的資料表名稱
11611
				$conf["db.fastGetDbData"]["columnYouWant"]=$conf["columnForComment"];#你想要的欄位!,若設為「array("*")」則代表全部欄位.
11612
				#可省略參數:
11613
 
11614
				#如果 $conf["dbPassword"] 有設定
11615
				if(isset($conf["dbPassword"])){
11616
 
11617
					$conf["db.fastGetDbData"]["dbPassword"]=$conf["dbPassword"];#爲要存取dbServer的密碼
11618
 
11619
					}#if end
11620
 
11621
				$conf["db.fastGetDbData"]["WhereColumnName"]=array($conf["indexColumnName"]);#用於判斷語句的欄位項目陣列。
11622
				$conf["db.fastGetDbData"]["WhereColumnValue"]=array($conf["indexColumnValue"]);#用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。
11623
				#$conf["WhereColumnCombine"]=array("");#用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。
11624
				#$conf["WhereColumnOperator"]=array("");#用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。
11625
				#$conf["WhereColumnAndOr"]=array("");#用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。
11626
				#$conf["orderItem"]="";#爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。
11627
				#$conf["ascORdesc"]="";#爲要低增還是遞減排序,asc爲遞增;desc爲遞減。
11628
				#$conf["numberStart"]="0";#為從第幾筆開始讀取,預設為0,代筆第一筆。
11629
				#$conf["numLimit"]="30";#為要取幾筆資料,可以省略,省略則表示不限制數目。
11630
				#$conf["groupBy"]=array("");#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。
11631
				$getDbDataResult=db::fastGetDbData($conf["db.fastGetDbData"]);
11632
				unset($conf["db.fastGetDbData"]);
11633
 
11634
				#如果 查詢要刪除的資料失敗
11635
				if($getDbDataResult["status"]=="false"){
11636
 
11637
					#設置執行失敗
11638
					$result["status"]="false";
11639
 
11640
					#設置錯誤訊息
11641
					$result["error"]=$getDbDataResult;
11642
 
11643
					#回傳結果
11644
					return $result;
11645
 
11646
					}#if end
11647
 
11648
				#如果資料不足一筆
11649
				if($getDbDataResult["dataCount"]==0){
11650
 
11651
					#設置執行失敗
11652
					$result["status"]="false";
11653
 
11654
					#設置錯誤訊息
11655
					$result["error"][]="查不到要刪除的資料";
11656
 
11657
					#回傳結果
11658
					return $result;
11659
 
11660
					}#if end
11661
 
11662
				#有幾個欄位就執行幾次
11663
				for($i=0;$i<count($conf["columnForComment"]);$i++){
11664
 
11665
					#函式說明:
11666
					#可以輸入文字的區塊
11667
					#回傳結果:
11668
					#$result,語法
11669
					#必填參數:
11670
					$conf["form.inputTextArea"]["name"]="readOnly-".$i;#爲文字輸入框的名稱,供接收端辨識用。
11671
					$conf["form.inputTextArea"]["readOnly"]="true";#爲是否要爲唯讀,如果爲"true",則爲唯讀。反之則爲"false"。
11672
					#可省略參數:
11673
					#$conf["cols"]="";#爲文字輸入框的欄位數(寬),預設爲按照瀏覽器設定值。
11674
					#$conf["rows"]="";#爲文字輸入框的列數(高),預設爲按照瀏覽器設定值。
11675
					#$conf["maxInputLength"]="";#爲文字輸入的長度限制,預設無限制。
11676
					$conf["form.inputTextArea"]["defaultText"]=$getDbDataResult["dataContent"][$conf["columnForComment"][$i]][0];#爲文字輸入框裏面的預設文字內容,預設是空的。
11677
					#$conf["class"]=;#爲要套用的css樣式。如果沒有指定 ,則採用預設的css樣式,其屬性爲 "width:100%","height:120px","font-size:30px"
11678
					#$conf["jsActivitor"]="";#爲觸發js的條件,可以是"onChange"(已改變內容時)...,須搭配$conf["jsSubmitActionTarget"]參數。
11679
					#$conf["jsAction"]="";#爲該js是要做什麼,可以是"document.testForm.submit()"(傳送名爲testForm的表單內容)...,須搭配$conf["jsActivitor"]參數。
11680
					#$conf["comment"],字串,輸入方框上面要放哪些註解文字.
11681
					$conf["form.inputTextArea"]["comment"]=$conf["commentsName"][$i];
11682
					#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
11683
					#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
11684
					#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
11685
					#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
11686
					$columnData=form::inputTextArea($conf["form.inputTextArea"]);
11687
					unset($conf["form.inputTextArea"]);
11688
 
11689
					#如果 inputTextArea 建立失敗
11690
					if($columnData["status"]=="false"){
11691
 
11692
						#設置執行失敗
11693
						$result["status"]="false";
11694
 
11695
						#設置錯誤訊息
11696
						$result["error"]=$columnData;
11697
 
11698
						#回傳結果
11699
						return $result;
11700
 
11701
						}#if end
11702
 
11703
					#接上描述資訊
11704
					$conf["table.printColumn"]["tdContent"][]=$columnData["content"];
11705
 
11706
					}#for end
11707
 
11708
				}#if end
11709
 
11710
			}#if end
11711
 
11712
		#確認移除的按鈕
11713
		#函式說明:
11714
		#一個簡單的按鈕,按了可以到指定的頁面,同時也可以傳送多個隱藏的變數
11715
		#回傳的結果
11716
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
11717
		#$result["error"],錯誤訊息陣列
11718
		#$result["function"],當前執行的函數名稱.
11719
		#$result["content"],語法內容
11720
		#必填參數:
11721
		$conf["form::sendHugeDataButton"]["buttonDisplayValue"]=$conf["removeButtonDisplayName"];#按鈕上要顯示的文字
11722
		#可省略參數:
11723
		$conf["form::sendHugeDataButton"]["buttonStyleName"]=$conf["removeButtonStyle"];#按鈕的css樣式應該爲何,若省略的話預設會採用 __simpleButtonLinkDefaultButtonCssStyle 的樣式,其設定為"width:100%;height:50;font-size:30;text-align:center;
11724
 
11725
		#如果 $conf["removeSendingVarName"] 有存在
11726
		if(isset($conf["removeSendingVarName"])){
11727
 
11728
			$conf["form::sendHugeDataButton"]["hiddenVarName"]=$conf["removeSendingVarName"];#要傳送的隱藏變數名稱,與 $conf["hiddenVarContent"] 相對應。
11729
 
11730
			}#if end
11731
 
11732
		#如果 $conf["removeSendingVarValue"] 有設定
11733
		if(isset($conf["removeSendingVarValue"])){
11734
 
11735
			$conf["form::sendHugeDataButton"]["hiddenVarContent"]=$conf["removeSendingVarValue"];#要傳誦的隱藏變數內容,與 $conf["hiddenVarName"] 相對應。
11736
 
11737
			}#if end
11738
 
11739
		#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".
11740
		$conf["form::sendHugeDataButton"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設爲"false".
11741
		#$conf["form::sendHugeDataButton"]["method"]=;#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
11742
		#$conf["formName"]="";#該表單的名稱
11743
		$conf["form::sendHugeDataButton"]["actionPage"]=$conf["removeActionPage"];#按鈕按了之後要到哪個地方?若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面。
11744
		#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。
11745
			#可以是"document.forms.formName.submit()"(傳送名爲testForm的表單內容).
11746
		$conf["form::sendHugeDataButton"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設爲"false"
11747
		#$conf["tableStart"]="true";#爲是否要表格開始,"true"表示"是",預設為"false".
11748
		#$conf["tableClass"]="__withoutBorder";#爲表格要採用的css樣式名稱,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder".
11749
		#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
11750
		#$conf["trClass"]="__withoutBorder";#列開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder"
11751
		#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false"
11752
		#$conf["tdClass"]="__withoutBorder";#行開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式,預設為"__withoutBorder"
11753
		#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
11754
		#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
11755
		$conf["form::sendHugeDataButton"]["displayTarget"]=$conf["removeActionDisplayMethod"];#頁面的呈現方法,可以是開新視窗(_blank)、在目前頁面、頁框裏面(_self)、在父頁面(_parent)、最上層頁面(_top),預設為"_top"。
11756
		#$conf["tableEnd"]="true";#爲是否要表格結束,"true"表示"是",預設為"false".
11757
		$confirmButton=form::sendHugeDataButton($conf["form::sendHugeDataButton"]);
11758
		unset($conf["form::sendHugeDataButton"]);
11759
 
11760
		#如果取消按鈕建立失敗
11761
		if($confirmButton["status"]=="false"){
11762
 
11763
			#設置執行錯誤
11764
			$result["status"]="false";
11765
 
11766
			#設置錯誤訊息
11767
			$result["error"]=$confirmButton;
11768
 
11769
			#回傳結果
11770
			return $result;
11771
 
11772
			}#if end
11773
 
11774
		#串接確認移除按鈕的語法
11775
		$conf["table.printColumn"]["tdContent"][]=$confirmButton["content"];
11776
 
11777
		#函式說明:
11778
		#建立欄的元素,以及指定裏面要放什麼內容
11779
		#回傳的變數:
11780
		#$result["content"],建立欄元素的語法
11781
		#$result["status"],"true"代表執行成功;"false"代表執行失敗。
11782
		#$result["error"],錯誤訊息陣列
11783
		#必填參數:
11784
		$conf["table.printColumn"]["trClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
11785
		$conf["table.printColumn"]["tdClass"]="__withoutBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
11786
		#列裏面要放的元素是?如果要空一列則可以輸array("&nbsp;")
11787
		#$conf["table.printColumn"]["tdContent"][]="";
11788
		#可省略參數:
11789
		$conf["table.printColumn"]["tableStartClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
11790
		$conf["table.printColumn"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。
11791
		$conf["table.printColumn"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。
11792
		#$conf["formStart"]="true";#是否要有表單的開始
11793
		#$conf["formName"]="";#該表單的名稱
11794
		#$conf["formAction"]="";#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置
11795
		#$conf["formTarget"]="_self";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
11796
		#$conf["formEnd"]="true";#是否要有表單的結束
11797
		$conf["table.printColumn"]["spaceBlockAferPerElement"]="true";#是否每個欄元素(除了最後一個元素)後面都要空一列。"true"代表要空一列.預設是不空一列.
11798
		$fullTable=table::printColumn($conf["table.printColumn"]);
11799
		unset($conf["table.printColumn"]);
11800
 
11801
		#如果 表格建立失敗
11802
		if($fullTable["status"]=="false"){
11803
 
11804
			#設置執行失敗
11805
			$result["status"]="false";
11806
 
11807
			#設置錯誤訊息
11808
			$result["error"]=$fullTable;
11809
 
11810
			#回傳結果
11811
			return $result;
11812
 
11813
			}#if end
11814
 
11815
		#串接整個表格
11816
		$result["content"]=$result["content"].$fullTable["content"];
11817
 
11818
		#設置執行正常
11819
		$result["status"]="true";
11820
 
11821
		#回傳結果
11822
		return $result;
11823
 
11824
		}#function removeConfirm end
11825
 
11826
	/*
11827
	#函式說明:
11828
	#確認執行的視窗
11829
	#回傳結果:
11830
	#$result,確認執行的視窗語法
11831
	#必填參數:
11832
	$conf["actionName"]="";#要執行的動作
11833
	$conf["itemName"]="";#爲要執行的物件提示名稱,格式爲字串。
11834
	$conf["cancleActionPage"]="";#爲按下取消按鈕後,要交給那個頁面處理。
11835
	$conf["confirmActionPage"]="";#爲移除按鈕傳送的內容要交給哪一個頁面處理。
11836
	#可省略參數:
11837
	#$conf["actionFontCss"]="";#可省略,爲動作提示的字型css樣式,預設為"__actionFontCssStyle"
11838
	#$conf["itemNameFontCss"]="";#可省略預,爲物件提示的字型css樣式,預設為"__itemNameFontCssStyle"
11839
	#$conf["cancleActionDisplayMethod"]="";#可省略,預設爲"_self",爲按下取消按鈕後,交給的處理的頁面要怎麼顯現,類型爲字串,可能值有 "_top" "_self" "_blank" "_blank"
11840
	#$conf["cancleButtonStyle"]="";#可省略,爲取消鈕的css樣式類別名稱。
11841
	#$conf["cancleRequestMethod"],字串,取消要求的表單要用什麼方式傳送,預設為"post",也可以為"get".
11842
	#$conf["cancleRequestMethod"]="get";
11843
	#$conf["cancleButtonDisplayName"]="";#可省略,預設爲"取消",爲取消鈕的顯示名稱。
11844
	#$conf["cancleSendingVarName"]=array("");#爲按下取消按鈕後要傳送的數值名稱
11845
	#$conf["cancleSendingVarValue"]=array("");#爲按下取消按鈕後要傳送的數值內容
11846
	#$conf["confirmActionDisplayMethod"]="";#可省略預設爲"_self",爲處理移除內容的頁面要如何顯現,類型爲字串,可能值有 "_top" "_self" "_blank" "_blank"
11847
	#$conf["confirmButtonStyle"]="";#可省略,爲移除按鈕的css樣式類別名稱。
11848
	#$conf["confirmRequestMethod"],字串,確認要求的表單要用什麼方式傳送,預設為"post",也可以為"get".
11849
	#$conf["confirmRequestMethod"]="get";
11850
	#$conf["confirmButtonDisplayName"]="";#可省略,預設爲"確認移除",爲移除按鈕的顯示文字內容
11851
	#$conf["confirmSendingVarName"]=array("");#爲按下移除按鈕後要傳送的數值名稱
11852
	#$conf["confirmSendingVarValue"]=array("");#爲按下移除按鈕後要傳送的數值內容
11853
	#參考資料:
11854
	#無.
11855
	#備註:
11856
	#要執行動作的物件提示名稱,如果可以擺方多個資訊將會更方便。
11857
	*/
11858
	public static function customConfirm(&$conf){
11859
 
11860
		#初始化要回傳的內容
11861
		$result=array();
11862
 
11863
		#初始化要回傳的語法
11864
		$result["content"]="";
11865
 
11866
		#記錄當前執行的函數名稱
11867
		$result["function"]=__FUNCTION__;
11868
 
11869
		#如果 $conf 不為陣列
11870
		if(gettype($conf)!="array"){
11871
 
11872
			#設置執行失敗
11873
			$result["status"]="false";
11874
 
11875
			#設置執行錯誤訊息
11876
			$result["error"][]="\$conf變數須為陣列形態";
11877
 
11878
			#如果傳入的參數為 null
11879
			if($conf==null){
11880
 
11881
				#設置執行錯誤訊息
11882
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
11883
 
11884
				}#if end
11885
 
11886
			#回傳結果
11887
			return $result;
11888
 
11889
			}#if end
11890
 
11891
		#檢查參數
11892
		#函式說明:
11893
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
11894
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
11895
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
11896
		#$result["function"],當前執行的函式名稱.
11897
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
11898
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
11899
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
11900
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
11901
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
11902
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
11903
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
11904
		#必填參數:
11905
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
11906
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
11907
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
11908
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("actionName","itemName","cancleActionPage","confirmActionPage");
11909
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
11910
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string","string");
11911
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
11912
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
11913
		#可省略參數:
11914
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
11915
		#$conf["canBeEmptyString"]="false";
11916
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
11917
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("actionFontCss","itemNameFontCss","cancleActionDisplayMethod","cancleRequestMethod","confirmRequestMethod");
11918
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
11919
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string");
11920
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
11921
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("__qbpwcf_actionFontCssStyle","__qbpwcf_itemNameFontCssStyle","_self","post","post");
11922
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
11923
		#$conf["arrayCountEqualCheck"][]=array();
11924
		#參考資料:
11925
		#array_keys=>http://php.net/manual/en/function.array-keys.php
11926
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
11927
		unset($conf["variableCheck::checkArguments"]);
11928
 
11929
		#如果檢查不通過
11930
		if($checkResult["passed"]=="fasle"){
11931
 
11932
			#設置錯誤
11933
			$result["status"]="false";
11934
 
11935
			#設置錯誤訊息
11936
			$result["error"]=$checkResult;
11937
 
11938
			#回傳結果
11939
			return $result;
11940
 
11941
			}#if end
11942
 
11943
		#如果有指定 $conf["actionFontCss"]
11944
		if(isset($conf["actionFontCss"])){
11945
 
11946
			#套用其css樣式
11947
			$conf["actionName"]="<span class=".$conf["actionFontCss"].">".$conf["actionName"]."</span>";
11948
 
11949
			}#if end
11950
 
11951
		#如果有指定 $conf["itemNameFontCss"]
11952
		if(isset($conf["itemNameFontCss"])){
11953
 
11954
			#套用其css樣式
11955
			$conf["itemName"]="<span class=".$conf["itemNameFontCss"].">".$conf["itemName"]."</span>";
11956
 
11957
			}#if end
11958
 
11959
		#函式說明:
11960
		#表格形式的文字描述:
11961
		#回傳結果:
11962
		#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
11963
		#$result["error"],函式錯誤訊息陣列.
11964
		#$result["content"],表格形式文字描述的語法.
11965
		#$result["function"],當前執行的函式名稱.
11966
		#必填參數:
11967
		$conf["table"]["text"]["outputString"]="您確定要 「".$conf["actionName"]."」 「".$conf["itemName"]."」 嗎?";#要印出來的文字
11968
		#可省略參數:
11969
		$conf["table"]["text"]["tableStart"]="true";#是否要表格開始<table>,"true"代表是。
11970
		$conf["table"]["text"]["tableClass"]="__withoutBorder";#為表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
11971
		$conf["table"]["text"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
11972
		$conf["table"]["text"]["trClass"]="__textCssType";#爲tr的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
11973
		$conf["table"]["text"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
11974
		$conf["table"]["text"]["tdClass"]="__withoutBorder";#該 td 要套用套用的 css 樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
11975
		$conf["table"]["text"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
11976
		$conf["table"]["text"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
11977
		$conf["table"]["text"]["tableEnd"]="true";#是否要表格結束</table>,"true"代表是。
11978
		$message=table::text($conf["table"]["text"]);
11979
		unset($conf["table"]);
11980
 
11981
		#如果表格文字建立失敗
11982
		if($message["status"]=="false"){
11983
 
11984
			#設置執行失敗
11985
			$result["status"]="false";
11986
 
11987
			#設置錯誤訊息
11988
			$result["error"]=$message;
11989
 
11990
			#回傳結果
11991
			return $result;
11992
 
11993
			}#if end
11994
 
11995
		#如果 $conf["cancleButtonDisplayName"] 沒有設定
11996
		if(!isset($conf["cancleButtonDisplayName"])){
11997
 
11998
			$conf["cancleButtonDisplayName"]="取消";
11999
 
12000
			}#if end
12001
 
12002
		#函式說明:
12003
		#一個簡單的按鈕,按了可以到指定的頁面。同時也可以傳送多個隱藏的變數
12004
		#回傳的結果
12005
		#$result,語法內容
12006
		#必填參數:
12007
		$conf["form"]["sendHugeDataButton"]["actionPage"]=$conf["cancleActionPage"];#按鈕按了之後要到哪個地方?若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面。
12008
		$conf["form"]["sendHugeDataButton"]["buttonDisplayValue"]=$conf["cancleButtonDisplayName"];#按鈕上要顯示的文字
12009
		#可省略參數:
12010
 
12011
		#如果有設置 $conf["cancleButtonStyle"]
12012
		if(isset($conf["cancleButtonStyle"])){
12013
 
12014
			$conf["form"]["sendHugeDataButton"]["buttonStyleName"]=$conf["cancleButtonStyle"];#按鈕的css樣式應該爲何,若省略的話預設會採用 __simpleButtonLinkDefaultButtonCssStyle 的樣式
12015
			#其屬性爲   "width","height","font-size","text-align"
12016
			#其屬性值爲 "300"  ,  "50"  ,    "30"   ,   "center"
12017
		#備註:
12018
		# __simpleButtonLinkDefaultButtonCssStyle,爲預設的按鈕css樣式,請勿使用相同類別名稱的css樣式,以免衝突。
12019
 
12020
			}#if end
12021
 
12022
		#如果 $conf["cancleSendingVarName"] 有設定
12023
		if(isset($conf["cancleSendingVarName"])){
12024
 
12025
			$conf["form"]["sendHugeDataButton"]["hiddenVarName"]=$conf["cancleSendingVarName"];#要傳送的隱藏變數名稱,與 $conf["hiddenVarContent"] 相對應。
12026
 
12027
			}#if end
12028
 
12029
		#如果 $conf["cancleSendingVarValue"] 有設定
12030
		if(isset($conf["cancleSendingVarValue"])){
12031
 
12032
			$conf["form"]["sendHugeDataButton"]["hiddenVarContent"]=$conf["cancleSendingVarValue"];#要傳誦的隱藏變數內容,與 $conf["hiddenVarName"] 相對應。
12033
 
12034
			}#if end
12035
 
12036
		$conf["form"]["sendHugeDataButton"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設爲"false".
12037
		$conf["form"]["sendHugeDataButton"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設爲"false"
12038
		#$conf["form"]["sendHugeDataButton"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。
12039
		#$conf["form"]["sendHugeDataButton"]["tableClass"]="__withoutBorder";#爲表格要採用的css樣式名稱,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式
12040
		#$conf["form"]["sendHugeDataButton"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
12041
		#$conf["form"]["sendHugeDataButton"]["trClass"]="__withoutBorder";#列開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式
12042
		#$conf["form"]["sendHugeDataButton"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
12043
		#$conf["form"]["sendHugeDataButton"]["tdClass"]="__withoutBorder";#行開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式
12044
		#$conf["form"]["sendHugeDataButton"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
12045
		#$conf["form"]["sendHugeDataButton"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
12046
 
12047
		$conf["form"]["sendHugeDataButton"]["method"]=$conf["cancleRequestMethod"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
12048
 
12049
		#如果 $conf["confirmActionDisplayMethod"] 有設定
12050
		if(isset($conf["confirmActionDisplayMethod"])){
12051
 
12052
			$conf["form"]["sendHugeDataButton"]["displayTarget"]=$conf["confirmActionDisplayMethod"];#頁面的呈現方法,可以是開新視窗(_blank)、在目前頁面、頁框裏面(_self)、在父頁面(_parent)、最上層頁面(_top)。
12053
 
12054
			}#if end
12055
 
12056
		#$conf["form"]["sendHugeDataButton"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。
12057
		$cancle=form::sendHugeDataButton($conf["form"]["sendHugeDataButton"]);
12058
		unset($conf["form"]["sendHugeDataButton"]);
12059
 
12060
		#如果取消的按鈕建立失敗
12061
		if($cancle["status"]=="false"){
12062
 
12063
			#設置執行失敗
12064
			$result["status"]="false";
12065
 
12066
			#設置錯誤訊息
12067
			$result["error"]=$cancle;
12068
 
12069
			#回傳結果
12070
			return $result;
12071
 
12072
			}#if end
12073
 
12074
		#如果 $conf["confirmButtonDisplayName"] 沒有設定
12075
		if(!isset($conf["confirmButtonDisplayName"])){
12076
 
12077
			$conf["confirmButtonDisplayName"]="確認";
12078
 
12079
			}#if end
12080
 
12081
		#函式說明:
12082
		#一個簡單的按鈕,按了可以到指定的頁面。同時也可以傳送多個隱藏的變數
12083
		#回傳的結果
12084
		#$result,語法內容
12085
		#必填參數:
12086
		$conf["form"]["sendHugeDataButton"]["actionPage"]=$conf["confirmActionPage"];#按鈕按了之後要到哪個地方?若爲 $_SERVER["PHP_SELF"],則爲回到目前頁面。
12087
		$conf["form"]["sendHugeDataButton"]["buttonDisplayValue"]=$conf["confirmButtonDisplayName"];#按鈕上要顯示的文字
12088
		#可省略參數:
12089
 
12090
		#如果 $conf["confirmButtonStyle"] 存在
12091
		if(isset($conf["confirmButtonStyle"])){
12092
 
12093
			$conf["form"]["sendHugeDataButton"]["buttonStyleName"]=$conf["confirmButtonStyle"];#按鈕的css樣式應該爲何,若省略的話預設會採用 __simpleButtonLinkDefaultButtonCssStyle 的樣式
12094
			#其屬性爲   "width","height","font-size","text-align"
12095
			#其屬性值爲 "300"  ,  "50"  ,    "30"   ,   "center"
12096
		#備註:
12097
		# __simpleButtonLinkDefaultButtonCssStyle,爲預設的按鈕css樣式,請勿使用相同類別名稱的css樣式,以免衝突。
12098
 
12099
			}#if end
12100
 
12101
		#如果 $conf["confirmSendingVarName"] 有設定
12102
		if(isset($conf["confirmSendingVarName"])){
12103
 
12104
			$conf["form"]["sendHugeDataButton"]["hiddenVarName"]=$conf["confirmSendingVarName"];#要傳送的隱藏變數名稱,與 $conf["hiddenVarContent"] 相對應。
12105
 
12106
			}#if end
12107
 
12108
		#如果 $conf["confirmSendingVarValue"] 有設定
12109
		if(isset($conf["confirmSendingVarValue"])){
12110
 
12111
			$conf["form"]["sendHugeDataButton"]["hiddenVarContent"]=$conf["confirmSendingVarValue"];#要傳誦的隱藏變數內容,與 $conf["hiddenVarName"] 相對應。
12112
 
12113
			}#if end
12114
 
12115
		$conf["form"]["sendHugeDataButton"]["method"]=$conf["confirmRequestMethod"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
12116
		$conf["form"]["sendHugeDataButton"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設爲"false".
12117
		$conf["form"]["sendHugeDataButton"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設爲"false"
12118
		#$conf["form"]["sendHugeDataButton"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是"。
12119
		#$conf["form"]["sendHugeDataButton"]["tableClass"]="__withoutBorder";#爲表格要採用的css樣式名稱,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式
12120
		#$conf["form"]["sendHugeDataButton"]["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始。
12121
		#$conf["form"]["sendHugeDataButton"]["trClass"]="__withoutBorder";#列開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式
12122
		#$conf["form"]["sendHugeDataButton"]["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始
12123
		#$conf["form"]["sendHugeDataButton"]["tdClass"]="__withoutBorder";#行開始的css樣式,"__withoutBorder"代表沒有框線的預設樣式;"__withBorder"代表有框線的預設樣式
12124
		#$conf["form"]["sendHugeDataButton"]["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束
12125
		#$conf["form"]["sendHugeDataButton"]["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束。
12126
 
12127
		#如果 $conf["confirmActionDisplayMethod"] 有設定
12128
		if(isset($conf["confirmActionDisplayMethod"])){
12129
 
12130
			$conf["form"]["sendHugeDataButton"]["displayTarget"]=$conf["confirmActionDisplayMethod"];#頁面的呈現方法,可以是開新視窗(_blank)、在目前頁面、頁框裏面(_self)、在父頁面(_parent)、最上層頁面(_top)。
12131
 
12132
			}#if end
12133
 
12134
		#$conf["form"]["sendHugeDataButton"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是"。
12135
		$confirm=form::sendHugeDataButton($conf["form"]["sendHugeDataButton"]);
12136
		unset($conf["form"]["sendHugeDataButton"]);
12137
 
12138
		#如果確認的按鈕建立失敗
12139
		if($confirm["status"]=="false"){
12140
 
12141
			#設置執行失敗
12142
			$result["status"]="false";
12143
 
12144
			#設置錯誤訊息
12145
			$result["error"]=$confirm;
12146
 
12147
			#回傳結果
12148
			return $result;
12149
 
12150
			}#if end
12151
 
12152
		#建立一欄表格
12153
		#函式說明:
12154
		#建立欄的元素,以及指定裏面要放什麼內容
12155
		#回傳的變數:
12156
		#$result["content"],建立欄元素的語法
12157
		#$result["status"],"true"代表執行成功;"false"代表執行失敗。
12158
		#$result["error"],錯誤訊息陣列
12159
		#必填參數:
12160
		$conf["table::printColumn"]["trClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
12161
		$conf["table::printColumn"]["tdClass"]="__withoutBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
12162
		$conf["table::printColumn"]["tdContent"]=array($cancle["content"],$message["content"],$confirm["content"]);#列裏面要放的元素是?如果要空一列則可以輸array("&nbsp;")
12163
		#可省略參數:
12164
		$conf["table::printColumn"]["tableStartClass"]="__withoutBorder";#列的樣式,預設為"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
12165
		$conf["table::printColumn"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是",預設為"false".
12166
		$conf["table::printColumn"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是",預設為"false".
12167
		#$conf["formStart"]="true";#是否要有表單的開始,預設為"false".
12168
		#$conf["formName"]="";#該表單的名稱
12169
		#$conf["formAction"]="";#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置
12170
		#$conf["formTarget"]="_self";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
12171
		#$conf["formEnd"]="true";#是否要有表單的結束,預設為"false".
12172
		$conf["spaceBlockAferPerElement"]="true";#是否每個欄元素(除了最後一個元素)後面都要空一列。"true"代表要空一列.預設是不空一列.
12173
		$printColumn=table::printColumn($conf["table::printColumn"]);
12174
		unset($conf["table::printColumn"]);
12175
 
12176
		#如果建立一欄表格失敗
12177
		if($printColumn["status"]=="false"){
12178
 
12179
			#設置執行失敗
12180
			$result["status"]="false";
12181
 
12182
			#設置錯誤訊息
12183
			$result["error"]=$printColumn;
12184
 
12185
			#回傳結果
12186
			return $result;
12187
 
12188
			}#if end
12189
 
12190
		#取得一欄表格的語法
12191
		$result["content"]=$result["content"].$printColumn["content"];
12192
 
12193
		#設置執行正常
12194
		$result["status"]="true";
12195
 
12196
		#回傳結果
12197
		return $result;
12198
 
12199
		}#function customConfirm end
12200
 
12201
	/*
12202
	#函式說明:
12203
	#上傳檔案的表單
12204
	#回傳結果:
12205
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
12206
	#$result["function"],當前執行的函數.
12207
	#$result["error"],錯誤訊息陣列.
12208
	#$result["content"],上傳檔案的語法.
12209
	#必填參數:
12210
	#$conf["formFileName"],字串,該檔案上傳時的表單名稱。
12211
	$conf["formFileName"]="";
12212
	#可省略參數:
12213
	#$conf["acceptType"],字串,限定檔案的類型為"video/*","audio/*","image/*",預設不限定.
12214
	#$conf["acceptType"]="";
12215
	#$conf["class"],字串,該上傳表單所要套用的css樣式,若省略則採用預設的css樣式"__qbpwcf_inputFileCssStyle",其屬性爲 width:100% font-size:30px
12216
	#$conf["class"]="";
12217
	#$conf["id"],字串,爲該上傳表單的id,預設跟$conf["formFileName"]一樣.
12218
	#$conf["id"]="";
12219
	#$conf["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
12220
	#$conf["required"]="true";
12221
	#$conf["comment"],字串,輔助說明的文字,會出現在檔案上傳的上一行.
12222
	#$conf["comment"]="";
12223
	#$conf["formStart"],字串,爲是否要以<form>開頭,"true"表示"是",也可以看成表單的開始,預設為"false".
12224
	#$conf["formStart"]="true";
12225
	#$conf["formAction"],字串,表單遞交的目的地,若$conf["formStart"]為"true",則該參數不能省略,預設為"false".
12226
	#$conf["formAction"]="";
12227
	#$conf["formName"],字串,爲該表單的名稱
12228
	#$conf["formName"]="";
12229
	#$conf["formMethod"],字串,爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
12230
	#$conf["formMethod"]="";
12231
	#$conf["formTarget"],字串,為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
12232
	#$conf["formTarget"]="";
12233
	#$conf["formEnd"],字串,爲是否要以<form>結尾,"true"表示"是",也可以看成表單的結束,預設為"false".
12234
	#$conf["formEnd"]="true";
12235
	#參考資料:
12236
	#http://www.w3schools.com/tags/tag_input.asp
12237
	#備註:
12238
	#無.
12239
	*/
12240
	public static function inputFile(&$conf){
12241
 
12242
		#初始化要回傳的變數
12243
		$result=array();
12244
 
12245
		#設置當前執行的函式
12246
		$result["function"]=__FUNCTION__;
12247
 
12248
		#初始化表單開始的語法
12249
		$result["content"]="";
12250
 
12251
		#如果 $conf 不為陣列
12252
		if(gettype($conf)!="array"){
12253
 
12254
			#設置執行失敗
12255
			$result["status"]="false";
12256
 
12257
			#設置執行錯誤訊息
12258
			$result["error"][]="\$conf變數須為陣列形態";
12259
 
12260
			#如果傳入的參數為 null
12261
			if($conf==null){
12262
 
12263
				#設置執行錯誤訊息
12264
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
12265
 
12266
				}#if end
12267
 
12268
			#回傳結果
12269
			return $result;
12270
 
12271
			}#if end
12272
 
12273
		#檢查參數
12274
		#函式說明:
12275
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
12276
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
12277
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
12278
		#$result["function"],當前執行的函式名稱.
12279
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
12280
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
12281
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
12282
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
12283
		#必填參數:
12284
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
12285
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
12286
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
12287
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("formFileName");
12288
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
12289
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
12290
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
12291
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
12292
		#可省略參數:
12293
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
12294
		#$conf["canBeEmptyString"]="false";
12295
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
12296
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("acceptType","class","id","comment","formStart","formAction","formName","formMethod","formTarget","formEnd","required");
12297
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
12298
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string","string","string","string","string");
12299
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
12300
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,"__qbpwcf_inputFileCssStyle","\$conf[\"formFileName\"]",null,"false",null,null,"post","_self","false","false");
12301
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
12302
		#$conf["arrayCountEqualCheck"][]=array();
12303
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
12304
		unset($conf["variableCheck::checkArguments"]);
12305
 
12306
		#如果檢查參數失敗
12307
		if($checkResult["status"]=="false"){
12308
 
12309
			#設置執行失敗
12310
			$result["status"]="false";
12311
 
12312
			#設置執行錯誤
12313
			$result["error"]=$checkResult;
12314
 
12315
			#回傳結果
12316
			return $result;
12317
 
12318
			}#if end
12319
 
12320
		#如果檢查參數不通過
12321
		if($checkResult["passed"]=="false"){
12322
 
12323
			#設置執行失敗
12324
			$result["status"]="false";
12325
 
12326
			#設置執行錯誤
12327
			$result["error"]=$checkResult;
12328
 
12329
			#回傳結果
12330
			return $result;
12331
 
12332
			}#if end
12333
 
12334
		#如果 $conf["formStart"] 等於 "true"
12335
		if($conf["formStart"]=="true"){
12336
 
12337
			#函式說明:
12338
			#表單開始
12339
			#回傳結果:
12340
			#$result,表單開始的語法
12341
			#必填參數:
12342
			$conf["form"]["start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容
12343
			#可省略參數:
12344
 
12345
			#如果 $conf["formName"] 有設置
12346
			if(isset($conf["formName"])){
12347
 
12348
				#則設定其數值
12349
				$conf["form"]["start"]["name"]=$conf["formName"];#爲該表單的名稱
12350
 
12351
				}#if end
12352
 
12353
			#設定 method 參數
12354
			$conf["form"]["start"]["method"]=$conf["formMethod"];#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
12355
 
12356
			#設定 "formTarget" 參數
12357
			$conf["form"]["start"]["target"]=$conf["formTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
12358
 
12359
			#$conf["form"]["start"]["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是;
12360
			#$conf["form"]["start"]["tableClass"]=$conf["tableClass"];#表格要套用的css樣式,若爲"__withoutBorder"的話則套用無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
12361
			$formStart=form::start($conf["form"]["start"]);
12362
			unset($conf["form"]["start"]);
12363
 
12364
			#串接表單開始
12365
			$result["content"]=$result["content"].$formStart["content"];
12366
 
12367
			}#if end
12368
 
12369
		#過濾 $conf["formFileName"] 避免錯誤
12370
		#函式說明:
12371
		#處理字串避免網頁出錯
12372
		#回傳結果:
12373
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
12374
		#$result["function"],當前執行的函數.
12375
		#$result["content"],爲處理好的字串.
12376
		#$result["error"],錯誤訊息陣列.
12377
		#必填參數:
12378
		$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["formFileName"];#爲要處理的字串
12379
		#可省略的參數:
12380
		$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
12381
			#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
12382
			#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
12383
		#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
12384
		$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
12385
		unset($conf["stringProcess::correctCharacter"]);
12386
 
12387
		#debug
12388
		#var_dump($correctCharacter);
12389
 
12390
		#如果過濾字串失敗
12391
		if($correctCharacter["status"]=="false"){
12392
 
12393
			#設置執行失敗
12394
			$result["status"]="false";
12395
 
12396
			#設置執行錯誤訊息
12397
			$result["error"]=$correctCharacter;
12398
 
12399
			#回傳結果
12400
			return $result;
12401
 
12402
			}#if end
12403
 
12404
		#置換過濾好了的$conf["name"]
12405
		$conf["formFileName"]=$correctCharacter["content"];
12406
 
12407
		#過濾 $conf["id"] 避免錯誤
12408
		#函式說明:
12409
		#處理字串避免網頁出錯
12410
		#回傳結果:
12411
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
12412
		#$result["function"],當前執行的函數.
12413
		#$result["content"],爲處理好的字串.
12414
		#$result["error"],錯誤訊息陣列.
12415
		#必填參數:
12416
		$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["id"];#爲要處理的字串
12417
		#可省略的參數:
12418
		$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
12419
			#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
12420
			#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
12421
		#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
12422
		$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
12423
		unset($conf["stringProcess::correctCharacter"]);
12424
 
12425
		#debug
12426
		#var_dump($correctCharacter);
12427
 
12428
		#如果過濾字串失敗
12429
		if($correctCharacter["status"]=="false"){
12430
 
12431
			#設置執行失敗
12432
			$result["status"]="false";
12433
 
12434
			#設置執行錯誤訊息
12435
			$result["error"]=$correctCharacter;
12436
 
12437
			#回傳結果
12438
			return $result;
12439
 
12440
			}#if end
12441
 
12442
		#置換過濾好了的$conf["id"]
12443
		$conf["id"]=$correctCharacter["content"];
12444
 
12445
		#設定id
12446
		$conf["id"]=" id=".$conf["id"]." ";
12447
 
12448
		#設定 css 樣式
12449
		$conf["class"]=" class=".$conf["class"]." ";
12450
 
12451
		#如果 $conf["comment"] 有設置
12452
		if(isset($conf["comment"])){
12453
 
12454
			#放置說明文字
12455
			$result["content"]=$result["content"]."<span ".$conf["class"]." >".$conf["comment"]."</span><br>";
12456
 
12457
			}#if end
12458
 
12459
		#如果有設置 $conf["acceptType"]
12460
		if(isset($conf["acceptType"])){
12461
 
12462
			#設置 "accept" 屬性
12463
			$conf["acceptType"]=" accept=".$conf["acceptType"]." ";
12464
 
12465
			}#if end
12466
 
12467
		#反之
12468
		else{
12469
 
12470
			#設置為 ""
12471
			$conf["acceptType"]="";
12472
 
12473
			}#else end
12474
 
12475
		#如果 $conf["required"] 為 "true"
12476
		if($conf["required"]=="true"){
12477
 
12478
			#設置 "required" 屬性
12479
			$conf["required"]="required";
12480
 
12481
			}#if end
12482
 
12483
		#反之
12484
		else{
12485
 
12486
			#設置為 ""
12487
			$conf["required"]="";
12488
 
12489
			}#else end
12490
 
12491
		#放置上傳檔案表單的語法
12492
		$result["content"]=$result["content"]."<input type = file ".$conf["class"]." name = ".$conf["formFileName"]." ".$conf["id"]." ".$conf["acceptType"]." ".$conf["required"]." >";
12493
 
12494
		#如果 $conf["formEnd"] 等於 "true"
12495
		if($conf["formEnd"]=="true"){
12496
 
12497
			$conf["form"]["end"]["tableEnd"]="false";#爲該表單是否要以</table>結尾。"true"爲是;"false"爲否。
12498
			$formEnd=form::end($conf["form"]["end"]);
12499
			unset($conf["form"]["end"]);
12500
 
12501
			#如果表單結束失敗
12502
			if($formEnd["status"]=="false"){
12503
 
12504
				#設置執行失敗
12505
				$result["status"]="false";
12506
 
12507
				#設置執行錯誤
12508
				$result["error"]=$formEnd;
12509
 
12510
				#回傳結果
12511
				return $result;
12512
 
12513
				}#if end
12514
 
12515
			#串接表單結束
12516
			$result["content"]=$result["content"].$formEnd["content"];
12517
 
12518
			}#if end
12519
 
12520
		#設置執行正常
12521
		$result["status"]="true";
12522
 
12523
		#回傳語法
12524
		return $result;
12525
 
12526
		}#function inputFile end
12527
 
12528
	/*
12529
	#函式說明:
12530
	#可以瀏覽要上傳的檔案
12531
	#回傳結果:
12532
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
12533
	#$result["function"],當前執行的函數.
12534
	#$result["error"],錯誤訊息陣列.
12535
	#$result["content"],上傳檔案的語法.
12536
	#必填參數:
12537
	#$conf["formFileName"],字串,該上傳檔案的表單名稱.
12538
	$conf["formFileName"]="";
12539
	#可省略參數:
12540
	#$conf["maxFileSize"],字串,檔案的最大限制,單位是位元組(byte)。1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設是10240000(10MB)
12541
	#$conf["maxFileSize"]="10240000";
12542
	#$conf["browseButtonClass"],字串,瀏覽檔案的按鈕樣式,預設為"__qbpwcf_inputFileCssStyle".
12543
	#$conf["browseButtonClass"]="__inputFileCssStyle";
12544
	#$conf["acceptType"],字串,限定檔案的類型為"video/*","audio/*","image/*",預設不限定.
12545
	#$conf["acceptType"]="";
12546
	#$conf["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
12547
	#$conf["required"]="true";
12548
	#$conf["trStart"],字串,爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設為"false".
12549
	#$conf["trStart"]="true";
12550
	#$conf["trClass"],字串,列的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式,預設為"__withoutBorder".
12551
	#$conf["trClass"]="__withoutBorder";
12552
	#$conf["tdStart"],字串,爲是否要以<td>開頭,"true"表示"是",也可以看成列裏面的元素開始,預設為"false".
12553
	#$conf["tdStart"]="false";
12554
	#$conf["tdClass"],字串,行的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式,預設為"__withoutBorder".
12555
	#$conf["tdClass"]="__withoutBorder";
12556
	#$conf["tdEnd"],字串,爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設為"false".
12557
	#$conf["tdEnd"]="true";
12558
	#$conf["trEnd"],字串,爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設為"false".
12559
	#$conf["trEnd"]="true";
12560
	#$conf["formStart"],字串,是否為表單的開始,"true"為是,預設為"false".
12561
	#$conf["formStart"]="true";
12562
	#$conf["formName"],字串,表單的名稱
12563
	#$conf["formName"]="";
12564
	#$conf["formAction"],字串,表單的目標,若有設置$conf["formStart"]為"true",則預設為php檔案自己
12565
	#$conf["formAction"]="";
12566
	#$conf["formTarget"],字串,表單要呈現回應的位置,預設為"_self".
12567
	#$conf["formTarget"]="_self";
12568
	#$conf["formEnd"],字串,是否為表單的結束,"true"為是,預設為"false".
12569
	#$conf["formEnd"]="true";
12570
	#$conf["comment"],字串,該上傳檔案的註解,預設不顯示.
12571
	#$conf["comment"]="";
12572
	#參考資料:
12573
	#無.
12574
	#備註:
12575
	#無.
12576
	*/
12577
	public static function uploadOneFile(&$conf){
12578
 
12579
		#初始化要回傳的變數
12580
		$result=array();
12581
 
12582
		#設置當前執行的函式
12583
		$result["function"]=__FUNCTION__;
12584
 
12585
		#初始化表單開始的語法
12586
		$result["content"]="";
12587
 
12588
		#如果 $conf 不為陣列
12589
		if(gettype($conf)!="array"){
12590
 
12591
			#設置執行失敗
12592
			$result["status"]="false";
12593
 
12594
			#設置執行錯誤訊息
12595
			$result["error"][]="\$conf變數須為陣列形態";
12596
 
12597
			#如果傳入的參數為 null
12598
			if($conf==null){
12599
 
12600
				#設置執行錯誤訊息
12601
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
12602
 
12603
				}#if end
12604
 
12605
			#回傳結果
12606
			return $result;
12607
 
12608
			}#if end
12609
 
12610
		#檢查參數
12611
		#函式說明:
12612
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
12613
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
12614
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
12615
		#$result["function"],當前執行的函式名稱.
12616
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
12617
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
12618
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
12619
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
12620
		#必填參數:
12621
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
12622
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
12623
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
12624
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("formFileName");
12625
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
12626
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
12627
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
12628
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
12629
		#可省略參數:
12630
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
12631
		#$conf["canBeEmptyString"]="false";
12632
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
12633
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("maxFileSize","browseButtonClass","trStart","trClass","tdStart","tdClass","tdEnd","trEnd","formStart","formAction","formTarget","formEnd","comment","formName","acceptType","required");
12634
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
12635
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string");
12636
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
12637
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("10240000","__qbpwcf_inputFileCssStyle","false","withoutBorder","false","withoutBorder","false","false","false",null,"_self","false",null,null,null,"false");
12638
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
12639
		#$conf["arrayCountEqualCheck"][]=array();
12640
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
12641
		unset($conf["variableCheck::checkArguments"]);
12642
 
12643
		#如果檢查參數失敗
12644
		if($checkResult["status"]=="false"){
12645
 
12646
			#設置執行失敗
12647
			$result["status"]="false";
12648
 
12649
			#設置執行錯誤
12650
			$result["error"]=$checkResult;
12651
 
12652
			#回傳結果
12653
			return $result;
12654
 
12655
			}#if end
12656
 
12657
		#如果檢查參數不通過
12658
		if($checkResult["passed"]=="false"){
12659
 
12660
			#設置執行失敗
12661
			$result["status"]="false";
12662
 
12663
			#設置執行錯誤
12664
			$result["error"]=$checkResult;
12665
 
12666
			#回傳結果
12667
			return $result;
12668
 
12669
			}#if end
12670
 
12671
		#建立沒有框線的表單css樣式
12672
		#函式說明:
12673
		#創建 css 樣式
12674
		#必填參數:
12675
		$conf_createCssStyle["cssStyleName"]="__withoutBorderUploadOneFileCssStyle";#為該 css 樣式的名稱,不能以數字開頭。
12676
		$conf_createCssStyle["attributes"]=array("width","font-size","border","border-style");#為屬性名稱,須為陣列值
12677
		$conf_createCssStyle["content"]=array("100%","30px","0px","solid");#為屬性值,須為陣列值
12678
		$css=css::createCssStyle($conf_createCssStyle);
12679
		unset($conf_createCssStyle);
12680
 
12681
		#若創建css樣式失敗
12682
		if($css["status"]=="false"){
12683
 
12684
			#設置執行失敗
12685
			$result["status"]="false";
12686
 
12687
			#設置執行錯誤
12688
			$result["error"]=$css;
12689
 
12690
			#回傳結果
12691
			return $result;
12692
 
12693
			}#if end
12694
 
12695
		#串接css語法
12696
		$result["content"]=$result["content"].$css["content"];
12697
 
12698
		#建立有框線的表單css樣式
12699
		#函式說明:
12700
		#創建 css 樣式
12701
		#必填參數:
12702
		$conf_createCssStyle["cssStyleName"]="__withBorderUploadOneFileCssStyle";#為該 css 樣式的名稱,不能以數字開頭。
12703
		$conf_createCssStyle["attributes"]=array("width","font-size","border","border-style");#為屬性名稱,須為陣列值
12704
		$conf_createCssStyle["content"]=array("100%","30px","1px","solid");#為屬性值,須為陣列值
12705
		$css=css::createCssStyle($conf_createCssStyle);
12706
		unset($conf_createCssStyle);
12707
 
12708
		#若創建css樣式失敗
12709
		if($css["status"]=="false"){
12710
 
12711
			#設置執行失敗
12712
			$result["status"]="false";
12713
 
12714
			#設置執行錯誤
12715
			$result["error"]=$css;
12716
 
12717
			#回傳結果
12718
			return $result;
12719
 
12720
			}#if end
12721
 
12722
		#串接css語法
12723
		$result["content"]=$result["content"].$css["content"];
12724
 
12725
		#如果 $conf["trStart"] 等於 "true"
12726
		if($conf["trStart"]=="true"){
12727
 
12728
			#套用指定的css樣式
12729
			$conf["table"]["trStart"]["class"]=$conf["trClass"];
12730
 
12731
			#函式說明:
12732
			#列開始
12733
			#回傳結果:
12734
			#$result,列開始的語法
12735
			#必填寫的參數:
12736
			#$conf["table"]["trStart"]["class"]="";#該 tr 要套用套用的 css 樣式若爲 "" 則會採用預設的css樣式 __defaultTrCsssStyle,其屬性爲 border:1px solid blue
12737
			$trStart=table::trStart($conf["table"]["trStart"]);
12738
			unset($conf["table"]["trStart"]);
12739
 
12740
			#如果列歐開始結束
12741
			if($trStart["status"]=="false"){
12742
 
12743
				#設置執行失敗
12744
				$result["status"]="false";
12745
 
12746
				#設置執行錯誤
12747
				$result["error"]=$trStart;
12748
 
12749
				#回傳結果
12750
				return $result;
12751
 
12752
				}#if end
12753
 
12754
			#串接列開始
12755
			$result["content"]=$result["content"].$trStart["content"];
12756
 
12757
			}#if end
12758
 
12759
		#如果 $conf["tdStart"] 等於 "true"
12760
		if($conf["tdStart"]=="true"){
12761
 
12762
			#套用指定的css樣式
12763
			$conf["table"]["tdStart"]["class"]=$conf["tdClass"];
12764
 
12765
			#函式說明:
12766
			#列開始
12767
			#回傳結果:
12768
			#$result,列開始的語法
12769
			#必填寫的參數:
12770
			#$conf["table"]["tdStart"]["class"]="";#該 td 要套用套用的 css 樣式若爲 "" 則會採用預設的css樣式 __defaultTrCsssStyle,其屬性爲 border:1px solid blue
12771
			$tdStart=table::tdStart($conf["table"]["tdStart"]);
12772
			unset($conf["table"]["tdStart"]);
12773
 
12774
			#如果欄開始結束
12775
			if($tdStart["status"]=="false"){
12776
 
12777
				#設置執行失敗
12778
				$result["status"]="false";
12779
 
12780
				#設置執行錯誤
12781
				$result["error"]=$tdStart;
12782
 
12783
				#回傳結果
12784
				return $result;
12785
 
12786
				}#if end
12787
 
12788
			#串接欄開始
12789
			$result["content"]=$result["content"].$tdStart["content"];
12790
 
12791
			}#if end
12792
 
12793
		#如果 $conf["formStart"] 為 "true"
12794
		if($conf["formStart"]=="true"){
12795
 
12796
			#函式說明:
12797
			#表單開始
12798
			#回傳結果:
12799
			#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
12800
			#$result["error"],錯誤訊息陣列.
12801
			#$resutl["function"],當前執行的函式名稱.
12802
			#$result["content"],表單開始的語法.
12803
			#必填參數:
12804
			$conf["form::start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容
12805
			#可省略參數:
12806
			#$conf["legend"]="";#顯示表單的標題
12807
 
12808
			#如果 $conf["formName"] 有設置
12809
			if(isset($conf["formName"])){
12810
 
12811
				$conf["form::start"]["name"]=$conf["formName"];#爲該表單的名稱
12812
 
12813
				}#if end
12814
 
12815
			#$conf["method"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
12816
			$conf["form::start"]["target"]=$conf["formTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
12817
			#$conf["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是,"false"為否,預設為"false".
12818
			#$conf["tableClass"]="";#表格要套用的css樣式,預設爲"__withoutBorder"無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
12819
			#$conf["showFieldsetBorder"]="false";#是否要顯示表單區域的框線,預設為"false"不顯示,"true"代表要顯示.
12820
			#參考資料:
12821
			#http://www.w3schools.com/html/html_forms.asp
12822
			#http://www.w3schools.com/tags/tag_fieldset.asp
12823
			$formStart=form::start($conf["form::start"]);
12824
			unset($conf["form::start"]);
12825
 
12826
			#如果表單開始失敗
12827
			if($formStart["status"]=="false"){
12828
 
12829
				#設置執行失敗
12830
				$result["status"]="false";
12831
 
12832
				#設置執行錯誤
12833
				$result["error"]=$formStart;
12834
 
12835
				#回傳結果
12836
				return $result;
12837
 
12838
				}#if end
12839
 
12840
			#串接表單的開始
12841
			$result["content"]=$result["content"].$formStart["content"];
12842
 
12843
			}#if end
12844
 
12845
		#設定上傳到檔案最大大小限制,單位爲byte
12846
		$conf_inputHidden["name"]="max_file_size";
12847
		$conf_inputHidden["value"]=$conf["maxFileSize"];
12848
		$hiddenVar=form::inputHidden($conf_inputHidden);
12849
		unset($conf_inputHidden);#清空變數避免出錯
12850
 
12851
		#建立隱藏的表單失敗
12852
		if($hiddenVar["status"]=="false"){
12853
 
12854
			#設置執行失敗
12855
			$result["status"]="false";
12856
 
12857
			#設置執行錯誤
12858
			$result["error"]=$hiddenVar;
12859
 
12860
			#回傳結果
12861
			return $result;
12862
 
12863
			}#if end
12864
 
12865
		#串接檔案大小的限制
12866
		$result["content"]=$result["content"].$hiddenVar["content"];
12867
 
12868
		#函式說明:
12869
		#上傳檔案的表單
12870
		#回傳結果:
12871
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
12872
		#$result["function"],當前執行的函數.
12873
		#$result["error"],錯誤訊息陣列.
12874
		#$result["content"],上傳檔案的語法.
12875
		#必填參數:
12876
		#$conf["formFileName"],字串,該檔案上傳時的表單名稱。
12877
		$conf["form::inputFile"]["formFileName"]=$conf["formFileName"];
12878
		#可省略參數:
12879
 
12880
		#如果已有設置 $conf["acceptType"]
12881
		if(isset($conf["acceptType"])){
12882
 
12883
			#$conf["form::inputFile"]["acceptType"],字串,限定檔案的類型為"video/*","audio/*","image/*",預設不限定.
12884
			$conf["form::inputFile"]["acceptType"]=$conf["acceptType"];
12885
 
12886
			}#if end
12887
 
12888
		#$conf["form::inputFile"]["class"],字串,該上傳表單所要套用的css樣式,若省略則採用預設的css樣式"__inputFileCssStyle",其屬性爲 width:100% font-size:30px
12889
		$conf["form::inputFile"]["class"]=$conf["browseButtonClass"];
12890
		#$conf["id"],字串,爲該上傳表單的id,預設跟$conf["formFileName"]一樣.
12891
		#$conf["id"]="";
12892
 
12893
		#如果有設置 $conf["required"]
12894
		if(isset($conf["required"])){
12895
 
12896
			#$conf["form::inputFile"]["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
12897
			$conf["form::inputFile"]["required"]=$conf["required"];
12898
 
12899
			}#if end
12900
 
12901
		#有設置註解
12902
		if(isset($conf["comment"])){
12903
 
12904
			#$conf["form::inputFile"]["comment"],字串,輔助說明的文字,會出現在檔案上傳的上一行.
12905
			$conf["form::inputFile"]["comment"]=$conf["comment"];
12906
 
12907
			}#if end
12908
 
12909
		#$conf["form::inputFile"]["formStart"],字串,爲是否要以<form>開頭,"true"表示"是",也可以看成表單的開始,預設為"false".
12910
		#$conf["form::inputFile"]["formStart"]=$conf["formStart"];
12911
		#$conf["form::inputFile"]["formAction"],字串,表單遞交的目的地,若$conf["formStart"]為"true",則該參數不能省略,預設為"false".
12912
		#$conf["form::inputFile"]["formAction"]=$conf["formAction"];
12913
		#$conf["form::inputFile"]["formName"],字串,爲該表單的名稱
12914
		#$conf["form::inputFile"]["formName"]=$conf["formName"];
12915
		#$conf["form::inputFile"]["formMethod"],字串,爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
12916
		#$conf["form::inputFile"]["formMethod"]="";
12917
		#$conf["form::inputFile"]["formTarget"],字串,為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
12918
		#$conf["form::inputFile"]["formTarget"]=$conf["formTarget"];
12919
		#$conf["form::inputFile"]["formEnd"],字串,爲是否要以<form>結尾,"true"表示"是",也可以看成表單的結束,預設為"false".
12920
		$conf["form::inputFile"]["formEnd"]=$conf["formEnd"];
12921
		#參考資料:
12922
		#http://www.w3schools.com/tags/tag_input.asp
12923
		$inputFile=form::inputFile($conf["form::inputFile"]);
12924
		unset($conf["form::inputFile"]);
12925
 
12926
		#如果上傳檔案的表單建立失敗
12927
		if($inputFile["status"]=="false"){
12928
 
12929
			#設置執行失敗
12930
			$result["status"]="false";
12931
 
12932
			#設置執行錯誤
12933
			$result["error"]=$inputFile;
12934
 
12935
			#回傳結果
12936
			return $result;
12937
 
12938
			}#if end
12939
 
12940
		#串接上傳檔案的表單
12941
		$result["content"]=$result["content"].$inputFile["content"];
12942
 
12943
		#如果 $conf["tdEnd"] 等於 "true"
12944
		if($conf["tdEnd"]=="true"){
12945
 
12946
			#串接欄的結束tag
12947
			$result["content"]=$result["content"]."</td>";
12948
 
12949
			}#if end
12950
 
12951
		#如果 $conf["trEnd"] 等於 "true"
12952
		if($conf["trEnd"]=="true"){
12953
 
12954
			#串接列的結束tag
12955
			$result["content"]=$result["content"]."</tr>";
12956
 
12957
			}#if end
12958
 
12959
		#設置執行正常
12960
		$result["status"]="true";
12961
 
12962
		#回傳結果
12963
		return $result;
12964
 
12965
		}#function uploadOneFile end
12966
 
12967
	/*
12968
	#函式說明:
12969
	#上傳一個檔案,包含送出鈕與回上頁的按鈕
12970
	#回傳結果:
12971
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
12972
	#$result["function"],當前執行的函數.
12973
	#$result["error"],錯誤訊息陣列.
12974
	#$result["content"],語法.
12975
	#必填參數:
12976
	#$conf["formFileName"],字串,該上傳檔案的表單名稱.
12977
	$conf["formFileName"]="";
12978
	#$conf["actionPage"],字串,處理表單資訊的頁面.
12979
	$conf["actionPage"]="";
12980
	#可省略參數:
12981
	#$conf["backButtonName"],字串,退回上一頁的按鈕要顯示的名稱,預設爲"回上頁"
12982
	#$conf["backButtonName"]="回上頁";
12983
	#$conf["backPage"],字串,返回的按鈕點了之後要到哪個頁面,預設是不使用.
12984
	#$conf["backPage"]="";
12985
	#$conf["backTarget"],字串,返回按鈕的顯示區塊.
12986
	#$conf["backTarget"]="";
12987
	#$conf["backButtonClass"],字串,回上頁按鈕的css樣式,預設為"__simpleButtonLinkDefaultButtonCssStyle".
12988
	#$conf["backButtonClass"]="__simpleButtonLinkDefaultButtonCssStyle";
12989
	#$conf["comment"],字串,該上傳檔案的註解,預設不顯示.
12990
	#$conf["comment"]="";
12991
	#$conf["formName"],字串,表單的名稱
12992
	#$conf["formName"]="";
12993
	#$conf["formTarget"],字串,表單要呈現回應的位置,預設為"_self".
12994
	#$conf["formTarget"]="_self";
12995
	#$conf["acceptType"],字串,限定檔案的類型為"video/*","audio/*","image/*",預設不限定.
12996
	#$conf["acceptType"]="";
12997
	#$conf["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
12998
	#$conf["required"]="true";
12999
	#$conf["maxFileSize"],字串,檔案的最大限制,單位是位元組(byte),1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設爲"102400000"(100MB)
13000
	#$conf["maxFileSize"]="102400000";
13001
	#$conf["browseButtonClass"],字串,瀏覽要上傳檔案的css樣式,預設為"__qbpwcf_inputFileCssStyle".
13002
	#$conf["browseButtonClass"]="__inputFileCssStyle";
13003
	#$conf["submitButtonClass"],字串,上傳按鈕的css樣式,預設為"__simpleButtonLinkDefaultButtonCssStyle".
13004
	#$conf["submitButtonClass"]="__simpleButtonLinkDefaultButtonCssStyle";
13005
	#$conf["submitButtonName"],字串,送出鈕要顯示的名稱,預設爲"上傳"
13006
	#$conf["submitButtonName"]="上傳";
13007
	#參考資料:
13008
	#無.
13009
	#備註:
13010
	#無.
13011
	*/
13012
	public static function uploadOneFileCom(&$conf){
13013
 
13014
		#初始化要回傳的變數
13015
		$result=array();
13016
 
13017
		#設置當前執行的函式
13018
		$result["function"]=__FUNCTION__;
13019
 
13020
		#初始化表單開始的語法
13021
		$result["content"]="";
13022
 
13023
		#如果 $conf 不為陣列
13024
		if(gettype($conf)!="array"){
13025
 
13026
			#設置執行失敗
13027
			$result["status"]="false";
13028
 
13029
			#設置執行錯誤訊息
13030
			$result["error"][]="\$conf變數須為陣列形態";
13031
 
13032
			#如果傳入的參數為 null
13033
			if($conf==null){
13034
 
13035
				#設置執行錯誤訊息
13036
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
13037
 
13038
				}#if end
13039
 
13040
			#回傳結果
13041
			return $result;
13042
 
13043
			}#if end
13044
 
13045
		#檢查參數
13046
		#函式說明:
13047
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
13048
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
13049
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
13050
		#$result["function"],當前執行的函式名稱.
13051
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
13052
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
13053
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
13054
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
13055
		#必填參數:
13056
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
13057
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
13058
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
13059
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("formFileName","actionPage");
13060
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
13061
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
13062
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
13063
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
13064
		#可省略參數:
13065
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
13066
		#$conf["canBeEmptyString"]="false";
13067
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
13068
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("browseButtonClass","submitButtonClass","backPage","backButtonClass","maxFileSize","submitButtonName","backButtonName","comment","formTarget","acceptType","required","formName","backTarget");
13069
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
13070
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string","string","string","string","string","string","string");
13071
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
13072
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("__qbpwcf_inputFileCssStyle","__qbpwcf_button",null,"__qbpwcf_button","102400000","上傳","回上頁",null,"_self",null,"false",null,"_self");
13073
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
13074
		#$conf["arrayCountEqualCheck"][]=array();
13075
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
13076
		unset($conf["variableCheck::checkArguments"]);
13077
 
13078
		#如果檢查參數失敗
13079
		if($checkResult["status"]=="false"){
13080
 
13081
			#設置執行失敗
13082
			$result["status"]="false";
13083
 
13084
			#設置執行錯誤
13085
			$result["error"]=$checkResult;
13086
 
13087
			#回傳結果
13088
			return $result;
13089
 
13090
			}#if end
13091
 
13092
		#如果檢查參數不通過
13093
		if($checkResult["passed"]=="false"){
13094
 
13095
			#設置執行失敗
13096
			$result["status"]="false";
13097
 
13098
			#設置執行錯誤
13099
			$result["error"]=$checkResult;
13100
 
13101
			#回傳結果
13102
			return $result;
13103
 
13104
			}#if end
13105
 
13106
		#如果$conf["backPage"]有存在,則放置回上頁的按鈕
13107
		if(isset($conf["backPage"])){
13108
 
13109
			#函式說明:
13110
			#放置按鈕
13111
			#回傳結果:
13112
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
13113
			#$result["function"],當前執行的函數.
13114
			#$result["error"],錯誤訊息陣列.
13115
			#$result["content"],按鈕語法.
13116
			#必填參數:
13117
			$conf["form::button"]["buttonDisplayValue"]=$conf["backButtonName"];#爲按鈕上顯示的文字。
13118
			#可省略參數:
13119
			$conf["form::button"]["buttonStyleName"]=$conf["backButtonClass"];#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __simpleButtonLinkDefaultButtonCssStyle 。
13120
				#其屬性爲   "width","height","font-size","text-align"
13121
				#其屬性值爲 "100%" ,  "50"  ,    "30"   ,   "center"
13122
			#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。
13123
				#"document.forms.formName.submit()"爲傳送名爲testForm的表單內容
13124
				#"window.print()"爲使用瀏覽器內建工具列印當前網頁
13125
			#$conf["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。
13126
			#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".
13127
			#$conf["tableStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"false"。
13128
			#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。
13129
			#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
13130
			#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",亦即沒有框線的樣式;"__withBorder"則爲有框線的樣式
13131
			#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".
13132
			#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
13133
			#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
13134
			#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
13135
			#$conf["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是,預設爲"false"。
13136
			$conf["form::button"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".
13137
			$conf["form::button"]["action"]=$conf["backPage"];#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用
13138
			$conf["form::button"]["target"]=$conf["backTarget"];#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用
13139
			$conf["form::button"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".
13140
			#參考資料:
13141
			#http://stackoverflow.com/questions/3014649/how-to-disable-html-button-using-javascript
13142
			$prePageButton=form::button($conf["form::button"]);
13143
			unset($conf["form::button"]);
13144
 
13145
			#如果回上頁的按鈕建立失敗
13146
			if($prePageButton["status"]=="false"){
13147
 
13148
				#設置執行失敗
13149
				$result["status"]="false";
13150
 
13151
				#設置執行錯誤
13152
				$result["error"]=$prePageButton;
13153
 
13154
				#回傳結果
13155
				return $result;
13156
 
13157
				}#if end
13158
 
13159
			#放置回上頁的按鈕
13160
			$conf["table::printColumn"]["tdContent"][]=$prePageButton["content"];
13161
 
13162
			}#if end
13163
 
13164
		#上傳檔案的表單
13165
		#函式說明:
13166
		#可以瀏覽要上傳的檔案
13167
		#回傳結果:
13168
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
13169
		#$result["function"],當前執行的函數.
13170
		#$result["error"],錯誤訊息陣列.
13171
		#$result["content"],上傳檔案的語法.
13172
		#必填參數:
13173
		#$conf["formFileName"],字串,該上傳檔案的表單名稱.
13174
		$conf["form::uploadOneFile"]["formFileName"]=$conf["formFileName"];
13175
		#可省略參數:
13176
		#$conf["form::uploadOneFile"]["maxFileSize"],字串,檔案的最大限制,單位是位元組(byte)。1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設是10240000(10MB)
13177
		$conf["form::uploadOneFile"]["maxFileSize"]=$conf["maxFileSize"];
13178
		#$conf["browseButtonClass"],字串,瀏覽檔案的按鈕樣式,預設為"__inputFileCssStyle".
13179
		$conf["form::uploadOneFile"]["browseButtonClass"]=$conf["browseButtonClass"];
13180
 
13181
		#如果有設定 $conf["acceptType"]
13182
		if(isset($conf["acceptType"])){
13183
 
13184
			#$conf["form::uploadOneFile"][["acceptType"],字串,限定檔案的類型為"video/*","audio/*","image/*",預設不限定.
13185
			$conf["form::uploadOneFile"]["acceptType"]=$conf["acceptType"];
13186
 
13187
			}#if end
13188
 
13189
		#$conf["form::uploadOneFile"]["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
13190
		$conf["form::uploadOneFile"]["required"]=$conf["required"];
13191
 
13192
		#$conf["trStart"],字串,爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設為"false".
13193
		#$conf["trStart"]="true";
13194
		#$conf["trClass"],字串,列的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式,預設為"__withoutBorder".
13195
		#$conf["trClass"]="__withoutBorder";
13196
		#$conf["tdStart"],字串,爲是否要以<td>開頭,"true"表示"是",也可以看成列裏面的元素開始,預設為"false".
13197
		#$conf["tdStart"]="false";
13198
		#$conf["tdClass"],字串,行的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式,預設為"__withoutBorder".
13199
		#$conf["tdClass"]="__withoutBorder";
13200
		#$conf["tdEnd"],字串,爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設為"false".
13201
		#$conf["tdEnd"]="true";
13202
		#$conf["trEnd"],字串,爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設為"false".
13203
		#$conf["trEnd"]="true";
13204
		#$conf["formStart"],字串,是否為表單的開始,"true"為是,預設為"false".
13205
		$conf["form::uploadOneFile"]["formStart"]="true";
13206
 
13207
		#如果有設置 $conf["formName"]
13208
		if(isset($conf["formName"])){
13209
 
13210
			#$conf["formName"],字串,表單的名稱
13211
			$conf["form::uploadOneFile"]["formName"]=$conf["formName"];
13212
 
13213
			}#if end
13214
 
13215
		#$conf["formAction"],字串,表單的目標,若有設置$conf["formStart"]為"true",則預設為php檔案自己
13216
		$conf["form::uploadOneFile"]["formAction"]=$conf["actionPage"];
13217
		#$conf["form::uploadOneFile"]["formTarget"],字串,表單要呈現回應的位置,預設為"_self".
13218
		$conf["form::uploadOneFile"]["formTarget"]=$conf["formTarget"];
13219
		#$conf["formEnd"],字串,是否為表單的結束,"true"為是,預設為"false".
13220
		#$conf["form::uploadOneFile"]["formEnd"]="false";
13221
 
13222
		#如果 $conf["comment"] 有設定
13223
		if(isset($conf["comment"])){
13224
 
13225
			#$conf["form::uploadOneFile"]["comment"],字串,該上傳檔案的註解,預設不顯示.
13226
			$conf["form::uploadOneFile"]["comment"]=$conf["comment"];
13227
 
13228
			}#if end
13229
 
13230
		$uploadOneFile=form::uploadOneFile($conf["form::uploadOneFile"]);
13231
		unset($conf["form::uploadOneFile"]);
13232
 
13233
		#如果建立上傳的表單失敗
13234
		if($uploadOneFile["status"]=="false"){
13235
 
13236
			#設置執行失敗
13237
			$result["status"]="false";
13238
 
13239
			#設置執行錯誤
13240
			$result["error"]=$uploadOneFile;
13241
 
13242
			#回傳結果
13243
			return $result;
13244
 
13245
			}#if end
13246
 
13247
		#放置上傳檔案的表單
13248
		$conf["table::printColumn"]["tdContent"][]=$uploadOneFile["content"];
13249
 
13250
		#上傳的按鈕
13251
		#函式說明:
13252
		#放置按鈕
13253
		#回傳結果:
13254
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
13255
		#$result["function"],當前執行的函數.
13256
		#$result["error"],錯誤訊息陣列.
13257
		#$result["content"],按鈕語法.
13258
		#必填參數:
13259
		$conf["form::button"]["buttonDisplayValue"]=$conf["submitButtonName"];#爲按鈕上顯示的文字。
13260
		#可省略參數:
13261
		$conf["form::button"]["buttonStyleName"]=$conf["submitButtonClass"];#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __simpleButtonLinkDefaultButtonCssStyle 。
13262
			#其屬性爲   "width","height","font-size","text-align"
13263
			#其屬性值爲 "100%" ,  "50"  ,    "30"   ,   "center"
13264
		#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。
13265
			#"document.forms.formName.submit()"爲傳送名爲testForm的表單內容
13266
			#"window.print()"爲使用瀏覽器內建工具列印當前網頁
13267
		#$conf["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。
13268
		#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".
13269
		#$conf["tableStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"false"。
13270
		#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。
13271
		#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
13272
		#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",亦即沒有框線的樣式;"__withBorder"則爲有框線的樣式
13273
		#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".
13274
		#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
13275
		#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
13276
		#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
13277
		#$conf["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是,預設爲"false"。
13278
		#$conf["form::button"]["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".
13279
		#$conf["form::button"]["action"]=$conf["backPage"];#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用
13280
		#$conf["target"]="";#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用
13281
		$conf["form::button"]["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".
13282
		#參考資料:
13283
		#http://stackoverflow.com/questions/3014649/how-to-disable-html-button-using-javascript
13284
		$submitButton=form::button($conf["form::button"]);
13285
		unset($conf["form::button"]);
13286
 
13287
		#如果回上頁的按鈕建立失敗
13288
		if($submitButton["status"]=="false"){
13289
 
13290
			#設置執行失敗
13291
			$result["status"]="false";
13292
 
13293
			#設置執行錯誤
13294
			$result["error"]=$submitButton;
13295
 
13296
			#回傳結果
13297
			return $result;
13298
 
13299
			}#if end
13300
 
13301
		#放置上傳的按鈕
13302
		$conf["table::printColumn"]["tdContent"][]=$submitButton["content"];
13303
 
13304
		#建立一欄表格
13305
		#函式說明:
13306
		#建立欄的元素,以及指定裏面要放什麼內容
13307
		#回傳的變數:
13308
		#$result["content"],建立欄元素的語法
13309
		#$result["status"],"true"代表執行成功;"false"代表執行失敗。
13310
		#$result["error"],錯誤訊息陣列
13311
		#必填參數:
13312
		$conf["table::printColumn"]["trClass"]="__withoutBorder";#列的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
13313
		$conf["table::printColumn"]["tdClass"]="__withoutBorder";#行的樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
13314
		#$conf["table::printColumn"]["tdContent"]=array();#列裏面要放的元素是?如果要空一列則可以輸array("&nbsp;")
13315
		#可省略參數:
13316
		#$conf["table::printColumn"]["formData"],字串,$conf["tdContent"]裡面要放的元素是否含有表單,"true"代表有,"false"代表沒有,預設為"false".
13317
		$conf["table::printColumn"]["formData"]="true";
13318
		$conf["table::printColumn"]["tableStartClass"]="__withoutBorder";#列的樣式,預設為"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
13319
		$conf["table::printColumn"]["tableStart"]="true";#爲是否要表格開始,"true"表示"是",預設為"false".
13320
		$conf["table::printColumn"]["tableEnd"]="true";#爲是否要表格結束,"true"表示"是",預設為"false".
13321
		#$conf["formStart"]="true";#是否要有表單的開始,預設為"false".
13322
		#$conf["formName"]="";#該表單的名稱
13323
		#$conf["formAction"]="";#表單提交的目的地,若$conf["formStart"]有設置,則該參數也要設置
13324
		#$conf["formTarget"]="_self";#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
13325
		#$conf["formEnd"]="true";#是否要有表單的結束,預設為"false".
13326
		#$conf["table::printColumn"]["spaceBlockAferPerElement"]="true";#是否每個欄元素(除了最後一個元素)後面都要空一列。"true"代表要空一列.預設是不空一列.
13327
		$printColumn=table::printColumn($conf["table::printColumn"]);
13328
		unset($conf["table::printColumn"]);
13329
 
13330
		#串接一欄表格
13331
		$result["content"]=$result["content"].$printColumn["content"];
13332
 
13333
		#設置執行正常
13334
		$result["status"]="true";
13335
 
13336
		#回傳結果
13337
		return $result;
13338
 
13339
		}#function uploadOneFileCom end
13340
 
13341
	/*
13342
	#函式說明:
13343
	#檢測接收的檔案是否符合條件
13344
	#回傳的內容:
13345
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
13346
	#$result["function"],當前執行的函數.
13347
	#$result["error"],錯誤訊息陣列.
13348
	#$result["passed"],檢查是否都通過.
13349
	#$result["fileNameCheck"],若爲"true"則代表檔案名稱正確,"false"檔案名稱不正確.
13350
	#$result["fileSizeCheck"],若爲"true"則代表檔案大小正確。
13351
	#$result["fileTypeCheck"],若爲"true"則代表檔案類型正確。
13352
	#必填參數:
13353
	$conf["formFileName"]="";#爲該檔案上傳時候的表單名稱
13354
	#可省略參數:
13355
	#$conf["uploadedFileName"]="";#爲檔案上傳時的檔案名稱,省略則跳過此部分驗證
13356
	#$conf["uploadedFileSize"]="";#爲檔案上傳時的檔案大小,省略則跳過此部分驗證
13357
	#$conf["uploadedFileType"]=array("");#爲檔案上傳時的檔案型別,需爲陣列型別,省略則跳過此部分驗證
13358
	#參考資料:
13359
	#無.
13360
	#備註:
13361
	#無.
13362
	*/
13363
	public static function simpleFileAuthentication(&$conf){
13364
 
13365
		#初始化要回傳的變數
13366
		$result=array();
13367
 
13368
		#設置當前執行的函式
13369
		$result["function"]=__FUNCTION__;
13370
 
13371
		#初始化表單開始的語法
13372
		$result["content"]="";
13373
 
13374
		#如果 $conf 不為陣列
13375
		if(gettype($conf)!="array"){
13376
 
13377
			#設置執行失敗
13378
			$result["status"]="false";
13379
 
13380
			#設置執行錯誤訊息
13381
			$result["error"][]="\$conf變數須為陣列形態";
13382
 
13383
			#如果傳入的參數為 null
13384
			if($conf==null){
13385
 
13386
				#設置執行錯誤訊息
13387
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
13388
 
13389
				}#if end
13390
 
13391
			#回傳結果
13392
			return $result;
13393
 
13394
			}#if end
13395
 
13396
		#檢查參數
13397
		#函式說明:
13398
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
13399
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
13400
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
13401
		#$result["function"],當前執行的函式名稱.
13402
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
13403
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
13404
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
13405
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
13406
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
13407
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
13408
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
13409
		#必填參數:
13410
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
13411
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
13412
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
13413
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("formFileName");
13414
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
13415
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
13416
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
13417
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
13418
		#可省略參數:
13419
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
13420
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
13421
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
13422
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("uploadedFileName","uploadedFileSize","uploadedFileType");
13423
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
13424
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","array");
13425
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
13426
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null,null);
13427
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
13428
		#$conf["arrayCountEqualCheck"][]=array();
13429
		#參考資料:
13430
		#array_keys=>http://php.net/manual/en/function.array-keys.php
13431
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
13432
		unset($conf["variableCheck::checkArguments"]);
13433
 
13434
		#如果 $checkArguments["status"] 等於 "false"
13435
		if($checkArguments["status"]=="false"){
13436
 
13437
			#設置錯誤識別
13438
			$result["status"]="false";
13439
 
13440
			#設置錯誤訊息
13441
			$result["error"]=$checkArguments;
13442
 
13443
			#回傳結果
13444
			return $result;
13445
 
13446
			}#if end
13447
 
13448
		#如果 $checkArguments["passed"] 等於 "false"
13449
		if($checkArguments["passed"]=="false"){
13450
 
13451
			#設置錯誤識別
13452
			$result["status"]="false";
13453
 
13454
			#設置錯誤訊息
13455
			$result["error"]=$checkArguments;
13456
 
13457
			#回傳結果
13458
			return $result;
13459
 
13460
			}#if end
13461
 
13462
		#預設為檢查通過
13463
		$result["passed"]="true";
13464
 
13465
		#檢查上傳的檔案表單名稱是否正確
13466
		if(!isset($_FILES[$conf["formFileName"]])){
13467
 
13468
			#設置錯誤識別
13469
			$result["status"]="false";
13470
 
13471
			#設置錯誤訊息
13472
			$result["error"][]="未接收到名為 ".$conf["formFileName"]." 的表單變數";
13473
 
13474
			#回傳結果
13475
			return $result;
13476
 
13477
			}#if end
13478
 
13479
		#如果$conf["uploadedFileName"]有設定
13480
		if(isset($conf["uploadedFileName"])){
13481
 
13482
			#如果 $_FILES[$conf["formFileName"]]["name"] 有設定
13483
			if(isset($_FILES[$conf["formFileName"]]["name"])){
13484
 
13485
				#則驗證檔案名稱
13486
				if($_FILES[$conf["formFileName"]]["name"]==$conf["uploadedFileName"]){
13487
 
13488
					#$result["fileNameCheck"]設爲"true"
13489
					$result["fileNameCheck"]="true";
13490
 
13491
					}#if end
13492
 
13493
				#若檔案名稱驗證失敗
13494
				else{
13495
 
13496
					#$result["fileNameCheck"]設爲"false"
13497
					$result["fileNameCheck"]="false";
13498
 
13499
					#設置驗證失敗
13500
					$result["passed"]="false";
13501
 
13502
					}#if end
13503
 
13504
				}#if end
13505
 
13506
			}#if end
13507
 
13508
		#如果$conf["uploadedFileSize"]有設定
13509
		if(isset($conf["uploadedFileSize"])) {
13510
 
13511
			#如果 $_FILES[$conf["formFileName"]]["name"] 有設定
13512
			if(isset($_FILES[$conf["formFileName"]]["name"])){
13513
 
13514
				#則驗證檔案大小
13515
				if($_FILES[$conf["formFileName"]]["size"]==$conf["uploadedFileSize"]){
13516
 
13517
					#$result["fileSizeCheck"]設爲"true"
13518
					$result["fileSizeCheck"]="true";
13519
 
13520
					}#if end
13521
 
13522
				#反之檔案大小不正確
13523
				else{
13524
 
13525
					#$result["fileSizeCheck"]設爲"false"
13526
					$result["fileSizeCheck"]="false";
13527
 
13528
					#設置驗證失敗
13529
					$result["passed"]="false";
13530
 
13531
					}#else end
13532
 
13533
				}#if end
13534
 
13535
			}#if end
13536
 
13537
		#如果有設定$conf["uploadedFileType"]則檢查檔案形態是否符合規定
13538
		if(isset($conf["uploadedFileType"])){
13539
 
13540
			#如果 $_FILES[$conf["formFileName"]]["name"] 有設定
13541
			if(isset($_FILES[$conf["formFileName"]]["name"])){
13542
 
13543
				#取得可以通過驗證的檔案類型數量
13544
				$fileTypeCount=count($conf["uploadedFileType"]);
13545
 
13546
				#檔案類型只要是以下其中一種即可
13547
				for($i=0;$i<$fileTypeCount;$i++){
13548
 
13549
					#中間的幾種,若有符合的
13550
					if($_FILES[$conf["formFileName"]]['type']==$conf["uploadedFileType"][$i]){
13551
 
13552
						#符合檔案形態則設爲"true"
13553
						$result["fileTypeCheck"]="true";
13554
 
13555
						#挑出迴圈
13556
						break;
13557
 
13558
						}#if end
13559
 
13560
					#反之代表
13561
					else{
13562
 
13563
						#不符合檔案形態則設爲"false"
13564
						$result["fileTypeCheck"]="false";
13565
 
13566
						#設置驗證失敗
13567
						$result["passed"]="false";
13568
 
13569
						}#else end
13570
 
13571
					}#for end
13572
 
13573
				}#if end
13574
 
13575
			}#if end
13576
 
13577
		#如果 $result["status"] 沒有設置
13578
		if(!isset($result["status"])){
13579
 
13580
			#代表執行到這邊代表執行正常
13581
			$result["status"]="true";
13582
 
13583
			}#if end
13584
 
13585
		#回傳結果
13586
		return $result;
13587
 
13588
		}#function simpleFileAuthentication end
13589
 
13590
	/*
13591
	#函式說明:
13592
	#處理一個已上傳的檔案,用作驗證
13593
	#回傳結果:
13594
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
13595
	#$result["function"],當前執行的函數.
13596
	#$result["error"],錯誤訊息陣列.
13597
	#$result["passed"],驗證成功為"true"失敗則為false".
13598
	#$result["fileNameCheck"],若爲"true"則代表檔案名稱正確,"false"檔案名稱不正確.
13599
	#$result["fileSizeCheck"],若爲"true"則代表檔案大小正確。
13600
	#$result["fileTypeCheck"],若爲"true"則代表檔案類型正確。
13601
	#必填參數:
13602
	$conf["formFileName"]="";#該上傳檔案的表單名稱
13603
	$conf["uploadFileName"]="";#如果上傳的檔案名稱等於 $conf["uploadFileName"] 則通過第一階段驗證
13604
	$conf["uploadFileSize"]="";#如果上傳的檔案大小等於 $conf["uploadFileSize"] 則通過第二階段驗證
13605
	$conf["uploadedFileType"]="";#如果上傳的檔案類型等於 $conf["uploadedFileType"] 則通過第三階段驗證
13606
	$conf["password"]="";#供驗證用的內容。
13607
	#用戶段會取得的變數內容:
13608
	#$_SESSION["password"],用來做檢查,是否通過認證的session變數,若php設定檔沒有自動啓用session的話,此行前面必須要有 session_start();
13609
	#可省略參數:
13610
	#$conf["passAction"]="";#如果檔案驗證成功,轉址到?沒設定則不轉址
13611
	#$conf["failedAction"]="";#如果檔案驗正不通過則,轉址到?沒設定則不轉址
13612
	#參考資料:
13613
	#無.
13614
	#備註:
13615
	#無.
13616
	*/
13617
	public static function responseOneFileForAuthentication($conf){
13618
 
13619
		#初始化要回傳的變數
13620
		$result=array();
13621
 
13622
		#設置當前執行的函式
13623
		$result["function"]=__FUNCTION__;
13624
 
13625
		#初始化表單開始的語法
13626
		$result["content"]="";
13627
 
13628
		#如果 $conf 不為陣列
13629
		if(gettype($conf)!="array"){
13630
 
13631
			#設置執行失敗
13632
			$result["status"]="false";
13633
 
13634
			#設置執行錯誤訊息
13635
			$result["error"][]="\$conf變數須為陣列形態";
13636
 
13637
			#如果傳入的參數為 null
13638
			if($conf==null){
13639
 
13640
				#設置執行錯誤訊息
13641
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
13642
 
13643
				}#if end
13644
 
13645
			#回傳結果
13646
			return $result;
13647
 
13648
			}#if end
13649
 
13650
		#檢查參數
13651
		#函式說明:
13652
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
13653
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
13654
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
13655
		#$result["function"],當前執行的函式名稱.
13656
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
13657
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
13658
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
13659
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
13660
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
13661
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
13662
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
13663
		#必填參數:
13664
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
13665
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
13666
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
13667
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("formFileName","uploadedFileName","uploadedFileSize","uploadedFileType");
13668
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
13669
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string","array");
13670
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
13671
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
13672
		#可省略參數:
13673
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
13674
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
13675
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
13676
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("passAction","failedAction");
13677
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
13678
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
13679
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
13680
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null);
13681
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
13682
		#$conf["arrayCountEqualCheck"][]=array();
13683
		#參考資料:
13684
		#array_keys=>http://php.net/manual/en/function.array-keys.php
13685
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
13686
		unset($conf["variableCheck::checkArguments"]);
13687
 
13688
		#如果 $checkArguments["status"] 等於 "false"
13689
		if($checkArguments["status"]=="false"){
13690
 
13691
			#設置錯誤識別
13692
			$result["status"]="false";
13693
 
13694
			#設置錯誤訊息
13695
			$result["error"]=$checkArguments;
13696
 
13697
			#回傳結果
13698
			return $result;
13699
 
13700
			}#if end
13701
 
13702
		#如果 $checkArguments["passed"] 等於 "false"
13703
		if($checkArguments["passed"]=="false"){
13704
 
13705
			#設置錯誤識別
13706
			$result["status"]="false";
13707
 
13708
			#設置錯誤訊息
13709
			$result["error"]=$checkArguments;
13710
 
13711
			#回傳結果
13712
			return $result;
13713
 
13714
			}#if end
13715
 
13716
		#取得驗證的結果
13717
		#函式說明:
13718
		#檢測接收的檔案是否符合條件
13719
		#回傳的內容:
13720
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
13721
		#$result["function"],當前執行的函數.
13722
		#$result["error"],錯誤訊息陣列.
13723
		#$result["passed"],檢查是否都通過.
13724
		#$result["fileNameCheck"],若爲"true"則代表檔案名稱正確,"false"檔案名稱不正確.
13725
		#$result["fileSizeCheck"],若爲"true"則代表檔案大小正確。
13726
		#$result["fileTypeCheck"],若爲"true"則代表檔案類型正確。
13727
		#必填參數:
13728
		$conf["form::simpleFileAuthentication"]["formFileName"]=$conf["formFileName"];#爲該檔案上傳時候的表單名稱
13729
		#可省略參數:
13730
		$conf["form::simpleFileAuthentication"]["uploadedFileName"]=$conf["uploadFileName"];#爲檔案上傳時的檔案名稱,省略則跳過此部分驗證
13731
		$conf["form::simpleFileAuthentication"]["uploadedFileSize"]=$conf["uploadedFileSize"];#爲檔案上傳時的檔案大小,省略則跳過此部分驗證
13732
		$conf["form::simpleFileAuthentication"]["uploadedFileType"]=$conf["uploadedFileType"];#爲檔案上傳時的檔案型別,需爲陣列型別,省略則跳過此部分驗證
13733
		$simpleFileAuthentication=form::simpleFileAuthentication($conf["form::simpleFileAuthentication"]);
13734
		unset($conf["form::simpleFileAuthentication"]);
13735
 
13736
		#如果驗證出錯
13737
		if($simpleFileAuthentication["status"]=="false"){
13738
 
13739
			#設置錯誤識別
13740
			$result["status"]="false";
13741
 
13742
			#設置錯誤訊息
13743
			$result["error"]=$simpleFileAuthentication;
13744
 
13745
			#回傳結果
13746
			return $result;
13747
 
13748
			}#if end
13749
 
13750
		#如果驗證不通過
13751
		if($simpleFileAuthentication["passed"]=="false"){
13752
 
13753
			#設置執行正常
13754
			$result["status"]="true";
13755
 
13756
			#設置驗證不通過
13757
			$result["passed"]="false";
13758
 
13759
			#設置檢查結果資訊
13760
			$result["fileNameCheck"]=$simpleFileAuthentication["fileNameCheck"];
13761
			$result["fileSizeCheck"]=$simpleFileAuthentication["fileNameCheck"];
13762
			$result["fileTypeCheck"]=$simpleFileAuthentication["fileNameCheck"];
13763
 
13764
			#如果 $conf["failedAction"] 有設定
13765
			if(isset($conf["failedAction"])){
13766
 
13767
				#轉址到 $conf["failedAction"]
13768
				$conf["header"]["headerLocation"]["headerLocation"]=$conf["failedAction"];
13769
				header::redirectionNow($conf["header"]["headerLocation"]);
13770
				unset($conf["header"]["headerLocation"]);
13771
 
13772
				}#if end
13773
 
13774
			#回傳結果
13775
			return $result;
13776
 
13777
			}#if end
13778
 
13779
		#如果 $authenticalResult["passed"] 等於 "true"
13780
		if($authenticalResult["passed"]=="true"){
13781
 
13782
			#給予通行碼
13783
			$_SESSION["password"]=$conf["password"];
13784
 
13785
			#如果 $conf["passAction"] 有設定
13786
			if(isset($conf["passAction"])){
13787
 
13788
				#轉址到	$conf["passAction"]
13789
				$conf["header"]["headerLocation"]["headerLocation"]=$conf["passAction"];
13790
				header::redirectionNow($conf["header"]["headerLocation"]);
13791
				unset($conf["header"]["headerLocation"]);
13792
 
13793
				}#if end
13794
 
13795
			#設置驗證通過
13796
			$result["passed"]="true";
13797
 
13798
			}#if end
13799
 
13800
		#設置執行正常
13801
		$result["status"]="true";
13802
 
13803
		#回傳結果
13804
		return $result;
13805
 
13806
		}#function responseOneFileForAuthentication end
13807
 
13808
	/*
13809
	#函式說明:
13810
	#處理上傳到暫存目錄的檔案,可以移動到指定的位置,並指定檔案的名稱。並且可以指定刪除舊有的檔案,然後將新檔案的相對位置寫入到資料庫裏面。
13811
	#回傳的變數:
13812
	#$result["status"],整體上傳有無成功。"true"代表完整成功 "false"代表有過程有錯誤
13813
	#$result["error"],錯誤訊息陣列,$result["error"][0] 為"沒有接收到上傳的檔案",則代表沒有上傳檔案.
13814
	#$result["warning"],警告訊息陣列
13815
	#$result["ServerFileName"],檔案名稱
13816
	#$result["ServerFileType"],檔案類型
13817
	#$result["ServerFileSize"],檔案大小
13818
	#$result["fileRelativePosition"],檔案的相對位置,包含檔案名稱與附檔名。
13819
	#必填參數:
13820
	#$conf["formFileName"],字串,為上傳檔案時表單傳送時的名稱
13821
	$conf["formFileName"]="";
13822
	#$conf["fileArgu"],字串,__FILE__的內容
13823
	$conf["fileArgu"]=__FILE__;
13824
	#可省略參數:
13825
	#$conf["uploadDirUserDefine"],字串,為存放上傳檔案的目錄,如果沒設定則會自行建立依照系統時間的年月日十分秒來替資料夾命名,並將上傳的檔案存在裏面。
13826
	#$conf["uploadDirUserDefine"]="";
13827
	#$conf["ServerFilenameUserDefine"],字串,為存放在伺服器上的檔案名稱,如果沒設定則依照台灣時間的年月日時分秒命名
13828
	#$conf["ServerFilenameUserDefine"]="";
13829
	#$conf["NoFileExtension"],字串,若為 "true" 則表 指定了檔案名稱後,不用再加上檔案型的副檔名,預設為"false".
13830
	#$conf["NoFileExtension"]="true";
13831
	#$conf["limitPage"],字串陣列,限制只能從哪些網頁檔案過來。
13832
	#$conf["limitPage"]=array("");
13833
	#$conf["taskName"],字串,爲該上傳作業的名稱,若沒設定,則預設爲"上傳作業"。
13834
	#$conf["taskName"]="";
13835
	#$conf["eraseOldFile"],字串,如果為"true"的話會移除同名的舊檔案,其值爲檔案的相對位置,預設為"false",不移除同名的檔案,並透過編號保留新的檔案.
13836
	#$conf["eraseOldFile"]="";
13837
	#$conf["dbProcess"],字串,如果爲"true",則會進行資料表資料更新的動作,亦即要設定 $conf["updatingMysqlServerAddress"] $conf["updatingMysqlAccount"] $conf["updatingDataBaseName"] $conf["updatingDataTableName"] $conf["updatingConditionDataTableColumnName"] $conf["updatingConditionDataTableColumnValue"] $conf["updatingTargetDataTableColumnName"] $conf["updatingTargetDataTableColumnValue"] 的內容,預設為"false".
13838
	#$conf["dbProcess"]="true";
13839
	#$conf["updatingMysqlServerAddress"],字串,資料庫位於網路上的哪個位置.
13840
	#$conf["updatingMysqlServerAddress"]=$dbAddress;
13841
	#$conf["updatingMysqlAccount"],字串,連線時要使用的帳號,省略時代表不用密碼進行連線.
13842
	#$conf["updatingMysqlAccount"]=$dbAccount;
13843
	#$conf["updatingMysqlPassword"],字串,連線時要使用的密碼.
13844
	#$conf["updatingMysqlPassword"]=$dbPassword;
13845
	#$conf["updatingDataBaseName"],字串,要更新的目標資料所屬資料庫名稱.
13846
	#$conf["updatingDataBaseName"]=$dbName;
13847
	#$conf["updatingDataTableName"],字串,要更新的目標資料位於哪個資料表.
13848
	#$conf["updatingDataTableName"]="";
13849
	#$conf["updatingConditionDataTableColumnName"],字串陣列,要用哪些欄位來識別要更新哪一筆資料,預設為array("id").
13850
	#$conf["updatingConditionDataTableColumnName"]=array("id");
13851
	#$conf["updatingConditionDataTableColumnValue"],字串陣列,該條件欄位內容的數值要爲多少,才是我們要修改的那筆資料。
13852
	#$conf["updatingConditionDataTableColumnValue"]=array("");
13853
	#$conf["updatingTargetDataTableColumnName"],字串陣列,要更新的資料欄位有?
13854
	#$conf["updatingTargetDataTableColumnName"]=array("");
13855
	#$conf["updatingTargetDataTableColumnValue"],字串陣列,目標資料欄位要改成什麼樣的數值,如果其元素含有"filePosition",則會替換成新檔案的相對位置
13856
	#$conf["updatingTargetDataTableColumnValue"]=array("");
13857
	#參考資料:
13858
	#file_exist()的用法
13859
	#http://php.net/manual/en/function.file-exists.php
13860
	#備註:
13861
	#無.
13862
	*/
13863
	public static function processUploadedFile($conf){
13864
 
13865
		#初始化要回傳的內容
13866
		$result=array();
13867
 
13868
		#設置當前執行的函數
13869
		$result["function"]=__FUNCTION__;
13870
 
13871
		#如果 $conf 不為陣列
13872
		if(gettype($conf)!="array"){
13873
 
13874
			#設置執行失敗
13875
			$result["status"]="false";
13876
 
13877
			#設置執行錯誤訊息
13878
			$result["error"][]="\$conf變數須為陣列形態";
13879
 
13880
			#如果傳入的參數為 null
13881
			if($conf==null){
13882
 
13883
				#設置執行錯誤訊息
13884
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
13885
 
13886
				}#if end
13887
 
13888
			#回傳結果
13889
			return $result;
13890
 
13891
			}#if end
13892
 
13893
		#檢查參數
13894
		#函式說明:
13895
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
13896
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
13897
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
13898
		#$result["function"],當前執行的函式名稱.
13899
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
13900
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
13901
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
13902
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
13903
		#必填參數:
13904
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
13905
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
13906
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
13907
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("formFileName","fileArgu");
13908
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
13909
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string","string");
13910
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
13911
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
13912
		#可省略參數:
13913
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
13914
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
13915
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
13916
		$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("uploadDirUserDefine","ServerFilenameUserDefine","NoFileExtension","limitPage","taskName","eraseOldFile","dbProcess","updatingMysqlServerAddress","updatingMysqlAccount","updatingMysqlPassword","updatingDataBaseName","updatingDataTableName","updatingConditionDataTableColumnName","updatingConditionDataTableColumnValue","updatingTargetDataTableColumnName","updatingTargetDataTableColumnValue");
13917
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
13918
		$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string","string","array","string","string","string","string","string","string","string","string","array","array","array","array");
13919
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
13920
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array(null,null,"false",null,"上傳作業","false","false",null,null,null,null,null,array("id"),null,null,null);
13921
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
13922
		unset($conf["variableCheck.checkArguments"]);
13923
 
13924
		#如果檢查失敗
13925
		if($checkResult["status"]=="false"){
13926
 
13927
			#設置執行不正常
13928
			$result["status"]="false";
13929
 
13930
			#程式停止執行
13931
			$result["error"]=$checkResult;
13932
 
13933
			#回傳結果
13934
			return $result;
13935
 
13936
			}#if end
13937
 
13938
		#如果檢查不通過
13939
		if($checkResult["passed"]=="false"){
13940
 
13941
			#設置執行不正常
13942
			$result["status"]="false";
13943
 
13944
			#程式停止執行
13945
			$result["error"]=$checkResult;
13946
 
13947
			#回傳結果
13948
			return $result;
13949
 
13950
			}#if end
13951
 
13952
		#過濾 $conf["formFileName"] 避免錯誤
13953
		#函式說明:
13954
		#處理字串避免網頁出錯
13955
		#回傳結果:
13956
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
13957
		#$result["function"],當前執行的函數.
13958
		#$result["content"],爲處理好的字串.
13959
		#$result["error"],錯誤訊息陣列.
13960
		#必填參數:
13961
		$conf["stringProcess::correctCharacter"]["stringIn"]=$conf["formFileName"];#爲要處理的字串
13962
		#可省略的參數:
13963
		$conf["stringProcess::correctCharacter"]["selectedCharacter"]=array("<",">","=","//","'","$","%","&","|","/*","*\/","#","\""," ");#爲被選擇要處理的字串/字元,須爲陣列值。
13964
			#若不設定則預設爲要將這些字串作替換("<",">","=","//","'","$","%","&","|","/*","*\/","#","\"")。
13965
			#特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
13966
		#$conf["stringProcess::correctCharacter"]["changeTo"]=array("","","","","","","","","","","","","");#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
13967
		$correctCharacter=stringProcess::correctCharacter($conf["stringProcess::correctCharacter"]);
13968
		unset($conf["stringProcess::correctCharacter"]);
13969
 
13970
		#如果過濾字串失敗
13971
		if($correctCharacter["status"]=="false"){
13972
 
13973
			#設置執行失敗
13974
			$result["status"]="false";
13975
 
13976
			#設置執行錯誤訊息
13977
			$result["error"]=$correctCharacter;
13978
 
13979
			#回傳結果
13980
			return $result;
13981
 
13982
			}#if end
13983
 
13984
		#置換成處理過後的 $conf["formFileName"]
13985
		$conf["formFileName"]=$correctCharacter["content"];
13986
 
13987
		#如果檔案的表單變數存在
13988
		if(isset($_FILES[$conf["formFileName"]])){
13989
 
13990
			#如果原始檔案名稱爲空的
13991
			if($_FILES[$conf["formFileName"]]["name"]==""){
13992
 
13993
				#設置錯誤識別
13994
				$result["status"]="false";
13995
 
13996
				#設置錯誤訊息
13997
				$result["error"][]="沒有接收到上傳的檔案";
13998
 
13999
				#回傳結果
14000
				return $result;
14001
 
14002
				}#if end
14003
 
14004
			}#if end
14005
 
14006
		#如果檔案的表單變數不存在
14007
		else{
14008
 
14009
			#設置錯誤識別
14010
			$result["status"]="false";
14011
 
14012
			#設置錯誤訊息
14013
			$result["error"][]="沒有接收到上傳的檔案";
14014
 
14015
			#回傳結果
14016
			return $result;
14017
 
14018
			}#else end
14019
 
14020
		#取得系統時間
14021
		#函式說明:
14022
		#回傳西元的目前時間,格式為2010年07月24日15時30分33秒
14023
		#回傳結果:
14024
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
14025
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
14026
		#$result["function"],當前執行的函式名稱.
14027
		#$result["content"],西元的目前時間.
14028
		#必填參數:
14029
		$conf["time::getFullDateAndTime"]["timeZone"]="Asia/Taipei";#時區代號,可以設定的時區列表:http://www.php.net/manual/en/timezones.php
14030
			#ex:"Asia/Taipei"
14031
		#可省略參數:
14032
		$conf["time::getFullDateAndTime"]["showSecond"]="true";#若爲"true"則會顯示秒數,預設為"true".
14033
		#參考資料:
14034
		#date函數用法=>http://php.net/manual/en/function.date.php.
14035
		$getFullDateAndTime=time::getFullDateAndTime($conf["time::getFullDateAndTime"]);
14036
		unset($conf["time::getFullDateAndTime"]);
14037
 
14038
		#如果取得取得時間失敗
14039
		if($getFullDateAndTime["status"]=="false"){
14040
 
14041
			#設置錯誤識別
14042
			$result["status"]="false";
14043
 
14044
			#設置錯誤訊息
14045
			$result["error"]=$getFullDateAndTime;
14046
 
14047
			#回傳結果
14048
			return $result;
14049
 
14050
			}#if end
14051
 
14052
		#取得格林威治時間+八小時
14053
		$timeTw=$getFullDateAndTime["content"];
14054
 
14055
		#如果$conf["uploadDirUserDefine"]有設定
14056
		if(isset($conf["uploadDirUserDefine"])){
14057
 
14058
			#則套用存放上傳檔案的目錄
14059
			$uploadDir=$conf["uploadDirUserDefine"] ;
14060
 
14061
			}#if end
14062
 
14063
		#否則存放的資料夾名稱爲臺灣的時間
14064
		else{
14065
 
14066
			$uploadDir=$timeTw;
14067
 
14068
			#建立特定資料夾
14069
			#函式說明:
14070
			#建立資料夾
14071
			#回傳結果:
14072
			#$result,true爲建立成功,false爲建立失敗
14073
			#必填參數:
14074
			$conf["fileAccess"]["createNewFolder"]["dirPositionAndName"]=$uploadDir;#新建的位置與名稱
14075
			#可省略參數:
14076
			#$conf["dirPermission"]="";新建資料夾的權限設定,預設爲0777,亦即所有人皆可以讀、寫、存取
14077
			#參考資料:
14078
			#http:#php.net/manual/en/function.mkdir.php
14079
			#範本:
14080
			# mkdir("/path/to/my/dir", 0700);
14081
			$createFolder=fileAccess::createNewFolder($conf["fileAccess"]["createNewFolder"]);
14082
			unset($conf["fileAccess"]["createNewFolder"]);
14083
 
14084
			#如果 $createFolder 等於 "false"
14085
			if($createFolder["status"]==="false"){
14086
 
14087
				#設置錯誤識別
14088
				$result["status"]="false";
14089
 
14090
				#設置錯誤訊息
14091
				$result["error"]=$createFolder;
14092
 
14093
				#回傳結果
14094
				return $result;
14095
 
14096
				}#if end
14097
 
14098
			}#else end
14099
 
14100
		#如果$conf["uploadDirUserDefine"]有設定
14101
		if(isset($conf["ServerFilenameUserDefine"])){
14102
 
14103
			#給予伺服器檔案的名稱
14104
			$ServerFilename=$conf["ServerFilenameUserDefine"];
14105
 
14106
			}#if end
14107
 
14108
		#否則檔案名稱指定為臺灣時間
14109
		else{
14110
 
14111
			$ServerFilename=$timeTw;
14112
 
14113
			}#else end
14114
 
14115
		#原始檔案名稱
14116
		$fileOrginalName=$_FILES[$conf["formFileName"]]["name"];
14117
 
14118
		#初始化儲存檔案副檔名的變數
14119
		$FileExtension="";
14120
 
14121
		#檔案的附檔名爲上傳的檔案名稱最後一個小數點後面的內容。
14122
 
14123
		#函式說明:
14124
		#將固定格式的字串分開,並回傳分開的結果。
14125
		#回傳的參數:
14126
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
14127
		#$result["error"],錯誤訊息陣列
14128
		#$result["oriStr"],要分割的原始字串內容
14129
		#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
14130
		#$result["dataCounts"],爲總共分成幾段
14131
		#必填參數:
14132
		$conf["stringProcess::spiltString"]["stringIn"]=$fileOrginalName;#要處理的字串。
14133
		$conf["stringProcess::spiltString"]["spiltSymbol"]=".";#爲以哪個符號作爲分割
14134
		#備註:
14135
		#建議新增如果透過" "分割後的內容含有""的元素,將其移除,並將後面有內容的元素補上,key也重新排序。
14136
		$stringProcessedResult=stringProcess::spiltString($conf["stringProcess::spiltString"]);
14137
		unset($conf["stringProcess::spiltString"]);
14138
 
14139
		#如果分割字串失敗
14140
		if($stringProcessedResult["status"]=="false"){
14141
 
14142
			#設置錯誤識別
14143
			$result["status"]="false";
14144
 
14145
			#設置錯誤訊息
14146
			$result["error"]=$stringProcessedResult;
14147
 
14148
			#回傳結果
14149
			return $result;
14150
 
14151
			}#if end
14152
 
14153
		#如果分割後的段數只有1段
14154
		if($stringProcessedResult["dataCounts"]<2){
14155
 
14156
			#設置警告訊息
14157
			$result["warning"][]="上傳的檔案沒有副檔名";
14158
 
14159
			#設置副檔名為"unknow"
14160
			$FileExtension=".unknow";
14161
 
14162
			}#if end
14163
 
14164
		#反之代表有副檔名
14165
		else{
14166
 
14167
			#將第一個小數點後的內容視為副檔名
14168
 
14169
			#檔案名稱分成幾段就執行其減1幾次
14170
			for($i=1;$i<$stringProcessedResult["dataCounts"];$i++){
14171
 
14172
				#串接副檔名
14173
				$FileExtension=$FileExtension.".".$stringProcessedResult["dataArray"][$i];
14174
 
14175
				}#for end
14176
 
14177
			}#else end
14178
 
14179
		#將檔案的類型傳遞到變數
14180
		$FileType = $_FILES[$conf["formFileName"]]["type"];
14181
 
14182
		/*
14183
		#由於隨着瀏覽器不同,其檔案類型的名稱也會不同,所以我們就不從檔案類型去類推其副檔名爲何。
14184
 
14185
		#取得原始檔案副檔名的陣列,目前僅適用於firefox
14186
 
14187
		#照片類別
14188
		if($FileType=="image/png"){
14189
 
14190
			$FileExtension = "png";
14191
 
14192
			}
14193
 
14194
		else if($FileType=="image/jpeg"){
14195
 
14196
			$FileExtension = "jpg";
14197
 
14198
			}
14199
 
14200
		else if($FileType=="image/gif"){
14201
 
14202
			$FileExtension = "gif";
14203
			}
14204
 
14205
		#聲音類別
14206
		else if($FileType=="audio/x-ms-wma"){
14207
 
14208
			$FileExtension = "wma";
14209
 
14210
			}
14211
 
14212
		else if($FileType=="audio/mpeg"){
14213
 
14214
			$FileExtension = "mp3";
14215
 
14216
			}
14217
 
14218
		else if($FileType=="video/ogg"){
14219
 
14220
			$FileExtension = "ogg";
14221
			}
14222
 
14223
		#影片類別
14224
		else if($FileType=="video/x-ms-wmv"){
14225
 
14226
			$FileExtension = "wmv";
14227
 
14228
			}
14229
 
14230
		else if($FileType=="video/x-msvideo"){
14231
 
14232
			$FileExtension = "avi";
14233
			}
14234
 
14235
		else if($FileType=="video/ogg"){
14236
 
14237
			$FileExtension = "ogv";
14238
 
14239
			}
14240
 
14241
		else if($FileType=="video/webm"){
14242
 
14243
			$FileExtension = "webm";
14244
 
14245
			}
14246
 
14247
		#純文字類別
14248
		else if($FileType=="text/plain"){
14249
 
14250
			$FileExtension = "txt";
14251
			}
14252
 
14253
		#壓縮檔類別
14254
		else if($FileType=="application/x-tar"){
14255
 
14256
			$FileExtension = "tar";
14257
 
14258
			}
14259
 
14260
		else if($FileType=="application/x-7z-compressed"){
14261
 
14262
			$FileExtension = "7z";
14263
 
14264
			}
14265
 
14266
		else if($FileType=="application/zip"){
14267
 
14268
			$FileExtension = "zip";
14269
 
14270
			}
14271
 
14272
		#2元碼檔案
14273
		else if($FileType=="application/octet-stream"){
14274
 
14275
			$FileExtension = "exe";
14276
 
14277
			}
14278
 
14279
		#如果不是以上的類別
14280
		else{
14281
 
14282
			#則賦予 "unknow" 這個副檔名
14283
			$FileExtension = "unknow";
14284
 
14285
			}
14286
 
14287
		*/
14288
 
14289
		#將原始檔案的大小單位換算成KB
14290
		$storeFileSizeKb = (($_FILES[$conf["formFileName"]]["size"])/1024);
14291
 
14292
		#將原始檔案的大小(KB)小數點全部捨棄,
14293
		$storeFileSizeKb = round($storeFileSizeKb,0);
14294
 
14295
		#將上傳檔案的錯誤代碼傳遞到變數 $file_error
14296
		$FileError =  $_FILES[$conf["formFileName"]]["error"];
14297
 
14298
		#如果上傳的檔案是空的
14299
		if(!isset($_FILES[$conf["formFileName"]]['tmp_name'])){
14300
 
14301
			#設置錯誤識別
14302
			$result["status"]="false";
14303
 
14304
			#設置錯誤訊息
14305
			$result["error"][]="找不到暫存的已上傳檔案";
14306
 
14307
			#回傳結果
14308
			return $result;
14309
 
14310
			}#if end
14311
 
14312
		#如果 $NoFileExtension 有設定
14313
		if(isset($conf["NoFileExtension"])){
14314
 
14315
			#如果 $NoFileExtension 等於 true,
14316
			if($conf["NoFileExtension"]=="true"){
14317
 
14318
				#則副檔名爲""。
14319
				$FileExtension="";
14320
 
14321
				}#if end
14322
 
14323
			}#if end
14324
 
14325
		#檢查目標資料夾是否存在
14326
		#函式說明:檢查多個檔案與資料夾是否存在.
14327
		#回傳的結果:
14328
		#$result["varName"][$i],爲第$i個資料夾或檔案的名稱。
14329
		#$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
14330
		#必填參數:
14331
		$conf["fileAccess"]["checkMutiFileExist"]["fileArray"]=array($uploadDir);#要檢查書否存在的檔案有哪些,須爲一維陣列數值。
14332
		$conf["fileAccess"]["checkMutiFileExist"]["fileArgu"]=$conf["fileArgu"];
14333
		#參考資料來源:
14334
		#http://php.net/manual/en/function.file-exists.php
14335
		#http://php.net/manual/en/control-structures.foreach.php
14336
		$checkResult=fileAccess::checkMultiFileExist($conf["fileAccess"]["checkMutiFileExist"]);
14337
		unset($conf["fileAccess"]["checkMutiFileExist"]);
14338
 
14339
		#如果檢查失敗
14340
		if($checkResult["status"]=="false"){
14341
 
14342
			#設置錯誤識別
14343
			$result["status"]="false";
14344
 
14345
			#設置錯誤訊息
14346
			$result["error"]=$checkResult;
14347
 
14348
			#回傳結果
14349
			return $result;
14350
 
14351
			}#if end
14352
 
14353
		#如果 目標資料夾 不存在
14354
		if($checkResult["varExist"][0]=="false"){
14355
 
14356
			#建立特定資料夾
14357
			#函式說明:
14358
			#建立資料夾
14359
			#回傳結果:
14360
			#$result,true爲建立成功,false爲建立失敗
14361
			#必填參數:
14362
			$conf["fileAccess"]["createNewFolder"]["dirPositionAndName"]=$uploadDir;#新建的位置與名稱
14363
			#可省略參數:
14364
			#$conf["dirPermission"]="";新建資料夾的權限設定,預設爲0777,亦即所有人皆可以讀、寫、存取
14365
			#參考資料:
14366
			#http:#php.net/manual/en/function.mkdir.php
14367
			#範本:
14368
			# mkdir("/path/to/my/dir", 0700);
14369
			$createFolder=fileAccess::createNewFolder($conf["fileAccess"]["createNewFolder"]);
14370
			unset($conf["fileAccess"]["createNewFolder"]);
14371
 
14372
			#如果 $createFolder 等於 "false"
14373
			if($createFolder=="false"){
14374
 
14375
				#設置錯誤識別
14376
				$result["status"]="false";
14377
 
14378
				#設置錯誤訊息
14379
				$result["error"][]="建立資料夾失敗";
14380
 
14381
				#回傳結果
14382
				return $result;
14383
 
14384
				}#if end
14385
 
14386
			}#if end
14387
 
14388
		#如果要移除同名的檔案
14389
		if($conf["eraseOldFile"]=="true"){
14390
 
14391
			#檢查指定的上傳檔案是否已經存在
14392
			#如果有同名的檔案存在
14393
			#函式說明:檢查多個檔案與資料夾是否存在.
14394
			#回傳的結果:
14395
			#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
14396
			#$result["error"],錯誤訊息陣列.
14397
			#$resutl["function"],當前執行的函式名稱.
14398
			#$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
14399
			#$result["varName"][$i],爲第$i個資料夾或檔案的名稱。
14400
			#$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
14401
			#必填參數:
14402
			$conf["fileAccess::checkMultiFileExist"]["fileArray"]=array($uploadDir."/".$ServerFilename.$FileExtension);#要檢查書否存在的檔案有哪些,須爲一維陣列數值。
14403
			$conf["fileAccess::checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];
14404
			#參考資料來源:
14405
			#http://php.net/manual/en/function.file-exists.php
14406
			#http://php.net/manual/en/control-structures.foreach.php
14407
			$checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);
14408
			unset($conf["fileAccess::checkMultiFileExist"]);
14409
 
14410
			#如果檢查失敗
14411
			if($checkMultiFileExist["status"]=="false"){
14412
 
14413
				#設置錯誤識別
14414
				$result["status"]="false";
14415
 
14416
				#設置錯誤訊息
14417
				$result["error"]=$checkMultiFileExist;
14418
 
14419
				#回傳結果
14420
				return $result;
14421
 
14422
				}#if end
14423
 
14424
			#如果指定的上傳檔案名稱已經存在
14425
			if($checkMultiFileExist["varExist"][0]=="true"){
14426
 
14427
				#移除舊的同名檔案
14428
				#函式說明:
14429
				#移除檔案
14430
				#回傳結果:
14431
				#$result["status"],"true"代表移除成功,"false"代表移除失敗.
14432
				#$result["error"],錯誤訊息陣列
14433
				#$result["warning"],警告訊息陣列
14434
				#$result["function"],當前執行的函數名稱
14435
				#必填參數:
14436
				$conf["form::delFile"]["fileAddress"]=$uploadDir."/".$ServerFilename.$FileExtension;#要移除檔案的位置
14437
				#可省略參數:
14438
				#$conf["commentsArray"],字串陣列,提示的文字描述,$conf["commentsArray"][$i]代表第($+1)行的描述.
14439
				#$conf["commentsArray"]=array("");
14440
				$delFile=fileAccess::delFile($conf["form::delFile"]);
14441
				unset($conf["form::delFile"]);
14442
 
14443
				#如果移除檔案失敗
14444
				if($delFile["status"]=="false"){
14445
 
14446
					#設置錯誤識別
14447
					$result["status"]="false";
14448
 
14449
					#設置錯誤訊息
14450
					$result["error"]=$delFile;
14451
 
14452
					#回傳結果
14453
					return $result;
14454
 
14455
					}#if end
14456
 
14457
				}#if end
14458
 
14459
			}#if end
14460
 
14461
		#反之沒有要移除同名的既有檔案
14462
		else{
14463
 
14464
			#檢查是否有同名的檔案
14465
			#檢查加上編號的上傳檔案名稱是否已經存在
14466
			#檢查指定的上傳檔案是否已經存在
14467
			#如果有同名的檔案存在
14468
			#函式說明:檢查多個檔案與資料夾是否存在.
14469
			#回傳的結果:
14470
			#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
14471
			#$result["error"],錯誤訊息陣列.
14472
			#$resutl["function"],當前執行的函式名稱.
14473
			#$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
14474
			#$result["varName"][$i],爲第$i個資料夾或檔案的名稱。
14475
			#$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
14476
			#必填參數:
14477
			$conf["fileAccess::checkMultiFileExist"]["fileArray"]=array($uploadDir."/".$ServerFilename.$FileExtension);#要檢查書否存在的檔案有哪些,須爲一維陣列數值。
14478
			$conf["fileAccess::checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];
14479
			#參考資料來源:
14480
			#http://php.net/manual/en/function.file-exists.php
14481
			#http://php.net/manual/en/control-structures.foreach.php
14482
			$checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);
14483
			unset($conf["fileAccess::checkMultiFileExist"]);
14484
 
14485
			#如果檢查失敗
14486
			if($checkMultiFileExist["status"]=="false"){
14487
 
14488
				#設置錯誤識別
14489
				$result["status"]="false";
14490
 
14491
				#設置錯誤訊息
14492
				$result["error"]=$checkMultiFileExist;
14493
 
14494
				#回傳結果
14495
				return $result;
14496
 
14497
				}#if end
14498
 
14499
			#如果指定的上傳檔案名稱存在
14500
			if($checkMultiFileExist["varExist"][0]=="true"){
14501
 
14502
				#無窮迴圈
14503
				for($i=1;$i>0;$i++){
14504
 
14505
					#將上傳檔案的名稱加上編號
14506
					$ServerFilename=$ServerFilename."(".$i.")";
14507
 
14508
					#檢查加上編號的上傳檔案名稱是否已經存在
14509
					#檢查指定的上傳檔案是否已經存在
14510
					#如果有同名的檔案存在
14511
					#函式說明:檢查多個檔案與資料夾是否存在.
14512
					#回傳的結果:
14513
					#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
14514
					#$result["error"],錯誤訊息陣列.
14515
					#$resutl["function"],當前執行的函式名稱.
14516
					#$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
14517
					#$result["varName"][$i],爲第$i個資料夾或檔案的名稱。
14518
					#$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
14519
					#必填參數:
14520
					$conf["fileAccess::checkMultiFileExist"]["fileArray"]=array($uploadDir."/".$ServerFilename.$FileExtension);#要檢查書否存在的檔案有哪些,須爲一維陣列數值。
14521
					$conf["fileAccess::checkMultiFileExist"]["fileArgu"]=$conf["fileArgu"];
14522
					#參考資料來源:
14523
					#http://php.net/manual/en/function.file-exists.php
14524
					#http://php.net/manual/en/control-structures.foreach.php
14525
					$checkMultiFileExist=fileAccess::checkMultiFileExist($conf["fileAccess::checkMultiFileExist"]);
14526
					unset($conf["fileAccess::checkMultiFileExist"]);
14527
 
14528
					#如果檢查失敗
14529
					if($checkMultiFileExist["status"]=="false"){
14530
 
14531
						#設置錯誤識別
14532
						$result["status"]="false";
14533
 
14534
						#設置錯誤訊息
14535
						$result["error"]=$checkMultiFileExist;
14536
 
14537
						#回傳結果
14538
						return $result;
14539
 
14540
						}#if end
14541
 
14542
					#如果指定的上傳檔案名稱不存在
14543
					if($checkMultiFileExist["varExist"][0]=="false"){
14544
 
14545
						#跳出迴圈
14546
						break;
14547
 
14548
						}#if end
14549
 
14550
					}#for end
14551
 
14552
				}#if end
14553
 
14554
			}#else end
14555
 
14556
		#移動暫存檔案到指定的位置
14557
		if(move_uploaded_file($_FILES[$conf["formFileName"]]["tmp_name"],$uploadDir."/".$ServerFilename.$FileExtension)){
14558
 
14559
			#函式說明:
14560
			#呼叫shell執行系統命令,並取得回傳的內容.
14561
			#回傳結果:
14562
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
14563
			#$result["error"],錯誤訊息陣列.
14564
			#$result["function"],當前執行的函數名稱.
14565
			#$result["argu"],使用的參數.
14566
			#$result["cmd"],執行的指令內容.
14567
			#$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.
14568
			#$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.
14569
			#$result["tmpFileOutput"],儲存輸出的暫存檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.
14570
			#$result["running"],是否還在執行.
14571
			#$result["pid"],pid.
14572
			#$result["statusCode"],執行結束後的代碼.
14573
			#$result["escape"],陣列,儲存出新排序過且已經escape過的指令(key為"cmd")與參數(key為"argu").
14574
			#必填參數:
14575
			#$conf["command"],字串,要執行的指令.
14576
			$conf["external::callShell"]["command"]="chmod";
14577
			#$conf["fileArgu"],字串,變數__FILE__的內容.
14578
			$conf["external::callShell"]["fileArgu"]=__FILE__;
14579
			#可省略參數:
14580
			#$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
14581
			$conf["external::callShell"]["argu"]=array("0770",$uploadDir);
14582
			#$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
14583
			#$conf["arguIsAddr"]=array();
14584
			#$conf["pre"],陣列,要在本指令前執行的每個指令與參數.
14585
			#$conf["pre"][$i]["cmd"],字串,要在本指令前執行的第$i+1個指令.
14586
			#$conf["pre"][$i]["param"],陣列字串,要在本指令前執行的第$i+1個指令的參數.
14587
			#$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
14588
			#$conf["enablePrintDescription"]="true";
14589
			#$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容加上使用的$conf["argu"]參數.
14590
			#$conf["printDescription"]="";
14591
			#$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".如果參數為"< 、<< 、> 、>> 、| 、2>&1"之一則不會過濾.
14592
			$conf["external::callShell"]["escapeshellarg"]="true";
14593
			#$conf["thereIsShellVar"],陣列字串,指令搭配的參數"argu",若含有「\'」,則取代為「"」.每個argu參數都要有對應的元素."true"代表要置換.
14594
			#$conf["thereIsShellVar"]=array();
14595
			#$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.
14596
			#$conf["username"]="";
14597
			#$conf["password"],字串,root的使用者密碼,預設不使用密碼,該參數不適用於apache環境.
14598
			#$conf["password"]="";
14599
			#$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".
14600
			#$conf["useScript"]="";
14601
			#$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".
14602
			#$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";
14603
			#$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.
14604
			#$conf["inBackGround"]="";
14605
			#$conf["getErr"],字串,"true"代表將錯誤輸出變成標準輸出,反之"false"為不變動.
14606
			#$conf["getErr"]="false";
14607
			#$conf["doNotRun"],字串,"true"代表不執行指令,預設為"false"會執行指令.
14608
			#$conf["doNotRun"]="false";
14609
			#參考資料:
14610
			#exec=>http://php.net/manual/en/function.exec.php
14611
			#escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php
14612
			#escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php
14613
			#備註:
14614
			#不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.
14615
			#若使用的 command、argu 參數,含有 ~ 則會被視為字串,若有需要其於 shell 中代表的家目錄位置,可用 fileAccess::tildeToPath 來進行轉換.
14616
			$changePermission=external::callShell($conf["external::callShell"]);
14617
			unset($conf["external::callShell"]);
14618
 
14619
			#如果 $changePermission["status"] 等於 "false"
14620
			if($changePermission["status"]=="false"){
14621
 
14622
				#設置錯誤識別
14623
				$result["status"]="false";
14624
 
14625
				#設置錯誤訊息
14626
				$result["error"]=$changePermission;
14627
 
14628
				#回傳結果
14629
				return $result;
14630
 
14631
				}#if end
14632
 
14633
			#函式說明:
14634
			#呼叫shell執行系統命令,並取得回傳的內容.
14635
			#回傳結果:
14636
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
14637
			#$result["error"],錯誤訊息陣列.
14638
			#$result["function"],當前執行的函數名稱.
14639
			#$result["argu"],使用的參數.
14640
			#$result["cmd"],執行的指令內容.
14641
			#$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.
14642
			#$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.
14643
			#$result["tmpFileOutput"],儲存輸出的暫存檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.
14644
			#$result["running"],是否還在執行.
14645
			#$result["pid"],pid.
14646
			#$result["statusCode"],執行結束後的代碼.
14647
			#$result["escape"],陣列,儲存出新排序過且已經escape過的指令(key為"cmd")與參數(key為"argu").
14648
			#必填參數:
14649
			#$conf["command"],字串,要執行的指令.
14650
			$conf["external"]["callShell"]["command"]="chmod";
14651
			#$conf["fileArgu"],字串,變數__FILE__的內容.
14652
			$conf["external"]["callShell"]["fileArgu"]=__FILE__;
14653
			#可省略參數:
14654
			#$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.
14655
			$conf["external"]["callShell"]["argu"]=array("0777",$uploadDir."/".$ServerFilename.$FileExtension);
14656
			#$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").
14657
			#$conf["arguIsAddr"]=array();
14658
			#$conf["pre"],陣列,要在本指令前執行的每個指令與參數.
14659
			#$conf["pre"][$i]["cmd"],字串,要在本指令前執行的第$i+1個指令.
14660
			#$conf["pre"][$i]["param"],陣列字串,要在本指令前執行的第$i+1個指令的參數.
14661
			#$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".
14662
			#$conf["enablePrintDescription"]="true";
14663
			#$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容加上使用的$conf["argu"]參數.
14664
			#$conf["printDescription"]="";
14665
			#$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".如果參數為"< 、<< 、> 、>> 、| 、2>&1"之一則不會過濾.
14666
			$conf["external"]["callShell"]["escapeshellarg"]="true";
14667
			#$conf["thereIsShellVar"],陣列字串,指令搭配的參數"argu",若含有「\'」,則取代為「"」.每個argu參數都要有對應的元素."true"代表要置換.
14668
			#$conf["thereIsShellVar"]=array();
14669
			#$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.
14670
			#$conf["username"]="";
14671
			#$conf["password"],字串,root的使用者密碼,預設不使用密碼,該參數不適用於apache環境.
14672
			#$conf["password"]="";
14673
			#$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".
14674
			#$conf["useScript"]="";
14675
			#$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".
14676
			#$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";
14677
			#$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.
14678
			#$conf["inBackGround"]="";
14679
			#$conf["getErr"],字串,"true"代表將錯誤輸出變成標準輸出,反之"false"為不變動.
14680
			#$conf["getErr"]="false";
14681
			#$conf["doNotRun"],字串,"true"代表不執行指令,預設為"false"會執行指令.
14682
			#$conf["doNotRun"]="false";
14683
			#參考資料:
14684
			#exec=>http://php.net/manual/en/function.exec.php
14685
			#escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php
14686
			#escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php
14687
			#備註:
14688
			#不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.
14689
			#若使用的 command、argu 參數,含有 ~ 則會被視為字串,若有需要其於 shell 中代表的家目錄位置,可用 fileAccess::tildeToPath 來進行轉換.
14690
			$changePermission=external::callShell($conf["external"]["callShell"]);
14691
			unset($conf["external"]["callShell"]);
226 liveuser 14692
 
3 liveuser 14693
			#如果 $changePermission["status"] 等於 "false"
14694
			if($changePermission["status"]=="false"){
14695
 
14696
				#設置錯誤識別
14697
				$result["status"]="false";
14698
 
14699
				#設置錯誤訊息
14700
				$result["error"]=$changePermission;
14701
 
14702
				#回傳結果
14703
				return $result;
14704
 
14705
				}#if end
14706
 
14707
			}#if end
14708
 
14709
		#反之檔案移動失敗
14710
		else{
14711
 
14712
			#設置錯誤識別
14713
			$result["status"]="false";
14714
 
14715
			#設置移動檔案失敗的訊息
14716
			$result["error"][]="移動檔案失敗";
14717
 
14718
			#回傳錯誤訊息
14719
			return $result;
14720
 
14721
			}#else end
14722
 
14723
		#將指定的檔案名稱與偵測到的副檔名合併在一塊
14724
		$storeFileName=$ServerFilename.$FileExtension;
14725
 
14726
		#如果有要將新檔案的相對位置用修改既有資料的方式寫入到資料表裏面
14727
		#如果 $dbProcess 等於 "true"
14728
		if($conf["dbProcess"]=="true"){
14729
 
14730
			#將新檔案的相對位置用修改既有資料的方式寫入到資料表裏面
14731
			#函式說明:
14732
			#更新資料表裏面的資料
14733
			#回傳的結果:
14734
			#$result["status"],爲查詢是否成功,若爲0則成功,若爲1則表示失敗了
14735
			#$result["error"],錯誤訊息
14736
			#$result["sql"],執行的sql語法.
14737
			#必填參數:
14738
			$conf["db"]["updateDataTableContent"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置
14739
			$conf["db"]["updateDataTableContent"]["dbAccount"]=$conf["$dbAccount"];#爲用於連入mysql-Server時要使用的帳號
14740
			$conf["db"]["updateDataTableContent"]["selectedDataBaseName"]=$conf["dbName"];#要選取的資料庫名稱
14741
			$conf["db"]["updateDataTableContent"]["tableName"]=$conf["updatingDataTableName"];#要修改的資料表名稱
14742
			$conf["db"]["updateDataTableContent"]["whereColumn"]=$conf["updatingConditionDataTableColumnName"];#爲用來判斷要更新的哪筆資料的欄位名稱,須爲陣列值
14743
			$conf["db"]["updateDataTableContent"]["whereValue"]=$conf["updatingConditionDataTableColumnValue"];#為用來判斷是要更新哪筆資料的欄位對應數值,須爲陣列值
14744
			$conf["db"]["updateDataTableContent"]["tableColumnName"]=$conf["updatingTargetDataTableColumnName"];#資料表項目的名稱陣列
14745
			$conf["db"]["updateDataTableContent"]["updateDataValue"]=$conf["updatingTargetDataTableColumnValue"];#要更改成對應資料表項目的內容,須為陣列值
14746
 
14747
			#如果 $conf["db"]["updateDataTableContent"]["updateDataValue"] 裏面其中一個元素爲 "filePosition" ,則會替換成檔案的新位置。
14748
			for($i=0;$i<count($conf["updatingTargetDataTableColumnValue"]);$i++){
14749
 
14750
				#如果其中一項元素內容爲 "filePosition"
14751
				if($conf["db"]["updateDataTableContent"]["updateDataValue"][$i]=="filePosition"){
14752
 
14753
					#將其更改爲新檔案的位置
14754
					$conf["db"]["updateDataTableContent"]["updateDataValue"][$i]=$uploadDir."/".$storeFileName;
14755
 
14756
					}#if end
14757
 
14758
				}#for end
14759
 
14760
			#可省略參數:
14761
 
14762
			#如果 $conf["dbPassword"] 有設置
14763
			if(isset($conf["dbPassword"])){
14764
 
14765
				$conf["db"]["updateDataTableContent"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼
14766
 
14767
				}#if end
14768
 
14769
			$db["updateDataTableContent"]=db::updateDataTableContent($conf["db"]["updateDataTableContent"]);
14770
			unset($conf["db"]["updateDataTableContent"]);
14771
 
14772
			#如果 $db["updateDataTableContent"]["status"] 等於 "false"
14773
			if($db["updateDataTableContent"]["status"]=="false"){
14774
 
14775
				#設置錯誤識別
14776
				$result["status"]="false";
14777
 
14778
				#設置錯誤訊息
14779
				$result["error"]=$db["updateDataTableContent"];
14780
 
14781
				#回傳結果
14782
				return $result;
14783
 
14784
				}#if end
14785
 
14786
			#取得執行的sql語法
14787
			$result["sql"]=$db["updateDataTableContent"]["sql"];
14788
 
14789
			}#if end
14790
 
14791
		#將各項結果存進 $result 陣列變數裏面
14792
		$result["ServerFileName"]=$storeFileName;#檔案名稱
14793
		$result["ServerFileType"]=$FileType;#檔案類型
14794
		$result["ServerFileSize"]=$storeFileSizeKb;#檔案大小
14795
		$result["fileRelativePosition"]=$uploadDir."/".$storeFileName;#檔案的相對位置
14796
		$result["error"]["uploadErrorCode"]=$FileError;#上傳的錯誤訊息
14797
 
14798
		#根據錯誤編號
14799
		switch($result["error"]["uploadErrorCode"]){
14800
 
14801
			#如果編號等於0
14802
			case 0:
14803
 
14804
				#代表沒有錯誤
14805
 
14806
				#卸除錯誤識別編號
14807
				unset($result["error"]);
14808
 
14809
				#設置錯誤識別
14810
				$result["status"]="true";
14811
 
14812
				#回傳結果
14813
				return $result;
14814
 
14815
				#跳出switch
14816
				break;
14817
 
14818
			#如果編號等於1
14819
			case 1:
14820
 
14821
				#設置錯誤訊息
14822
				$result["error"][]="檔案大小超出 php.ini 設定檔中的 upload_max_filesize";
14823
 
14824
				#設置錯誤識別
14825
				$result["status"]="false";
14826
 
14827
				#回傳結果
14828
				return $result;
14829
 
14830
				#跳出switch
14831
				break;
14832
 
14833
			#如果編號等於2
14834
			case 2:
14835
 
14836
				#設置錯誤訊息
14837
				$result["error"][]="檔案大小超出網頁所限定的 MAX_FILE_SIZE 大小";
14838
 
14839
				#設置錯誤識別
14840
				$result["status"]="false";
14841
 
14842
				#回傳結果
14843
				return $result;
14844
 
14845
				#跳出switch
14846
				break;
14847
 
14848
			#如果編號等於3
14849
			case 3:
14850
 
14851
				#設置錯誤訊息
14852
				$result["error"][]="檔案僅上傳成功部份";
14853
 
14854
				#設置錯誤識別
14855
				$result["status"]="false";
14856
 
14857
				#回傳結果
14858
				return $result;
14859
 
14860
				#跳出switch
14861
				break;
14862
 
14863
			#如果編號等於4
14864
			case 4:
14865
 
14866
				#設置錯誤訊息
14867
				$result["error"][]="沒有上傳的檔案";
14868
 
14869
				#設置錯誤識別
14870
				$result["status"]="false";
14871
 
14872
				#回傳結果
14873
				return $result;
14874
 
14875
				#跳出switch
14876
				break;
14877
 
14878
			#如果編號等於6
14879
			case 6:
14880
 
14881
				#設置錯誤訊息
14882
				$result["error"][]="暫存資料夾遺失";
14883
 
14884
				#設置錯誤識別
14885
				$result["status"]="false";
14886
 
14887
				#回傳結果
14888
				return $result;
14889
 
14890
				#跳出switch
14891
				break;
14892
 
14893
			#如果編號等於7
14894
			case 7:
14895
 
14896
				#設置錯誤訊息
14897
				$result["error"][]="檔案寫入硬碟失敗";
14898
 
14899
				#設置錯誤識別
14900
				$result["status"]="false";
14901
 
14902
				#回傳結果
14903
				return $result;
14904
 
14905
				#跳出switch
14906
				break;
14907
 
14908
			#如果編號等於8
14909
			case 8:
14910
 
14911
				#設置錯誤訊息
14912
				$result["error"][]="某些擴充套件導致檔案上傳功能不能使用,可用phpinfo()來檢查";
14913
 
14914
				#設置錯誤識別
14915
				$result["status"]="false";
14916
 
14917
				#回傳結果
14918
				return $result;
14919
 
14920
				#跳出switch
14921
				break;
14922
 
14923
			}#switch end
14924
 
14925
		#執行到這邊代表執行正常
14926
 
14927
		#將其處理結果設為 "true"
14928
		$result["status"]="true";
14929
 
14930
		#回傳結果
14931
		return $result;
14932
 
14933
		}#function processUploadedFile end
14934
 
14935
	/*
14936
	#函式說明:
14937
	#處理多個上傳到暫存目錄的檔案,可以移動到指定的位置,並指定檔案的名稱。並且可以指定刪除舊有的檔案,然後將新檔案的相對位置寫入到資料庫裏面。
14938
	#回傳的變數:
14939
	#$result["ServerFileName"][$i]#第$i-1個檔案的名稱.
14940
	#$result["ServerFileType"][$i]#第$i-1個檔案的類型.
14941
	#$result["ServerFileSize"][$i]#第$i-1個檔案的大小.
14942
	#$result["status"]#整體上傳有無成功,"true"代表完整成功,"false"代表有過程有錯誤.
14943
	#$result["error"],錯誤訊息陣列.
14944
	#$result["fileRelativePosition"][$i]#第$i-1個檔案的相對位置,包含檔案名稱與附檔名。
14945
	#必填參數:
14946
	#$conf["formFileName"],為上傳檔案時表單傳送時的名稱陣列.
14947
	$conf["formFileName"]=array();
14948
	#可省略參數:
14949
	#$conf["uploadDirUserDefine"],字串陣列,為存放上傳檔案的目錄,如果沒設定則會自行建立依照系統時間的年月日十分秒來替資料夾命名,並將上傳的檔案存在裏面。
14950
	#$conf["uploadDirUserDefine"]=array("");
14951
	#$conf["ServerFilenameUserDefine"],字串陣列,為存放在伺服器上的檔案名稱,如果沒設定則依照台灣時間的年月日時分秒命名
14952
	#$conf["ServerFilenameUserDefine"]=array("");
14953
	#$conf["NoFileExtension"],字串陣列,若為 "true" 則表 指定了檔案名稱後,不用再加上檔案型的副檔名,預設皆為為"false".
14954
	#$conf["NoFileExtension"]=array("true");
14955
	#$conf["limitPage"],字串陣列,限制只能從哪些網頁檔案過來。
14956
	#$conf["limitPage"]=array("");
14957
	#$conf["taskName"],字串,爲該上傳作業的名稱,若沒設定,則預設爲"上傳作業"。
14958
	#$conf["taskName"]="";
14959
	#$conf["eraseOldFile"],字串陣列,如果為"true"的話會移除同名的舊檔案,其值爲檔案的相對位置,預設為"false",不移除同名的檔案,並透過編號保留新的檔案.
14960
	#$conf["eraseOldFile"]=array("");
14961
	#$conf["dbProcess"],字串,如果爲"true",則會進行資料表資料更新的動作,亦即要設定 $conf["updatingMysqlServerAddress"] $conf["updatingMysqlAccount"] $conf["updatingDataBaseName"] $conf["updatingDataTableName"] $conf["updatingConditionDataTableColumnName"] $conf["updatingConditionDataTableColumnValue"] $conf["updatingTargetDataTableColumnName"] $conf["updatingTargetDataTableColumnValue"] 的內容,預設為"false".
14962
	#$conf["dbProcess"]="true";
14963
	#$conf["updatingMysqlServerAddress"],字串,資料庫位於網路上的哪個位置.
14964
	#$conf["updatingMysqlServerAddress"]=$dbAddress;
14965
	#$conf["updatingMysqlAccount"],字串,連線時要使用的帳號,省略時代表不用密碼進行連線.
14966
	#$conf["updatingMysqlAccount"]=$dbAccount;
14967
	#$conf["updatingMysqlPassword"],字串,連線時要使用的密碼.
14968
	#$conf["updatingMysqlPassword"]=$dbPassword;
14969
	#$conf["updatingDataBaseName"],字串,要更新的目標資料所屬資料庫名稱.
14970
	#$conf["updatingDataBaseName"]=$dbName;
14971
	#$conf["updatingDataTableName"],字串,要更新的目標資料位於哪個資料表.
14972
	#$conf["updatingDataTableName"]="";
14973
	#$conf["updatingConditionDataTableColumnName"],字串陣列,要用哪些欄位來識別要更新哪一筆資料,預設為array("id").
14974
	#$conf["updatingConditionDataTableColumnName"]=array("id");
14975
	#$conf["updatingConditionDataTableColumnValue"],字串陣列,該條件欄位內容的數值要爲多少,才是我們要修改的那筆資料。
14976
	#$conf["updatingConditionDataTableColumnValue"]=array("");
14977
	#$conf["updatingTargetDataTableColumnName"],字串陣列,要更新的資料欄位有?
14978
	#$conf["updatingTargetDataTableColumnName"]=array("");
14979
	#$conf["updatingTargetDataTableColumnValue"],字串陣列,目標資料欄位要改成什麼樣的數值,如果其元素含有"filePosition",則會替換成新檔案的相對位置
14980
	#$conf["updatingTargetDataTableColumnValue"]=array("");
14981
	#參考資料:
14982
	#file_exist()的用法
14983
	#http://php.net/manual/en/function.file-exists.php
14984
	#備註:
14985
	#無.
14986
	*/
14987
	public static function processMultiUploadedFile($conf){
14988
 
14989
		#初始化要回傳的內容
14990
		$result=array();
14991
 
14992
		#設置當前執行的函數
14993
		$result["function"]=__FUNCTION__;
14994
 
14995
		#如果 $conf 不為陣列
14996
		if(gettype($conf)!="array"){
14997
 
14998
			#設置執行失敗
14999
			$result["status"]="false";
15000
 
15001
			#設置執行錯誤訊息
15002
			$result["error"][]="\$conf變數須為陣列形態";
15003
 
15004
			#如果傳入的參數為 null
15005
			if($conf==null){
15006
 
15007
				#設置執行錯誤訊息
15008
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
15009
 
15010
				}#if end
15011
 
15012
			#回傳結果
15013
			return $result;
15014
 
15015
			}#if end
15016
 
15017
		#檢查參數
15018
		#函式說明:
15019
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
15020
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
15021
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
15022
		#$result["function"],當前執行的函式名稱.
15023
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
15024
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
15025
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
15026
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
15027
		#必填參數:
15028
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
15029
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
15030
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
15031
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("formFileName");
15032
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
15033
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("array");
15034
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
15035
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
15036
		#可省略參數:
15037
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
15038
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
15039
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
15040
		$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("uploadDirUserDefine","ServerFilenameUserDefine","NoFileExtension","limitPage","taskName","eraseOldFile","dbProcess","updatingMysqlServerAddress","updatingMysqlAccount","updatingMysqlPassword","updatingDataBaseName","updatingDataTableName","updatingConditionDataTableColumnName","updatingConditionDataTableColumnValue","updatingTargetDataTableColumnName","updatingTargetDataTableColumnValue");
15041
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
15042
		$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("array","array","array","array","string","array","array","string","string","string","string","string","array","array","array","array");
15043
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
15044
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array(null,null,null,null,"上傳作業",null,"false",null,null,null,null,null,array("id"),null,null,null);
15045
		#$conf["variableCheck.checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
15046
		$conf["variableCheck.checkArguments"]["arrayCountEqualCheck"][]=array("uploadDirUserDefine","ServerFilenameUserDefine","NoFileExtension","eraseOldFile");
15047
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
15048
		unset($conf["variableCheck.checkArguments"]);
15049
 
15050
		#如果檢查失敗
15051
		if($checkResult["status"]=="false"){
15052
 
15053
			#設置執行不正常
15054
			$result["status"]="false";
15055
 
15056
			#設置錯誤訊息
15057
			$result["error"]=$checkResult;
15058
 
15059
			#回傳結果
15060
			return $result;
15061
 
15062
			}#if end
15063
 
15064
		#如果檢查不通過
15065
		if($checkResult["passed"]=="false"){
15066
 
15067
			#設置執行不正常
15068
			$result["status"]="false";
15069
 
15070
			#設置錯誤訊息
15071
			$result["error"]=$checkResult;
15072
 
15073
			#回傳結果
15074
			return $result;
15075
 
15076
			}#if end
15077
 
15078
		#如果 count($conf["formFileName"]) 為 0
15079
		if(count($conf["formFileName"])==0){
15080
 
15081
			#設置執行失敗
15082
			$result["status"]="false";
15083
 
15084
			#設置執行錯誤
15085
			$result["error"][]="陣列變數 \"formFileName\" 裡面必須要有元素";
15086
 
15087
			#回傳結果
15088
			return $result;
15089
 
15090
			}#if end
15091
 
15092
		#有幾個要接收的檔案就執行幾次
15093
		for($i=0;$i<count($conf["formFileName"]);$i++){
15094
 
15095
			#如果 $conf["formFileName"][$i] 不存在
15096
			if(!isset($conf["formFileName"][$i])){
15097
 
15098
				#設置執行不正常
15099
				$result["status"]="false";
15100
 
15101
				#設置錯誤訊息
15102
				$result["error"][]="表單檔案變數名稱有缺";
15103
 
15104
				#回傳結果
15105
				return $result;
15106
 
15107
				}#if end
15108
 
15109
			#函式說明:
15110
			#處理上傳到暫存目錄的檔案,可以移動到指定的位置,並指定檔案的名稱。並且可以指定刪除舊有的檔案,然後將新檔案的相對位置寫入到資料庫裏面。
15111
			#回傳的變數:
15112
			#$result["status"],整體上傳有無成功。"true"代表完整成功 "false"代表有過程有錯誤
15113
			#$result["error"],錯誤訊息陣列,$result["error"][0] 為"沒有接收到上傳的檔案",則代表沒有上傳檔案.
15114
			#$result["warning"],警告訊息陣列
15115
			#$result["ServerFileName"],檔案名稱
15116
			#$result["ServerFileType"],檔案類型
15117
			#$result["ServerFileSize"],檔案大小
15118
			#$result["fileRelativePosition"],檔案的相對位置,包含檔案名稱與附檔名。
15119
			#必填參數:
15120
			#$conf["form::processUploadedFile"]["formFileName"],字串,為上傳檔案時表單傳送時的名稱
15121
			$conf["form::processUploadedFile"]["formFileName"]=$conf["formFileName"][$i];
15122
			#可省略參數:
15123
 
15124
			#如果 $conf["uploadDirUserDefine"] 存在
15125
			if(isset($conf["uploadDirUserDefine"])){
15126
 
15127
				#如果 $conf["uploadDirUserDefine"][$i] 有設置
15128
				if(isset($conf["uploadDirUserDefine"][$i])){
15129
 
15130
					#$conf["form::processUploadedFile"]["uploadDirUserDefine"],字串,為存放上傳檔案的目錄,如果沒設定則會自行建立依照系統時間的年月日十分秒來替資料夾命名,並將上傳的檔案存在裏面。
15131
					$conf["form::processUploadedFile"]["uploadDirUserDefine"]=$conf["uploadDirUserDefine"][$i];
15132
 
15133
					}#if end
15134
 
15135
				}#if end
15136
 
15137
			#如果 $conf["ServerFilenameUserDefine"] 有設置
15138
			if(isset($conf["ServerFilenameUserDefine"])){
15139
 
15140
				#如果 $conf["ServerFilenameUserDefine"][$i] 有設置
15141
				if(isset($conf["ServerFilenameUserDefine"][$i])){
15142
 
15143
					#$conf["form::processUploadedFile"]["ServerFilenameUserDefine"],字串,為存放在伺服器上的檔案名稱,如果沒設定則依照台灣時間的年月日時分秒命名
15144
					$conf["form::processUploadedFile"]["ServerFilenameUserDefine"]=$conf["ServerFilenameUserDefine"][$i];
15145
 
15146
					}#if end
15147
 
15148
				}#if end
15149
 
15150
			#如果 $conf["NoFileExtension"] 有設置
15151
			if(isset($conf["NoFileExtension"])){
15152
 
15153
				#如果 $conf["NoFileExtension"][$i] 有設置
15154
				if(isset($conf["NoFileExtension"][$i])){
15155
 
15156
					#$conf["form::processUploadedFile"]["NoFileExtension"],字串,若為 "true" 則表 指定了檔案名稱後,不用再加上檔案型的副檔名,預設為"false".
15157
					$conf["form::processUploadedFile"]["NoFileExtension"]="true";
15158
 
15159
					}#if end
15160
 
15161
				}#if end
15162
 
15163
			#如果 $conf["limitPage"] 有設置
15164
			if(isset($conf["limitPage"])){
15165
 
15166
				#$conf["form::processUploadedFile"]["limitPage"],字串陣列,限制只能從哪些網頁檔案過來。
15167
				$conf["form::processUploadedFile"]["limitPage"]=$conf["limitPage"];
15168
 
15169
				}#if end
15170
 
15171
			#如果 $conf["taskName"] 有設置
15172
			if(isset($conf["taskName"])){
15173
 
15174
				#$conf["form::processUploadedFile"]["taskName"],字串,爲該上傳作業的名稱,若沒設定,則預設爲"上傳作業"。
15175
				$conf["form::processUploadedFile"]["taskName"]=$conf["taskName"];
15176
 
15177
				}#if end
15178
 
15179
			#如果 $conf["eraseOldFile"] 有設置
15180
			if(isset($conf["eraseOldFile"])){
15181
 
15182
				#如果 $conf["eraseOldFile"][$i] 有設置
15183
				if(isset($conf["eraseOldFile"][$i])){
15184
 
15185
					#$conf["form::processUploadedFile"]["eraseOldFile"],字串,如果為"true"的話會移除同名的舊檔案,其值爲檔案的相對位置,預設為"false",不移除同名的檔案,並透過編號保留新的檔案.
15186
					$conf["form::processUploadedFile"]["eraseOldFile"]=$conf["eraseOldFile"][$i];
15187
 
15188
					}#if end
15189
 
15190
				}#if end
15191
 
15192
			#$conf["form::processUploadedFile"]["dbProcess"],字串,如果爲"true",則會進行資料表資料更新的動作,亦即要設定 $conf["updatingMysqlServerAddress"] $conf["updatingMysqlAccount"] $conf["updatingDataBaseName"] $conf["updatingDataTableName"] $conf["updatingConditionDataTableColumnName"] $conf["updatingConditionDataTableColumnValue"] $conf["updatingTargetDataTableColumnName"] $conf["updatingTargetDataTableColumnValue"] 的內容,預設為"false".
15193
			$conf["form::processUploadedFile"]["dbProcess"]=$conf["dbProcess"];
15194
 
15195
			#如果 $conf["updatingMysqlServerAddress"] 有設定
15196
			if(isset($conf["updatingMysqlServerAddress"])){
15197
 
15198
				#$conf["form::processUploadedFile"]["updatingMysqlServerAddress"],字串,資料庫位於網路上的哪個位置.
15199
				$conf["form::processUploadedFile"]["updatingMysqlServerAddress"]=$conf["updatingMysqlServerAddress"];
15200
 
15201
				}#if end
15202
 
15203
			#如果 $conf["updatingMysqlAccount"] 有設定
15204
			if(isset($conf["updatingMysqlAccount"])){
15205
 
15206
				#$conf["form::processUploadedFile"]["updatingMysqlAccount"],字串,連線時要使用的帳號,省略時代表不用密碼進行連線.
15207
				$conf["form::processUploadedFile"]["updatingMysqlAccount"]=$conf["updatingMysqlAccount"];
15208
 
15209
				}#if end
15210
 
15211
			#如果 $conf["updatingMysqlPassword"] 有設定
15212
			if(isset($conf["updatingMysqlPassword"])){
15213
 
15214
				#$conf["form::processUploadedFile"]["updatingMysqlPassword"],字串,連線時要使用的密碼.
15215
				$conf["form::processUploadedFile"]["updatingMysqlPassword"]=$conf["updatingMysqlPassword"];
15216
 
15217
				}#if end
15218
 
15219
			#如果 $conf["updatingDataBaseName"] 有設置
15220
			if(isset($conf["updatingDataBaseName"])){
15221
 
15222
				#$conf["form::processUploadedFile"]["updatingDataBaseName"],字串,要更新的目標資料所屬資料庫名稱.
15223
				$conf["form::processUploadedFile"]["updatingDataBaseName"]=$dbName;
15224
 
15225
				}#if end
15226
 
15227
			#如果 $conf["updatingDataTableName"] 有設置
15228
			if(isset($conf["updatingDataTableName"])){
15229
 
15230
				#$conf["form::processUploadedFile"]["updatingDataTableName"],字串,要更新的目標資料位於哪個資料表.
15231
				$conf["form::processUploadedFile"]["updatingDataTableName"]=$conf["updatingDataTableName"];
15232
 
15233
				}#if end
15234
 
15235
			#如果 $conf["updatingConditionDataTableColumnName"] 有設置
15236
			if(isset($conf["updatingConditionDataTableColumnName"])){
15237
 
15238
				#$conf["form::processUploadedFile"]["updatingConditionDataTableColumnName"],字串陣列,要用哪些欄位來識別要更新哪一筆資料,預設為array("id").
15239
				$conf["form::processUploadedFile"]["updatingConditionDataTableColumnName"]=$conf["updatingConditionDataTableColumnName"];
15240
 
15241
				}#if end
15242
 
15243
			#如果 $conf["updatingConditionDataTableColumnValue"] 有設置
15244
			if(isset($conf["updatingConditionDataTableColumnValue"])){
15245
 
15246
				#$conf["form::processUploadedFile"]["updatingConditionDataTableColumnValue"],字串陣列,該條件欄位內容的數值要爲多少,才是我們要修改的那筆資料。
15247
				$conf["form::processUploadedFile"]["updatingConditionDataTableColumnValue"]=$conf["updatingConditionDataTableColumnValue"];
15248
 
15249
				}#if end
15250
 
15251
			#如果 $conf["updatingTargetDataTableColumnName"] 有設置
15252
			if(isset($conf["updatingTargetDataTableColumnName"])){
15253
 
15254
				#$conf["form::processUploadedFile"]["updatingTargetDataTableColumnName"],字串陣列,要更新的資料欄位有?
15255
				$conf["form::processUploadedFile"]["updatingTargetDataTableColumnName"]=$conf["updatingTargetDataTableColumnName"];
15256
 
15257
				}#if end
15258
 
15259
			#如果 $conf["updatingTargetDataTableColumnValue"] 有設置
15260
			if(isset($conf["updatingTargetDataTableColumnValue"])){
15261
 
15262
				#$conf["form::processUploadedFile"]["updatingTargetDataTableColumnValue"],字串陣列,目標資料欄位要改成什麼樣的數值,如果其元素含有"filePosition",則會替換成新檔案的相對位置
15263
				$conf["form::processUploadedFile"]["updatingTargetDataTableColumnValue"]=$conf["updatingTargetDataTableColumnValue"];
15264
 
15265
				}#if end
15266
 
15267
			#參考資料:
15268
			#file_exist()的用法
15269
			#http://php.net/manual/en/function.file-exists.php
15270
			$processUploadedFile=form::processUploadedFile($conf["form::processUploadedFile"]);
15271
			unset($conf["form::processUploadedFile"]);
15272
 
15273
			#如果 form::processUploadedFile 執行失敗
15274
			if($processUploadedFile["status"]=="false"){
15275
 
15276
				#設置執行不正常
15277
				$result["status"]="false";
15278
 
15279
				#設置錯誤訊息
15280
				$result["error"]=$processUploadedFile;
15281
 
15282
				#回傳結果
15283
				return $result;
15284
 
15285
				}#if end
15286
 
15287
			#取得回傳的結果
15288
 
15289
			#$result["ServerFileName"][$i],第$i-1個檔案的名稱.
15290
			$result["ServerFileName"][$i]=$processUploadedFile["ServerFileName"];
15291
 
15292
			#$result["ServerFileType"][$i],第$i-1個檔案的類型.
15293
			$result["ServerFileType"][$i]=$processUploadedFile["ServerFileType"];
15294
 
15295
			#$result["ServerFileSize"][$i],第$i-1個檔案的大小.
15296
			$result["ServerFileSize"][$i]=$processUploadedFile["ServerFileSize"];
15297
 
15298
			#$result["fileRelativePosition"][$i],第$i-1個檔案的相對位置,包含檔案名稱與附檔名。
15299
			$result["fileRelativePosition"][$i]=$processUploadedFile["fileRelativePosition"];
15300
 
15301
			}#for end
15302
 
15303
		#設置執行正常
15304
		$result["status"]="true";
15305
 
15306
		#回傳結果
15307
		return $result;
15308
 
15309
		}#function processMultiUploadedFile
15310
 
15311
	/*
15312
	#函式說明:
15313
	#上傳多個檔案
15314
	#回傳結果:
15315
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
15316
	#$result["function"],當前執行的函數.
15317
	#$result["error"],錯誤訊息陣列.
15318
	#$result["content"],上傳檔案的語法.
15319
	#必填參數:
15320
	#$conf["formFileName"],字串陣列,每個要上傳檔案的表單名稱.
15321
	$conf["formFileName"]=array("");
15322
	#可省略參數:
15323
	#$conf["maxFileSize"],字串陣列,各個檔案的最大限制,單位是位元組(byte)。1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設是10240000(10MB)
15324
	#$conf["maxFileSize"]=array("10240000");
15325
	#$conf["browseButtonClass"],字串陣列,瀏覽檔案的按鈕樣式,預設為"__qbpwcf_inputFileCssStyle".
15326
	#$conf["browseButtonClass"]=array("__inputFileCssStyle");
15327
	#$conf["acceptType"],字串陣列,限定各個檔案的類型為"video/*","audio/*","image/*",預設不限定.
15328
	#$conf["acceptType"]=array("");
15329
	#$conf["required"],字串陣列,各個欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
15330
	#$conf["required"]=array("true");
15331
	#$conf["comment"],字串陣列,各個上傳檔案的註解,預設不顯示.
15332
	#$conf["comment"]=array("");
15333
	#$conf["formStart"],字串,是否為表單的開始,"true"為是,預設為"false".
15334
	#$conf["formStart"]="true";
15335
	#$conf["formName"],字串,表單的名稱
15336
	#$conf["formName"]="";
15337
	#$conf["formAction"],字串,表單的目標,若有設置$conf["formStart"]為"true",則預設為php檔案自己
15338
	#$conf["formAction"]="";
15339
	#$conf["formTarget"],字串,表單要呈現回應的位置,預設為"_self".
15340
	#$conf["formTarget"]="_self";
15341
	#參考資料:
15342
	#無.
15343
	#備註:
15344
	#無.
15345
	*/
15346
	public static function uploadMultiFile(&$conf){
15347
 
15348
		#初始化要回傳的變數
15349
		$result=array();
15350
 
15351
		#設置當前執行的函式
15352
		$result["function"]=__FUNCTION__;
15353
 
15354
		#初始化表單開始的語法
15355
		$result["content"]="";
15356
 
15357
		#如果 $conf 不為陣列
15358
		if(gettype($conf)!="array"){
15359
 
15360
			#設置執行失敗
15361
			$result["status"]="false";
15362
 
15363
			#設置執行錯誤訊息
15364
			$result["error"][]="\$conf變數須為陣列形態";
15365
 
15366
			#如果傳入的參數為 null
15367
			if($conf==null){
15368
 
15369
				#設置執行錯誤訊息
15370
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
15371
 
15372
				}#if end
15373
 
15374
			#回傳結果
15375
			return $result;
15376
 
15377
			}#if end
15378
 
15379
		#檢查參數
15380
		#函式說明:
15381
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
15382
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
15383
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
15384
		#$result["function"],當前執行的函式名稱.
15385
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
15386
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
15387
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
15388
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
15389
		#必填參數:
15390
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
15391
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
15392
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
15393
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("formFileName");
15394
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
15395
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
15396
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
15397
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
15398
		#可省略參數:
15399
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
15400
		#$conf["canBeEmptyString"]="false";
15401
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
15402
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("maxFileSize","browseButtonClass","formStart","formAction","formTarget","comment","formName","acceptType","required");
15403
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
15404
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array","array","string","string","string","array","string","array","array");
15405
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
15406
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null,"false",null,"_self",null,null,null,null);
15407
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
15408
		#$conf["arrayCountEqualCheck"][]=array();
15409
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
15410
		unset($conf["variableCheck::checkArguments"]);
15411
 
15412
		#如果檢查參數失敗
15413
		if($checkResult["status"]=="false"){
15414
 
15415
			#設置執行失敗
15416
			$result["status"]="false";
15417
 
15418
			#設置執行錯誤
15419
			$result["error"]=$checkResult;
15420
 
15421
			#回傳結果
15422
			return $result;
15423
 
15424
			}#if end
15425
 
15426
		#如果檢查參數不通過
15427
		if($checkResult["passed"]=="false"){
15428
 
15429
			#設置執行失敗
15430
			$result["status"]="false";
15431
 
15432
			#設置執行錯誤
15433
			$result["error"]=$checkResult;
15434
 
15435
			#回傳結果
15436
			return $result;
15437
 
15438
			}#if end
15439
 
15440
		#如果 $conf["formStart"] 跟 $conf["formAction"] 皆有設置
15441
		if(isset($conf["formStart"]) && isset($conf["formAction"])){
15442
 
15443
			#函式說明:
15444
			#表單開始
15445
			#回傳結果:
15446
			#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
15447
			#$result["error"],錯誤訊息陣列.
15448
			#$resutl["function"],當前執行的函式名稱.
15449
			#$result["content"],表單開始的語法.
15450
			#必填參數:
15451
			$conf["form::start"]["action"]=$conf["formAction"];#爲要交給那個檔案處理該表單傳送的內容
15452
			#可省略參數:
15453
			#$conf["legend"]="";#顯示表單的標題
15454
 
15455
			#如果 $conf["formName"] 有設置
15456
			if(isset($conf["formName"])){
15457
 
15458
				$conf["form::start"]["name"]=$conf["formName"];#爲該表單的名稱
15459
 
15460
				}#if end
15461
 
15462
			#$conf["form::start"]["method"]="";#爲傳輸的方法,若沒設定則預設爲post,其他可用的參數爲get。
15463
 
15464
			#如果 $conf["formTarget"] 有設置
15465
			if(isset($conf["formTarget"])){
15466
 
15467
				$conf["form::start"]["target"]=$conf["formTarget"];#為顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。
15468
 
15469
				}#if end
15470
 
15471
			#$conf["tableStart"]="true";#爲該表單是否要以<table>開始。"true"爲是,"false"為否,預設為"false".
15472
			#$conf["tableClass"]="";#表格要套用的css樣式,預設爲"__withoutBorder"無框線的預設樣式;若爲"__withBorder"的話,則爲有框線的預設樣式。
15473
			#$conf["showFieldsetBorder"]="false";#是否要顯示表單區域的框線,預設為"false"不顯示,"true"代表要顯示.
15474
			#參考資料:
15475
			#http://www.w3schools.com/html/html_forms.asp
15476
			#http://www.w3schools.com/tags/tag_fieldset.asp
15477
			$formStart=form::start($conf["form::start"]);
15478
			unset($conf["form::start"]);
15479
 
15480
			#如果表單開始失敗
15481
			if($formStart["status"]=="false"){
15482
 
15483
				#設置執行失敗
15484
				$result["status"]="false";
15485
 
15486
				#設置執行錯誤
15487
				$result["error"]=$formStart;
15488
 
15489
				#回傳結果
15490
				return $result;
15491
 
15492
				}#if end
15493
 
15494
			#串接表單開始
15495
			$result["content"]=$result["content"].$formStart["content"];
15496
 
15497
			}#if end
15498
 
15499
		#陣列 $conf["formFileName"] 中有幾個元素,就執行幾次
15500
		for($i=0;$i<count($conf["formFileName"]);$i++){
15501
 
15502
			#如果 $conf["formFileName"][$i] 不存在
15503
			if(!isset($conf["formFileName"][$i])){
15504
 
15505
				#設置執行失敗
15506
				$result["status"]="false";
15507
 
15508
				#設置錯誤訊息
15509
				$result["error"][]="表單變數有缺";
15510
 
15511
				#回傳結果
15512
				return $result;
15513
 
15514
				}#if end
15515
 
15516
			#函式說明:
15517
			#可以瀏覽要上傳的檔案
15518
			#回傳結果:
15519
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
15520
			#$result["function"],當前執行的函數.
15521
			#$result["error"],錯誤訊息陣列.
15522
			#$result["content"],上傳檔案的語法.
15523
			#必填參數:
15524
			#$conf["formFileName"],字串,該上傳檔案的表單名稱.
15525
			$conf["form::uploadOneFile"]["formFileName"]=$conf["formFileName"][$i];
15526
			#可省略參數:
15527
 
15528
			#如果 $conf["maxFileSize"] 有設置
15529
			if(isset($conf["form::uploadOneFile"])){
15530
 
15531
				#如果 $conf["form::uploadOneFile"][$i] 有設置
15532
				if(isset($conf["form::uploadOneFile"][$i])){
15533
 
15534
					#$conf["form::uploadOneFile"]["maxFileSize"],字串,檔案的最大限制,單位是位元組(byte)。1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設是10240000(10MB)
15535
					$conf["form::uploadOneFile"]["maxFileSize"]=$conf["maxFileSize"];
15536
 
15537
					}#if end
15538
 
15539
				}#if end
15540
 
15541
			#如果 $conf["browseButtonClass"] 有設置
15542
			if(isset($conf["browseButtonClass"])){
15543
 
15544
				#如果 $conf["browseButtonClass"][$i] 有設置
15545
				if(isset($conf["browseButtonClass"][$i])){
15546
 
15547
					#$conf["form::uploadOneFile"]["browseButtonClass"],字串,瀏覽檔案的按鈕樣式,預設為"__inputFileCssStyle".
15548
					$conf["form::uploadOneFile"]["browseButtonClass"]="__inputFileCssStyle";
15549
 
15550
					}#if end
15551
 
15552
				}#if end
15553
 
15554
			#如果 $conf["acceptType"] 有設置
15555
			if(isset($conf["acceptType"])){
15556
 
15557
				#如果 $conf["acceptType"][$i] 存在
15558
				if(isset($conf["acceptType"][$i])){
15559
 
15560
					#$conf["form::uploadOneFile"]["acceptType"],字串,限定檔案的類型為"video/*","audio/*","image/*",預設不限定.
15561
					$conf["form::uploadOneFile"]["acceptType"]=$conf["acceptType"][$i];
15562
 
15563
					}#if end
15564
 
15565
				}#if end
15566
 
15567
			#如果 $conf["required"] 有設置
15568
			if(isset($conf["required"])){
15569
 
15570
				#如果 $conf["required"][$i] 有設置
15571
				if(isset($conf["required"][$i])){
15572
 
15573
					#$conf["form::uploadOneFile"]["required"],字串,該欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
15574
					$conf["form::uploadOneFile"]["required"]=$conf["required"][$i];
15575
 
15576
					}#if end
15577
 
15578
				}#if end
15579
 
15580
			#$conf["trStart"],字串,爲是否要以<tr>開頭,"true"表示"是",也可以看作新的一列開始,預設為"false".
15581
			#$conf["trStart"]="true";
15582
			#$conf["trClass"],字串,列的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式,預設為"__withoutBorder".
15583
			#$conf["trClass"]="__withoutBorder";
15584
			#$conf["tdStart"],字串,爲是否要以<td>開頭,"true"表示"是",也可以看成列裏面的元素開始,預設為"false".
15585
			#$conf["tdStart"]="false";
15586
			#$conf["tdClass"],字串,行的樣式,"__withoutBorder"爲沒有框線的樣式;"__withBorder",有框線的樣式,預設為"__withoutBorder".
15587
			#$conf["tdClass"]="__withoutBorder";
15588
			#$conf["tdEnd"],字串,爲是否要以</td>結尾,"true"表示"是",也可以看成列裏面的元素結束,預設為"false".
15589
			#$conf["tdEnd"]="true";
15590
			#$conf["trEnd"],字串,爲是否要以</tr>結尾,"true"表示"是",也可以看作該列結束,預設為"false".
15591
			#$conf["trEnd"]="true";
15592
			#$conf["form::uploadOneFile"]["formStart"],字串,是否為表單的開始,"true"為是,預設為"false".
15593
			#$conf["form::uploadOneFile"]["formStart"]=$conf["formStart"];
15594
			#$conf["form::uploadOneFile"]["formName"],字串,表單的名稱
15595
			#$conf["form::uploadOneFile"]["formName"]=$conf["formName"];
15596
			#$conf["form::uploadOneFile"]["formAction"],字串,表單的目標,若有設置$conf["formStart"]為"true",則預設為php檔案自己
15597
			#$conf["form::uploadOneFile"]["formAction"]=$conf["formAction"];
15598
			#$conf["form::uploadOneFile"]["formTarget"],字串,表單要呈現回應的位置,預設為"_self".
15599
			#$conf["form::uploadOneFile"]["formTarget"]=$conf["formTarget"];
15600
			#$conf["form::uploadOneFile"]["formEnd"],字串,是否為表單的結束,"true"為是,預設為"false".
15601
			#$conf["form::uploadOneFile"]["formEnd"]=$conf["formEnd"];
15602
 
15603
			#如果有設定 $conf["comment"]
15604
			if(isset($conf["comment"])){
15605
 
15606
				#如果有設定 $conf["comment"][$i]
15607
				if(isset($conf["comment"][$i])){
15608
 
15609
					#$conf["form::uploadOneFile"]["comment"],字串,該上傳檔案的註解,預設不顯示.
15610
					$conf["form::uploadOneFile"]["comment"]=$conf["comment"][$i];
15611
 
15612
					}#if end
15613
 
15614
				}#if end
15615
 
15616
			$uploadOneFile=form::uploadOneFile($conf["form::uploadOneFile"]);
15617
			unset($conf["form::uploadOneFile"]);
15618
 
15619
			#如果 form::uploadOneFile 執行失敗
15620
			if($uploadOneFile["status"]=="false"){
15621
 
15622
				#設置執行失敗
15623
				$result["status"]="false";
15624
 
15625
				#設置錯誤訊息
15626
				$result["error"]=$uploadOneFile;
15627
 
15628
				#回傳結果
15629
				return $result;
15630
 
15631
				}#if end
15632
 
15633
			#如果不是最後一筆
15634
			if($i!=count($conf["formFileName"])-1){
15635
 
15636
				#取得上傳的語法,結尾空一列.
15637
				$result["content"]=$result["content"].$uploadOneFile["content"]."<p>&nbsp;</p>";
15638
 
15639
				}#if end
15640
 
15641
			#反之是最後一筆
15642
			else{
15643
 
15644
				#取得上傳的語法
15645
				$result["content"]=$result["content"].$uploadOneFile["content"];
15646
 
15647
				}#else end
15648
 
15649
			}#for end
15650
 
15651
		#設置執行正常
15652
		$result["status"]="true";
15653
 
15654
		#回傳結果
15655
		return $result;
15656
 
15657
		}#function uploadMultiFile end
15658
 
15659
	/*
15660
	#函式說明:
15661
	#上傳多個檔案,包含回上頁跟送出表單的按鈕.
15662
	#回傳結果:
15663
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
15664
	#$result["function"],當前執行的函數.
15665
	#$result["error"],錯誤訊息陣列.
15666
	#$result["content"],上傳檔案的語法.
15667
	#必填參數:
15668
	#$conf["formFileName"],字串陣列,該上傳檔案的表單名稱.
15669
	$conf["formFileName"]=array("");
15670
	#$conf["actionPage"],字串,處理表單資訊的頁面.
15671
	$conf["actionPage"]="";
15672
	#可省略參數:
15673
	#$conf["backButtonName"],字串,退回上一頁的按鈕要顯示的名稱,預設爲"回上頁"
15674
	#$conf["backButtonName"]="回上頁";
15675
	#$conf["backPage"],字串,返回的按鈕點了之後要到哪個頁面,預設是不使用.
15676
	#$conf["backPage"]="";
15677
	#$conf["backTarget"],字串,返回按鈕的顯示區塊,可以為"_self"自己這個頁面,"_top"整個畫面,"_blank"新的分頁,"_parent"父頁面,預設為"_self".
15678
	#$conf["backTarget"]="";
15679
	#$conf["backButtonClass"],字串,回上頁按鈕的css樣式,預設為"__qbpwcf_button".
15680
	#$conf["backButtonClass"]="__simpleButtonLinkDefaultButtonCssStyle";
15681
	#$conf["formName"],字串,表單的名稱
15682
	#$conf["formName"]="";
15683
	#$conf["formTarget"],字串,表單要呈現回應的位置,預設為"_self".
15684
	#$conf["formTarget"]="_self";
15685
	#$conf["acceptType"],字串陣列,限定各個檔案的類型為"video/*","audio/*","image/*",預設不限定.
15686
	#$conf["acceptType"]=array("");
15687
	#$conf["comment"],字串陣列,各個上傳檔案的註解,預設不顯示.
15688
	#$conf["comment"]=array("");
15689
	#$conf["required"],字串陣列,各個欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
15690
	#$conf["required"]=array("true");
15691
	#$conf["maxFileSize"],字串陣列,各個檔案的最大限制,單位是位元組(byte),1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設爲"102400000"(100MB)
15692
	#$conf["maxFileSize"]=array("102400000");
15693
	#$conf["browseButtonClass"],字串陣列,瀏覽要上傳檔案的css樣式,預設為"__qbpwcf_inputFileCssStyle".
15694
	#$conf["browseButtonClass"]=array("__inputFileCssStyle");
15695
	#$conf["submitButtonClass"],字串,上傳按鈕的css樣式,預設為"__qbpwcf_button".
15696
	#$conf["submitButtonClass"]="__simpleButtonLinkDefaultButtonCssStyle";
15697
	#$conf["submitButtonName"],字串,送出鈕要顯示的名稱,預設爲"上傳"
15698
	#$conf["submitButtonName"]="上傳";
15699
	#參考資料:
15700
	#無.
15701
	#備註:
15702
	#無.
15703
	*/
15704
	public static function uploadMultiFileCom(&$conf){
15705
 
15706
		#初始化要回傳的變數
15707
		$result=array();
15708
 
15709
		#設置當前執行的函式
15710
		$result["function"]=__FUNCTION__;
15711
 
15712
		#初始化表單開始的語法
15713
		$result["content"]="";
15714
 
15715
		#如果 $conf 不為陣列
15716
		if(gettype($conf)!="array"){
15717
 
15718
			#設置執行失敗
15719
			$result["status"]="false";
15720
 
15721
			#設置執行錯誤訊息
15722
			$result["error"][]="\$conf變數須為陣列形態";
15723
 
15724
			#如果傳入的參數為 null
15725
			if($conf==null){
15726
 
15727
				#設置執行錯誤訊息
15728
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
15729
 
15730
				}#if end
15731
 
15732
			#回傳結果
15733
			return $result;
15734
 
15735
			}#if end
15736
 
15737
		#檢查參數
15738
		#函式說明:
15739
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
15740
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
15741
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
15742
		#$result["function"],當前執行的函式名稱.
15743
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
15744
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
15745
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
15746
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
15747
		#必填參數:
15748
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
15749
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
15750
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
15751
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("formFileName","actionPage");
15752
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
15753
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","string");
15754
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
15755
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
15756
		#可省略參數:
15757
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
15758
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
15759
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
15760
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("backButtonName","backPage","backTarget","backButtonClass","formName","formTarget","acceptType","comment","required","maxFileSize","browseButtonClass","submitButtonClass","submitButtonName");
15761
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
15762
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","array","array","array","array","array","string","string");
15763
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
15764
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("回上頁",null,"_self","__qbpwcf_button",null,"_self",null,null,null,null,null,"__qbpwcf_button","上傳");
15765
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
15766
		#$conf["arrayCountEqualCheck"][]=array();
15767
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
15768
		unset($conf["variableCheck::checkArguments"]);
15769
 
15770
		#如果檢查參數失敗
15771
		if($checkResult["status"]=="false"){
15772
 
15773
			#設置執行失敗
15774
			$result["status"]="false";
15775
 
15776
			#設置執行錯誤
15777
			$result["error"]=$checkResult;
15778
 
15779
			#回傳結果
15780
			return $result;
15781
 
15782
			}#if end
15783
 
15784
		#如果檢查參數不通過
15785
		if($checkResult["passed"]=="false"){
15786
 
15787
			#設置執行失敗
15788
			$result["status"]="false";
15789
 
15790
			#設置執行錯誤
15791
			$result["error"]=$checkResult;
15792
 
15793
			#回傳結果
15794
			return $result;
15795
 
15796
			}#if end
15797
 
15798
		#函式說明:
15799
		#上傳多個檔案
15800
		#回傳結果:
15801
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
15802
		#$result["function"],當前執行的函數.
15803
		#$result["error"],錯誤訊息陣列.
15804
		#$result["content"],上傳檔案的語法.
15805
		#必填參數:
15806
		#$conf["form::uploadMultiFile"]["formFileName"],字串陣列,每個要上傳檔案的表單名稱.
15807
		$conf["form::uploadMultiFile"]["formFileName"]=$conf["formFileName"];
15808
		#可省略參數:
15809
 
15810
		#如果 $conf["maxFileSize"] 有設置
15811
		if(isset($conf["maxFileSize"])){
15812
 
15813
			#$conf["form::uploadMultiFile"]["maxFileSize"],字串陣列,各個檔案的最大限制,單位是位元組(byte)。1kb = 1024 byte ; 1mb = 1024 kb 約等與 1024000 byte,預設是10240000(10MB)
15814
			$conf["form::uploadMultiFile"]["maxFileSize"]=$conf["maxFileSize"];
15815
 
15816
			}#if end
15817
 
15818
		#如果有設置 $conf["browseButtonClass"]
15819
		if(isset($conf["browseButtonClass"])){
15820
 
15821
			#$conf["form::uploadMultiFile"]["browseButtonClass"],字串陣列,瀏覽檔案的按鈕樣式,預設為"__inputFileCssStyle".
15822
			$conf["form::uploadMultiFile"]["browseButtonClass"]=$conf["browseButtonClass"];
15823
 
15824
			}#if end
15825
 
15826
		#如果有設置 $conf["acceptType"]
15827
		if(isset($conf["acceptType"])){
15828
 
15829
			#$conf["form::uploadMultiFile"]["acceptType"],字串陣列,限定各個檔案的類型為"video/*","audio/*","image/*",預設不限定.
15830
			$conf["form::uploadMultiFile"]["acceptType"]=$conf["acceptType"];
15831
 
15832
			}#if end
15833
 
15834
		#如果有設置 $conf["required"]
15835
		if(isset($conf["required"])){
15836
 
15837
			#$conf["form::uploadMultiFile"]["required"],字串陣列,各個欄位是否必填,"true"為必填,"false"為可留空,預設為"false".
15838
			$conf["form::uploadMultiFile"]["required"]=$conf["required"];
15839
 
15840
			}#if end
15841
 
15842
		#如果有設置 $conf["comment"]
15843
		if(isset($conf["comment"])){
15844
 
15845
			#$conf["form::uploadMultiFile"]["comment"],字串陣列,各個上傳檔案的註解,預設不顯示.
15846
			$conf["form::uploadMultiFile"]["comment"]=$conf["comment"];
15847
 
15848
			}#if end
15849
 
15850
		#$conf["form::uploadMultiFile"]["formStart"],字串,是否為表單的開始,"true"為是,預設為"false".
15851
		$conf["form::uploadMultiFile"]["formStart"]="true";
15852
 
15853
		#如果有設置 $conf["formName"]
15854
		if(isset($conf["formName"])){
15855
 
15856
			#$conf["form::uploadMultiFile"]["formName"],字串,表單的名稱
15857
			$conf["form::uploadMultiFile"]["formName"]=$conf["formName"];
15858
 
15859
			}#if end
15860
 
15861
		#$conf["form::uploadMultiFile"]["formAction"],字串,表單的目標,若有設置$conf["formStart"]為"true",則預設為php檔案自己
15862
		$conf["form::uploadMultiFile"]["formAction"]=$conf["actionPage"];
15863
 
15864
		#如果有設置 $conf["formTarget"]
15865
		if(isset($conf["formTarget"])){
15866
 
15867
			#$conf["form::uploadMultiFile"]["formTarget"],字串,表單要呈現回應的位置,預設為"_self".
15868
			$conf["form::uploadMultiFile"]["formTarget"]=$conf["formTarget"];
15869
 
15870
			}#if end
15871
 
15872
		$uploadMultiFile=form::uploadMultiFile($conf["form::uploadMultiFile"]);
15873
		unset($conf["form::uploadMultiFile"]);
15874
 
15875
		#如果執行 form::uploadMultiFile 失敗
15876
		if($uploadMultiFile["status"]=="false"){
15877
 
15878
			#設置執行失敗
15879
			$result["status"]="false";
15880
 
15881
			#設置執行錯誤
15882
			$result["error"]=$uploadMultiFile;
15883
 
15884
			#回傳結果
15885
			return $result;
15886
 
15887
			}#if end
15888
 
15889
		#串接多個上傳表單的內容
15890
		$result["content"]=$result["content"].$uploadMultiFile["content"];
15891
 
15892
		#建立送出的按鈕
15893
		#函式說明:
15894
		#放置按鈕
15895
		#回傳結果:
15896
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
15897
		#$result["function"],當前執行的函數.
15898
		#$result["error"],錯誤訊息陣列.
15899
		#$result["content"],按鈕語法.
15900
		#必填參數:
15901
		$conf["form::button"]["buttonDisplayValue"]=$conf["submitButtonName"];#爲按鈕上顯示的文字。
15902
		#可省略參數:
15903
		#$conf["buttonStyleName"]="";#可省略,爲按鈕所要使用的css樣式類別名稱,預設的css樣式爲 __simpleButtonLinkDefaultButtonCssStyle 。
15904
			#其屬性爲   "width","height","font-size","text-align"
15905
			#其屬性值爲 "100%" ,  "50"  ,    "30"   ,   "center"
15906
		#$conf["buttonActionScriptFunction"]="";#可省略,爲按下按鈕時所要執行的javaScript函式,預設不設定。
15907
			#"document.forms.formName.submit()"爲傳送名爲testForm的表單內容
15908
			#"window.print()"爲使用瀏覽器內建工具列印當前網頁
15909
		#$conf["buttonBorder"]="";#可省略,爲IE9內會自動產生外框,此爲外框的厚度,屬性值爲正整數,預設爲0。
15910
		#$conf["disabled"]="true";#可省略,為按鈕的功能是否要取消,若為"true"則代表要取消,若為"false"則代表功能正常,預設為"false".
15911
		#$conf["tableStart"]="true";#爲是否要表格開始。"false"代表否,"true"代表是。預設爲"false"。
15912
		#$conf["tableClass"]="";#表格要套用的css樣式,若省略的話,則預設爲 __defaultTbaleCsssStyle 其屬性爲 table-layout:fixed word-break:break-all width:100% ,須搭配 $conf["tablStart"] 與 $conf["tableEnd"] 使用。
15913
		#$conf["trStart"]="true";#爲是否要以<tr>開頭,"true"表示"是"。也可以看作新的一列開始,預設為"false".
15914
		#$conf["trClass"]="__withoutBorder";#<tr>要套用的css樣式,預設為"__withoutBorder",亦即沒有框線的樣式;"__withBorder"則爲有框線的樣式
15915
		#$conf["tdStart"]="true";#爲是否要以<td>開頭,"true"表示"是"。也可以看成列裏面的元素開始,預設為"false".
15916
		#$conf["tdClass"]="__withoutBorder";#<td>要套用的css樣式,"__withoutBorder"爲沒有框線的樣式;__withBorder爲有框線的樣式
15917
		#$conf["tdEnd"]="true";#爲是否要以</td>結尾,"true"表示"是"。也可以看成列裏面的元素結束,預設為"false".
15918
		#$conf["trEnd"]="true";#爲是否要以</tr>結尾,"true"表示"是"。也可以看作該列結束,預設為"false".
15919
		#$conf["tableEnd"]="true";#爲是否要表格結束。"false"代表否,"true"代表是,預設爲"false"。
15920
		#$conf["formStart"]="true";#爲是否要表單開始,如果爲"true"則代表要表單開始,預設為"false".
15921
		#$conf["action"]="";#爲表單要傳送到哪個頁面,須搭配$conf["formStart"]與$conf["formEnd"]參數使用
15922
		#$conf["target"]="";#為目標表單顯示的方式,若沒設定則預設爲"_self",其他可用的參數爲 "_blank"、"_parent"、"_top",也可以是iframe的名稱。須搭配$conf["formStart"]與$conf["formEnd"]參數使用
15923
		$conf["formEnd"]="true";#爲是否要表單結束,如果爲"true"則代表要表單結束,預設為"false".
15924
		#參考資料:
15925
		#http://stackoverflow.com/questions/3014649/how-to-disable-html-button-using-javascript
15926
		$button=form::button($conf["form::button"]);
15927
		unset($conf["form::button"]);
15928
 
15929
		#如果建立送出按鈕失敗
15930
		if($button["status"]=="false"){
15931
 
15932
			#設置執行失敗
15933
			$result["status"]="false";
15934
 
15935
			#設置執行錯誤
15936
			$result["error"]=$button;
15937
 
15938
			#回傳結果
15939
			return $result;
15940
 
15941
			}#if end
15942
 
15943
		#空一列然後串接送出按鈕
15944
		$result["content"]=$result["content"]."<p>&nbsp;</p>".$button["content"];
15945
 
15946
		#設置執行正常
15947
		$result["status"]="true";
15948
 
15949
		#回傳結果
15950
		return $result;
15951
 
15952
		}#function uploadMultiFileCom end
15953
 
15954
	/*
15955
	#函式說明:
15956
	#將接收到的表單資訊用serialize壓縮成一字串.
15957
	#回傳結果:
15958
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
15959
	#$result["function"],當前執行的函數.
15960
	#$result["error"],錯誤訊息陣列.
15961
	#$result["content"],serialize後的表單資料字串.
15962
	#必填參數:
15963
	#無
15964
	#可省略參數:
15965
	#$conf["type"],接收的表單傳送方式,可以用的有"post","get","any",預設為 "any".
15966
	#$conf["type"]="any";
15967
	#參考資料:
15968
	#serialize=>http://php.net/manual/en/function.serialize.php
15969
	#備註:
15970
	#無.
15971
	*/
15972
	public static function serialize(&$conf=array()){
15973
 
15974
		#初始化要回傳的結果
15975
		$result=array();
15976
 
15977
		#取得當前執行的函數名稱
15978
		$result["function"]=__FUNCTION__;
15979
 
15980
		#如果 $conf 不為陣列
15981
		if(gettype($conf)!="array"){
15982
 
15983
			#設置執行失敗
15984
			$result["status"]="false";
15985
 
15986
			#設置執行錯誤訊息
15987
			$result["error"][]="\$conf變數須為陣列形態";
15988
 
15989
			#如果傳入的參數為 null
15990
			if($conf==null){
15991
 
15992
				#設置執行錯誤訊息
15993
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
15994
 
15995
				}#if end
15996
 
15997
			#回傳結果
15998
			return $result;
15999
 
16000
			}#if end
16001
 
16002
		#檢查可省略參數
16003
		#函式說明:
16004
		#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
16005
		#回傳結果:
16006
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
16007
		#$result["error"],錯誤訊息陣列.
16008
		#$result["function"],當前執行的函式名稱.
16009
		#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。
16010
		#必填參數:
16011
		#$conf["checkedVar"],陣列,要檢查的變數陣列名稱為?
16012
		$conf["heck::checkSkipableVarType"]["checkedVar"]=$conf;
16013
		#$conf["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
16014
		$conf["heck::checkSkipableVarType"]["sikpableVarNameArray"]=array("type");
16015
		#$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).
16016
		$argu=&$conf["heck::checkSkipableVarType"];
16017
		#可省略參數:
16018
		#$conf["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何,null代表不指定變數形態.
16019
		$conf["heck::checkSkipableVarType"]["skipableVarTypeArray"]=array("array");
16020
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的變數要初始化為什麼,null代表不指定.
16021
		$conf["heck::checkSkipableVarType"]["skipableVarDefaultValue"]=array("any");
16022
		$checkSkipableVarType=variableCheck::checkSkipableVarType($conf["heck::checkSkipableVarType"],$argu);
16023
		unset($conf["heck::checkSkipableVarType"]);
16024
		$conf=$argu;
16025
 
16026
		#如果檢查參數失敗
16027
		if($checkSkipableVarType["status"]=="false"){
16028
 
16029
			#設置執行失敗
16030
			$result["status"]="false";
16031
 
16032
			#設置執行錯誤訊息
16033
			$result["error"]=$checkSkipableVarType;
16034
 
16035
			#回傳結果
16036
			return $result;
16037
 
16038
			}#if end
16039
 
16040
		#判斷 $conf["type"]
16041
		switch($conf["type"]){
16042
 
16043
			#如果是 post, POST
16044
			case "post":
16045
			case "POST":
16046
 
16047
				#取得  serialize 後的post表單資料
16048
				$result["content"]=serialize($_POST);
16049
				break;
16050
 
16051
			#如果是 get, GET
16052
			case "get":
16053
			case "GET":
16054
 
16055
				#取得  serialize 後的get表單資料
16056
				$result["content"]=serialize($_GET);
16057
				break;
16058
 
16059
			#如果是 any
16060
			case "any":
16061
 
16062
				#取得  serialize 後的表單資料
16063
				$result["content"]=serialize($_REQUEST);
16064
				break;
16065
			default:
16066
 
16067
				#設置錯誤識別
16068
				$result["status"]="false";
16069
 
16070
				#設置錯誤訊息
16071
				$result["error"]="參數 \"type\" 僅能為 post,get,any 之一";
16072
 
16073
				#回傳結果
16074
				return $result;
16075
 
16076
			}#switch end
16077
 
16078
		#設置執行正常
16079
		$result["status"]="true";
16080
 
16081
		#回傳結果
16082
		return $result;
16083
 
16084
		}#function serialize end
16085
 
16086
	/*
16087
	#函式說明:
16088
	#將接收到的受到serialize壓縮成一字串的表單資訊進行還原
16089
	#回傳結果:
16090
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
16091
	#$result["function"],當前執行的函數.
16092
	#$result["error"],錯誤訊息陣列.
16093
	#$result["content"],serialize後的表單資料字串.
16094
	#必填參數:
16095
	#$conf["serial_FD_str"],透過serialize壓縮過的表單資料
16096
	$conf["serial_FD_str"]="";
16097
	#可省略參數:
16098
	#無
16099
	#參考資料:
16100
	#serialize=>http://php.net/manual/en/function.serialize.php
16101
	#備註:
16102
	#無.
16103
	*/
16104
	public static function unserialize(&$conf){
16105
 
16106
		#初始化要回傳的結果
16107
		$result=array();
16108
 
16109
		#取得當前執行的函數名稱
16110
		$result["function"]=__FUNCTION__;
16111
 
16112
		#如果沒有參數
16113
		if(func_num_args()==0){
16114
 
16115
			#設置執行失敗
16116
			$result["status"]="false";
16117
 
16118
			#設置執行錯誤訊息
16119
			$result["error"]="函數".$result["function"]."需要參數";
16120
 
16121
			#回傳結果
16122
			return $result;
16123
 
16124
			}#if end
16125
 
16126
		#如果 $conf 不為陣列
16127
		if(gettype($conf)!="array"){
16128
 
16129
			#設置執行失敗
16130
			$result["status"]="false";
16131
 
16132
			#設置執行錯誤訊息
16133
			$result["error"][]="\$conf變數須為陣列形態";
16134
 
16135
			#如果傳入的參數為 null
16136
			if($conf==null){
16137
 
16138
				#設置執行錯誤訊息
16139
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
16140
 
16141
				#回傳結果
16142
				return $result;
16143
 
16144
				}#if end
16145
 
16146
			}#if end
16147
 
16148
		#檢查參數
16149
		#函式說明:
16150
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
16151
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
16152
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
16153
		#$result["function"],當前執行的函式名稱.
16154
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
16155
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
16156
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
16157
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
16158
		#必填參數:
16159
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
16160
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
16161
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
16162
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("serial_FD_str");
16163
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
16164
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string");
16165
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
16166
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
16167
		#可省略參數:
16168
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
16169
		#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="true";
16170
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
16171
		#$conf["skipableVariableName"]=array();
16172
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
16173
		#$conf["skipableVariableType"]=array();
16174
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
16175
		#$conf["skipableVarDefaultValue"]=array("");
16176
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
16177
		unset($conf["variableCheck.checkArguments"]);
16178
 
16179
		#如果檢查失敗
16180
		if($checkResult["status"]=="false"){
16181
 
16182
			#設置執行不正常
16183
			$result["status"]="false";
16184
 
16185
			#程式停止執行
16186
			$result["error"]=$checkResult;
16187
 
16188
			#回傳結果
16189
			return $result;
16190
 
16191
			}#if end
16192
 
16193
		#如果檢查不通過
16194
		if($checkResult["passed"]=="false"){
16195
 
16196
			#設置執行不正常
16197
			$result["status"]="false";
16198
 
16199
			#程式停止執行
16200
			$result["error"]=$checkResult;
16201
 
16202
			#回傳結果
16203
			return $result;
16204
 
16205
			}#if end
16206
 
16207
		#取得解開的表單資料
16208
		$result["content"]=unserialize($conf["serial_FD_str"]);
16209
 
16210
		#設置執行正常
16211
		$result["status"]="true";
16212
 
16213
		#回傳結果
16214
		return $result;
16215
 
16216
		}#function unserialize end
16217
 
16218
	/*
16219
	#函式說明:
16220
	#判斷當前php檔的執行是否為ajax的要求.
16221
	#回傳結果:
16222
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
16223
	#$result["function"],當前執行的函數.
16224
	#$result["content"],是否為ajax要求,"true"代表是,"false"代表不是.
16225
	#$result["argu"],使用的參數.
16226
	#可省略參數:
16227
	#$conf["useGetVarToRecogniseAjaxRequest"],字串,用來識別是否為ajax要求的get變數名稱,若其值為"true"則代表為ajax要求,反之為"false",判斷好後會將該變數移除.
16228
	#$conf["useGetVarToRecogniseAjaxRequest"]="is_ajax";
16229
	#$conf["usePostVarToRecogniseAjaxRequest"],字串,用來識別是否為ajax要求的post變數名稱,若其值為"true"則代表為ajax要求,反之為"false",判斷好後會將該變數移除.
16230
	#$conf["usePostVarToRecogniseAjaxRequest"]="is_ajax";
16231
	#參考資料:
16232
	#無.
16233
	#備註:
16234
	#如果client端沒有傳送ajax要求的識別header,則無法識別是ajax要求.
16235
	*/
16236
	public static function is_ajax(&$conf=array()){
16237
 
16238
		#初始化要回傳的結果
16239
		$result=array();
16240
 
16241
		#取得當前執行的函數名稱
16242
		$result["function"]=__FUNCTION__;
16243
 
16244
		#取得參數
16245
		$result["argu"]=$conf;
16246
 
16247
		#如果 $conf 不為陣列
16248
		if(gettype($conf)!="array"){
16249
 
16250
			#設置執行失敗
16251
			$result["status"]="false";
16252
 
16253
			#設置執行錯誤訊息
16254
			$result["error"][]="\$conf變數須為陣列形態";
16255
 
16256
			#如果傳入的參數為 null
16257
			if($conf==null){
16258
 
16259
				#設置執行錯誤訊息
16260
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
16261
 
16262
				}#if end
16263
 
16264
			#回傳結果
16265
			return $result;
16266
 
16267
			}#if end
16268
 
16269
		#檢查參數
16270
		#函式說明:
16271
		#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
16272
		#回傳結果:
16273
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
16274
		#$result["error"],錯誤訊息陣列.
16275
		#$result["function"],當前執行的函式名稱.
16276
		#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。
16277
		#必填參數:
16278
		#$conf["checkedVar"],陣列,要檢查的變數陣列名稱為?
16279
		$conf["variableCheck::checkSkipableVarType"]["checkedVar"]=$conf;
16280
		#$conf["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
16281
		$conf["variableCheck::checkSkipableVarType"]["sikpableVarNameArray"]=array("useGetVarToRecogniseAjaxRequest","usePostVarToRecogniseAjaxRequest");
16282
		#$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).
16283
		$argu=&$conf;
16284
		#可省略參數:
16285
		#$conf["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何,null代表不指定變數形態.
16286
		$conf["variableCheck::checkSkipableVarType"]["skipableVarTypeArray"]=array("string","string");
16287
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的變數要初始化為什麼,null代表不指定.
16288
		$conf["variableCheck::checkSkipableVarType"]["skipableVarDefaultValue"]=array(null,null);
16289
		$checkSkipableVarType=variableCheck::checkSkipableVarType($conf["variableCheck::checkSkipableVarType"],$argu);
16290
		unset($conf["variableCheck::checkSkipableVarType"]);
16291
 
16292
		#如果檢查失敗
16293
		if($checkSkipableVarType["status"]=="false"){
16294
 
16295
			#設置執行不正常
16296
			$result["status"]="false";
16297
 
16298
			#程式停止執行
16299
			$result["error"]=$checkSkipableVarType;
16300
 
16301
			#回傳結果
16302
			return $result;
16303
 
16304
			}#if end
16305
 
16306
		#如果檢查不通過
16307
		if($checkSkipableVarType["passed"]=="false"){
16308
 
16309
			#設置執行不正常
16310
			$result["status"]="false";
16311
 
16312
			#程式停止執行
16313
			$result["error"]=$checkSkipableVarType;
16314
 
16315
			#回傳結果
16316
			return $result;
16317
 
16318
			}#if end
16319
 
16320
		#如果存在 $conf["useGetVarToRecogniseAjaxRequest"]
16321
		if(isset($conf["useGetVarToRecogniseAjaxRequest"])){
16322
 
16323
			#如果存在 $_GET[$conf["useGetVarToRecogniseAjaxRequest"]]
16324
			if(isset($_GET[$conf["useGetVarToRecogniseAjaxRequest"]])){
16325
 
16326
				#如果 $_GET[$conf["useGetVarToRecogniseAjaxRequest"]] 為 "true"
16327
				if($_GET[$conf["useGetVarToRecogniseAjaxRequest"]]==="true"){
16328
 
16329
					#設置為ajax要求
16330
					$result["content"]="true";
16331
 
16332
					#移除識別 ajax 要求的 post 變數
16333
					unset($_GET[$conf["useGetVarToRecogniseAjaxRequest"]]);
16334
 
16335
					}#if end
16336
 
16337
				}#if end
16338
 
16339
			}#if end
16340
 
16341
		#反之如果存在 $conf["usePostVarToRecogniseAjaxRequest"]
16342
		else if(isset($conf["usePostVarToRecogniseAjaxRequest"])){
16343
 
16344
			#如果存在 $_POST[$conf["usePostVarToRecogniseAjaxRequest"]]
16345
			if(isset($_POST[$conf["usePostVarToRecogniseAjaxRequest"]])){
16346
 
16347
				#如果 $_POST[$conf["usePostVarToRecogniseAjaxRequest"]] 為 "true"
16348
				if($_POST[$conf["usePostVarToRecogniseAjaxRequest"]]==="true"){
16349
 
16350
					#設置為ajax要求
16351
					$result["content"]="true";
16352
 
16353
					#移除識別 ajax 要求的 post 變數
16354
					unset($_POST[$conf["usePostVarToRecogniseAjaxRequest"]]);
16355
 
16356
					}#if end
16357
 
16358
				}#if end
16359
 
16360
			}#if end
16361
 
16362
		#如果存在 $_SERVER['HTTP_X_REQUESTED_WITH']
16363
		else if(isset($_SERVER['HTTP_X_REQUESTED_WITH'])){
16364
 
16365
			#且其 $_SERVER['HTTP_X_REQUESTED_WITH'] 值為 'xmlhttprequest'
16366
			if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH'])==='xmlhttprequest'){
16367
 
16368
				#設置為ajax要求
16369
				$result["content"]="true";
16370
 
16371
				}#if end
16372
 
16373
			}#if end
16374
 
16375
		#如果不存在 $result["content"]
16376
		if(!isset($result["content"])){
16377
 
16378
			#設置不為ajax要求
16379
			$result["content"]="false";
16380
 
16381
			}#if end
16382
 
16383
		#設置執行正常
16384
		$result["status"]="true";
16385
 
16386
		#回傳結果
16387
		return $result;
16388
 
16389
		}#function is_ajax end
226 liveuser 16390
 
3 liveuser 16391
	/*
16392
	#函式說明:
16393
	#水平拉霸
16394
	#回傳結果:
16395
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
16396
	#$result["function"],當前執行的函數.
16397
	#$result["content"],js語法.
16398
	#$result["argu"],使用的參數.
16399
	#必填參數:
16400
	#$conf["name"],字串,拉霸的名稱,不可重複,會出錯。
16401
	$conf["name"]="a";
16402
	#可省略參數:
16403
	#$conf["selectedColor"],字串,當前數值於bar上的顏色,預設為"orange".
16404
	#$conf["selectedColor"]="orange";
16405
	#$conf["unSelectedColor"],字串,非當前數值於bar上的顏色,預設為#d3d3d3.
16406
	#$conf["unSelectedColor"]="#d3d3d3";
16407
	#參考資料:
16408
	#無.
16409
	#備註:
16410
	#會產生 window.qbpwcf.form.bar 物件.若要印出拉霸則可呼叫函式 window.qbpwcf.form.bar.print() 方法.若要存取變更拉霸的設定可呼叫 window.qbpwcf.form.bar.content 取得dom.
16411
	*/
16412
	public static function bar(&$conf=array()){
226 liveuser 16413
 
3 liveuser 16414
		#初始化要回傳的結果
16415
		$result=array();
16416
 
16417
		#取得當前執行的函數名稱
16418
		$result["function"]=__FUNCTION__;
16419
 
16420
		#取得參數
16421
		$result["argu"]=$conf;
16422
 
16423
		#如果 $conf 不為陣列
16424
		if(gettype($conf)!="array"){
16425
 
16426
			#設置執行失敗
16427
			$result["status"]="false";
16428
 
16429
			#設置執行錯誤訊息
16430
			$result["error"][]="\$conf變數須為陣列形態";
16431
 
16432
			#如果傳入的參數為 null
16433
			if($conf==null){
16434
 
16435
				#設置執行錯誤訊息
16436
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
16437
 
16438
				}#if end
16439
 
16440
			#回傳結果
16441
			return $result;
16442
 
16443
			}#if end
16444
 
16445
		#檢查參數
16446
		#函式說明:
16447
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
16448
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
16449
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
16450
		#$result["function"],當前執行的函式名稱.
16451
		#$result["argu"],設置給予的參數.
16452
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
16453
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
16454
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
16455
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
16456
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
16457
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
16458
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
16459
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
16460
		#必填寫的參數:
16461
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
16462
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
16463
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
16464
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
16465
		#可以省略的參數:
16466
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
16467
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("name");
16468
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
16469
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
16470
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
16471
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
16472
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
16473
		#$conf["canNotBeEmpty"]=array();
16474
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
16475
		#$conf["canBeEmpty"]=array();
16476
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
16477
		$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("selectedColor","unSelectedColor");
16478
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
16479
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("selectedColor","unSelectedColor");
16480
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
16481
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
16482
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
16483
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("orange","#d3d3d3");
16484
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
16485
		#$conf["disallowAllSkipableVarIsEmpty"]="";
16486
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
16487
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
16488
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
16489
		#$conf["arrayCountEqualCheck"][]=array();
16490
		#參考資料:
16491
		#array_keys=>http://php.net/manual/en/function.array-keys.php
16492
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
16493
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 16494
 
3 liveuser 16495
		#若檢查參數失敗
16496
		if($checkArguments["status"]==="false"){
226 liveuser 16497
 
3 liveuser 16498
			#設置執行失敗
16499
			$result["status"]="false";
226 liveuser 16500
 
3 liveuser 16501
			#設置錯誤訊息
16502
			$result["error"]=$checkArguments;
226 liveuser 16503
 
3 liveuser 16504
			#回傳結果
16505
			return $result;
226 liveuser 16506
 
3 liveuser 16507
			}#if end
226 liveuser 16508
 
3 liveuser 16509
		#若檢查參數不通過
16510
		if($checkArguments["passed"]==="false"){
226 liveuser 16511
 
3 liveuser 16512
			#設置執行失敗
16513
			$result["status"]="false";
226 liveuser 16514
 
3 liveuser 16515
			#設置錯誤訊息
16516
			$result["error"]=$checkArguments;
226 liveuser 16517
 
3 liveuser 16518
			#回傳結果
16519
			return $result;
226 liveuser 16520
 
3 liveuser 16521
			}#if end
226 liveuser 16522
 
3 liveuser 16523
		#加入 js
16524
		#函式說明:
16525
		#將要執行的script語法透過該函式執行(會在程式外層用<script></script>包起來).
16526
		#回傳結果:
16527
		#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
16528
		#$result["error"],錯誤訊息陣列
16529
		#$result["function"],當前執行的函數名稱
16530
		#$result["content"],要執行的javaScript語法
16531
		#必填參數:
16532
		#$conf["script"],字串,要執行的javaScript語法.
16533
		$conf["javaScript::toScript"]["script"]=
16534
		"
226 liveuser 16535
 
3 liveuser 16536
		//確認變數存在 - start
16537
		if(window.qbpwcf===undefined)
16538
		{
16539
			window.qbpwcf={};
16540
		}
226 liveuser 16541
 
3 liveuser 16542
		if(window.qbpwcf.form===undefined)
16543
		{
16544
			window.qbpwcf.form={};
16545
		}
226 liveuser 16546
 
3 liveuser 16547
		if(window.qbpwcf.form.bar===undefined)
16548
		{
16549
			window.qbpwcf.form.bar={};
16550
		}
16551
		//確認變數 - end
226 liveuser 16552
 
3 liveuser 16553
		//建立 root div
16554
		rootDiv=document.createElement('div');
16555
		rootDiv.id='".$conf["name"]."rootDiv';
226 liveuser 16556
 
3 liveuser 16557
		//建立 onoff div
16558
		onoffDiv=document.createElement('div');
16559
		onoffDiv.id='".$conf["name"]."onoffDiv';
226 liveuser 16560
		onoffDiv.style.width='200px';
16561
 
3 liveuser 16562
		//建立 off 的 div tag
16563
		offDiv=document.createElement('div');
16564
		offDiv.id='".$conf["name"]."off';
16565
		offDiv.innerText='off ';
16566
		offDiv.style.display='inline';
16567
		offDiv.style.float='left';
226 liveuser 16568
 
3 liveuser 16569
		//如果點擊了 off 字樣
16570
		offDiv.addEventListener('click',function(e){
226 liveuser 16571
 
3 liveuser 16572
			//一百次迴圈
16573
			for(i=0;i<100;i++){
226 liveuser 16574
 
3 liveuser 16575
				//取得該bar part
16576
				thisBarPart=document.getElementById('".$conf["name"]."bar'+i);
226 liveuser 16577
 
3 liveuser 16578
				//設置為灰色
226 liveuser 16579
				thisBarPart.style.borderColor='".$conf["unSelectedColor"]."';
16580
 
3 liveuser 16581
				}//for end
226 liveuser 16582
 
3 liveuser 16583
			//取得 bar 數值
16584
			barVal=document.getElementById('".$conf["name"]."barVal');
226 liveuser 16585
 
3 liveuser 16586
			//設置為 '0%'
16587
			barVal.innerText='0%';
226 liveuser 16588
 
3 liveuser 16589
			//設置實際數值為 '0'
16590
			barVal.dataset.val='0';
226 liveuser 16591
 
3 liveuser 16592
			});
226 liveuser 16593
 
3 liveuser 16594
		//放入off的文字
16595
		onoffDiv.appendChild(offDiv);
226 liveuser 16596
 
3 liveuser 16597
		//建立 on 的 div tag
16598
		onDiv=document.createElement('div');
16599
		onDiv.id='".$conf["name"]."on';
16600
		onDiv.innerText=' on';
16601
		onDiv.style.display='inline';
16602
		onDiv.style.float='right';
226 liveuser 16603
 
3 liveuser 16604
		//如果點擊了 on 字樣
16605
		onDiv.addEventListener('click',function(e){
226 liveuser 16606
 
3 liveuser 16607
			//一百次迴圈
16608
			for(i=0;i<100;i++){
226 liveuser 16609
 
3 liveuser 16610
				//取得該bar part
16611
				thisBarPart=document.getElementById('".$conf["name"]."bar'+i);
226 liveuser 16612
 
3 liveuser 16613
				//設置為灰色
226 liveuser 16614
				thisBarPart.style.borderColor='".$conf["unSelectedColor"]."';
16615
 
3 liveuser 16616
				}//for end
226 liveuser 16617
 
3 liveuser 16618
			//取得 bar 數值
16619
			barVal=document.getElementById('".$conf["name"]."barVal');
226 liveuser 16620
 
3 liveuser 16621
			//設置為 '0%'
16622
			barVal.innerText='on';
226 liveuser 16623
 
3 liveuser 16624
			//設置實際數值為 '0'
16625
			barVal.dataset.value='?';
226 liveuser 16626
 
3 liveuser 16627
			});
226 liveuser 16628
 
3 liveuser 16629
		//放入on的文字
16630
		onoffDiv.appendChild(onDiv);
226 liveuser 16631
 
3 liveuser 16632
		//建立 on 的 div tag
16633
		div=document.createElement('div');
226 liveuser 16634
 
3 liveuser 16635
		//放入空div
16636
		rootDiv.appendChild(div);
226 liveuser 16637
 
3 liveuser 16638
		//放入 on off div
16639
		rootDiv.appendChild(onoffDiv);
226 liveuser 16640
 
3 liveuser 16641
		//100次迴圈
16642
		for(i=0;i<100;i++){
226 liveuser 16643
 
3 liveuser 16644
			//建立拉霸
16645
			line=document.createElement('div');
226 liveuser 16646
 
3 liveuser 16647
			//設置拉霸樣式
16648
			line.id='".$conf["name"]."bar'+i;
16649
			line.dataset.val=i+1;
16650
			line.style.borderStyle='solid';
16651
			line.style.borderColor='".$conf["unSelectedColor"]."';
16652
			line.style.borderWidth='1px';
226 liveuser 16653
			line.style.borderRadius='1px';
3 liveuser 16654
			line.style.display='inline';
16655
 
16656
			//放入拉霸part
16657
			rootDiv.appendChild(line);
226 liveuser 16658
 
3 liveuser 16659
			//點擊事件
16660
			line.addEventListener('click',function(e){
226 liveuser 16661
 
3 liveuser 16662
				//一百次迴圈
16663
				for(j=0;j<100;j++){
226 liveuser 16664
 
3 liveuser 16665
					//取得該bar part
16666
					thisBarPart=document.getElementById('".$conf["name"]."bar'+j);
226 liveuser 16667
 
3 liveuser 16668
					//設置為灰色
226 liveuser 16669
					thisBarPart.style.borderColor='".$conf["unSelectedColor"]."';
16670
 
3 liveuser 16671
					}//for end
226 liveuser 16672
 
3 liveuser 16673
				//選取的點設置為橘色
226 liveuser 16674
				e.target.style.borderColor='".$conf["selectedColor"]."';
16675
 
3 liveuser 16676
				//設置當前顯示的%數
16677
				document.getElementById('".$conf["name"]."barVal').innerText=(e.target.dataset.val)+'%';
226 liveuser 16678
 
3 liveuser 16679
				//設置當前顯示的%數值,不含單位
16680
				document.getElementById('".$conf["name"]."barVal').dataset.val=e.target.dataset.val;
226 liveuser 16681
 
3 liveuser 16682
				});//addEventListener end
226 liveuser 16683
 
3 liveuser 16684
			}//for end
226 liveuser 16685
 
3 liveuser 16686
		//建立 div tag,預設為 '?%'
16687
		valDiv=document.createElement('div');
16688
		valDiv.id='".$conf["name"]."barVal';
16689
		valDiv.innerText='?%';
16690
		valDiv.dataset.val='?';
16691
		valDiv.style.display='inline';
226 liveuser 16692
 
3 liveuser 16693
		//放入數值顯示
16694
		rootDiv.appendChild(valDiv);
226 liveuser 16695
 
3 liveuser 16696
		//取得 拉霸的名稱
16697
		window.qbpwcf.form.bar.name='".$conf["name"]."';
226 liveuser 16698
 
3 liveuser 16699
		//取得 拉霸的語法
16700
		window.qbpwcf.form.bar.content=rootDiv;
226 liveuser 16701
 
3 liveuser 16702
		//設置印出 拉霸的語法
16703
		window.qbpwcf.form.bar.print=function(){
226 liveuser 16704
 
3 liveuser 16705
			//放置root div
16706
			document.body.appendChild(window.qbpwcf.form.bar.content);
226 liveuser 16707
 
3 liveuser 16708
			}//function end
226 liveuser 16709
 
3 liveuser 16710
		";
16711
		#可省略參數:
16712
		#$conf["onReady"],字串,是否要在網頁完全載入後再執行,"false"為不等載入完就先執行,預設為"true"要等載入完再執行.
16713
		#$conf["onReady"]="true";
16714
		#$conf["globalJs"],字串陣列,為要放入<script>標籤的js全域變數.
16715
		#$conf["globalJs"]=array();
16716
		#$conf["jsFunciton"],字串陣列,為要放入<script>標籤的js函數.
16717
		#$conf["jsFunciton"]=array();
16718
		#參考資料:
16719
		#http://stackoverflow.com/questions/9899372/pure-javascript-equivalent-to-jquerys-ready-how-to-call-a-function-when-the
226 liveuser 16720
		$toScript=javaScript::toScript($conf["javaScript::toScript"]);
16721
		$result["scriptWithoutTag"]=$conf["javaScript::toScript"]["script"];
3 liveuser 16722
		unset($conf["javaScript::toScript"]);
226 liveuser 16723
 
3 liveuser 16724
		#加入 js 失敗
16725
		if($toScript["status"]==="false"){
226 liveuser 16726
 
3 liveuser 16727
			#設置執行失敗
16728
			$result["status"]="false";
226 liveuser 16729
 
3 liveuser 16730
			#設置錯誤訊息
16731
			$result["error"]=$toScript;
226 liveuser 16732
 
3 liveuser 16733
			#回傳結果
16734
			return $result;
226 liveuser 16735
 
3 liveuser 16736
			}#if end
226 liveuser 16737
 
3 liveuser 16738
		#取得js語法
16739
		$result["content"]=$toScript["content"];
226 liveuser 16740
 
3 liveuser 16741
		#設置執行正常
16742
		$result["status"]="true";
226 liveuser 16743
 
3 liveuser 16744
		#回傳結果
16745
		return $result;
226 liveuser 16746
 
3 liveuser 16747
		}#function bar end
16748
 
16749
	}#class form end
16750
 
16751
?>