Subversion Repositories php-qbpwcf

Rev

Rev 171 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 171 Rev 226
Line 1... Line 1...
1
<?php
1
<?php
2
 
2
 
3
/*
3
/*
4
 
4
 
5
	QBPWCF, Quick Build PHP website Component base on Fedora Linux.
5
	QBPWCF, Quick Build PHP website Component base on Fedora Linux.
6
    Copyright (C) 2015~2024 Min-Jhin,Chen
6
    Copyright (C) 2014~2025 MIN ZHI, CHEN
7
 
7
 
8
    This file is part of QBPWCF.
8
    This file is part of QBPWCF.
9
 
9
 
10
    QBPWCF is free software: you can redistribute it and/or modify
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
11
    it under the terms of the GNU General Public License as published by
Line 28... Line 28...
28
跟 PHP session 應用相關的類別.
28
跟 PHP session 應用相關的類別.
29
備註:
29
備註:
30
無.
30
無.
31
*/
31
*/
32
class session{
32
class session{
33
	
33
 
34
	/*
34
	/*
35
	#函式說明:
35
	#函式說明:
36
	#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
36
	#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
37
	#回傳結果:
37
	#回傳結果:
38
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
38
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 47... Line 47...
47
	#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
47
	#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
48
	#備註:
48
	#備註:
49
	#無.
49
	#無.
50
	*/
50
	*/
51
	public function __call($method,$arguments){
51
	public function __call($method,$arguments){
52
		
52
 
53
		#取得當前執行的函式
53
		#取得當前執行的函式
54
		$result["function"]=__FUNCTION__;
54
		$result["function"]=__FUNCTION__;
55
		
55
 
56
		#設置執行不正常
56
		#設置執行不正常
57
		$result["status"]="false";
57
		$result["status"]="false";
58
		
58
 
59
		#設置執行錯誤
59
		#設置執行錯誤
60
		$result["error"][]=__NAMESPACE__ ."/".$method."() 不存在!";
60
		$result["error"][]=__NAMESPACE__ ."/".$method."() 不存在!";
61
		
61
 
62
		#設置所丟入的參數
62
		#設置所丟入的參數
63
		$result["error"][]=$arguments;
63
		$result["error"][]=$arguments;
64
		
64
 
65
		#回傳結果
65
		#回傳結果
66
		return $result;
66
		return $result;
67
		
67
 
68
		}#function __call end
68
		}#function __call end
69
		
69
 
70
	/*
70
	/*
71
	#函式說明:
71
	#函式說明:
72
	#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
72
	#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
73
	#回傳結果:
73
	#回傳結果:
74
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
74
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 83... Line 83...
83
	#__callStatic=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
83
	#__callStatic=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
84
	#備註:
84
	#備註:
85
	#無.
85
	#無.
86
	*/
86
	*/
87
	public static function __callStatic($method,$arguments){
87
	public static function __callStatic($method,$arguments){
88
		
88
 
89
		#取得當前執行的函式
89
		#取得當前執行的函式
90
		$result["function"]=__FUNCTION__;
90
		$result["function"]=__FUNCTION__;
91
		
91
 
92
		#設置執行不正常
92
		#設置執行不正常
93
		$result["status"]="false";
93
		$result["status"]="false";
94
		
94
 
95
		#設置執行錯誤
95
		#設置執行錯誤
96
		$result["error"][]="欲呼叫的". __NAMESPACE__ ."/".$method."() 不存在!";
96
		$result["error"][]="欲呼叫的". __NAMESPACE__ ."/".$method."() 不存在!";
97
		
97
 
98
		#設置所丟入的參數
98
		#設置所丟入的參數
99
		$result["error"][]=$arguments;
99
		$result["error"][]=$arguments;
100
		
100
 
101
		#回傳結果
101
		#回傳結果
102
		return $result;
102
		return $result;
103
		
103
 
104
		}#function __callStatic end
104
		}#function __callStatic end
105
	
105
 
106
	/*
106
	/*
107
	#函式說明:
107
	#函式說明:
108
	#取得session變數裡面的數值,然後卸除該session變數
108
	#取得session變數裡面的數值,然後卸除該session變數
109
	#回傳結果:
109
	#回傳結果:
110
	#$result["status"],執行是否正常,"true"代表正常,"false"代表有誤.
110
	#$result["status"],執行是否正常,"true"代表正常,"false"代表有誤.
Line 128... Line 128...
128
	#卸除參考的原始變數=>http://stackoverflow.com/questions/6654538/php-function-to-unset-variables-passed-by-reference
128
	#卸除參考的原始變數=>http://stackoverflow.com/questions/6654538/php-function-to-unset-variables-passed-by-reference
129
	#備註:
129
	#備註:
130
	#無.
130
	#無.
131
	*/
131
	*/
132
	public static function getSessionValue(&$conf){
132
	public static function getSessionValue(&$conf){
133
		
133
 
134
		#初始化要回傳的變數
134
		#初始化要回傳的變數
135
		$result=array();
135
		$result=array();
136
		
136
 
137
		#設置當前執行的函式
137
		#設置當前執行的函式
138
		$result["function"]=__FUNCTION__;
138
		$result["function"]=__FUNCTION__;
139
		
139
 
140
		#如果 $conf 不為陣列
140
		#如果 $conf 不為陣列
141
		if(gettype($conf)!="array"){
141
		if(gettype($conf)!="array"){
142
			
142
 
143
			#設置執行失敗
143
			#設置執行失敗
144
			$result["status"]="false";
144
			$result["status"]="false";
145
			
145
 
146
			#設置執行錯誤訊息
146
			#設置執行錯誤訊息
147
			$result["error"][]="\$conf變數須為陣列形態";
147
			$result["error"][]="\$conf變數須為陣列形態";
148
 
148
 
149
			#如果傳入的參數為 null
149
			#如果傳入的參數為 null
150
			if($conf==null){
150
			if($conf==null){
151
				
151
 
152
				#設置執行錯誤訊息
152
				#設置執行錯誤訊息
153
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
153
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
154
				
154
 
155
				}#if end
155
				}#if end
156
 
156
 
157
			#回傳結果
157
			#回傳結果
158
			return $result;
158
			return $result;
159
			
159
 
160
			}#if end
160
			}#if end
161
			
161
 
162
		#檢查參數
162
		#檢查參數
163
		#函式說明:
163
		#函式說明:
164
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
164
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
165
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
165
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
166
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
166
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
Line 175... Line 175...
175
		#必填寫的參數:
175
		#必填寫的參數:
176
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
176
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
177
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
177
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
178
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
178
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
179
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("sessionVarName");
179
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("sessionVarName");
180
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
180
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
181
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
181
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
182
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
182
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
183
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
183
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
184
		#可以省略的參數:
184
		#可以省略的參數:
185
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
185
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
186
		#$conf["canBeEmptyString"]="false";
186
		#$conf["canBeEmptyString"]="false";
187
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
187
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
188
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("unsetSessionVar","autoCreate","initVal");
188
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("unsetSessionVar","autoCreate","initVal");
189
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
189
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
190
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","any");
190
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","any");
191
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
191
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
192
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false","false",null);
192
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false","false",null);
193
		#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
193
		#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
194
		#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("sessionArrayName","sessionArrayValue");
194
		#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("sessionArrayName","sessionArrayValue");
195
		#參考資料來源:
195
		#參考資料來源:
196
		#array_keys=>http://php.net/manual/en/function.array-keys.php
196
		#array_keys=>http://php.net/manual/en/function.array-keys.php
197
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
197
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
198
		unset($conf["variableCheck::checkArguments"]);
198
		unset($conf["variableCheck::checkArguments"]);
199
		
199
 
200
		#如果檢查參數失敗
200
		#如果檢查參數失敗
201
		if($checkArguments["status"]=="false"){
201
		if($checkArguments["status"]=="false"){
202
			
202
 
203
			#設置執行失敗
203
			#設置執行失敗
204
			$result["status"]="false";
204
			$result["status"]="false";
205
			
205
 
206
			#設置執行錯誤訊息
206
			#設置執行錯誤訊息
207
			$result["error"]=$checkArguments;
207
			$result["error"]=$checkArguments;
208
 
208
 
209
			#回傳結果
209
			#回傳結果
210
			return $result;
210
			return $result;
211
			
211
 
212
			}#if end
212
			}#if end
213
			
213
 
214
		#檢查參數不通過
214
		#檢查參數不通過
215
		if($checkArguments["passed"]=="false"){
215
		if($checkArguments["passed"]=="false"){
216
			
216
 
217
			#設置執行失敗
217
			#設置執行失敗
218
			$result["status"]="false";
218
			$result["status"]="false";
219
			
219
 
220
			#設置執行錯誤訊息
220
			#設置執行錯誤訊息
221
			$result["error"]=$checkArguments;
221
			$result["error"]=$checkArguments;
222
 
222
 
223
			#回傳結果
223
			#回傳結果
224
			return $result;
224
			return $result;
225
			
225
 
226
			}#if end	
226
			}#if end
227
			
227
 
228
		#確認該session變數是否存在
228
		#確認該session變數是否存在
229
		if(!isset($_SESSION[$conf["sessionVarName"]])){
229
		if(!isset($_SESSION[$conf["sessionVarName"]])){
230
 
230
 
231
			#設置執行正常
231
			#設置執行正常
232
			$result["status"]="true";
232
			$result["status"]="true";
Line 234... Line 234...
234
			#設置沒有找到session變數
234
			#設置沒有找到session變數
235
			$result["founded"]="false";
235
			$result["founded"]="false";
236
 
236
 
237
			#如果要自動建立該 session 變數
237
			#如果要自動建立該 session 變數
238
			if($conf["autoCreate"]==="true"){
238
			if($conf["autoCreate"]==="true"){
239
			
239
 
240
				#函式說明:
240
				#函式說明:
241
				#建立session變數,並指派其內容
241
				#建立session變數,並指派其內容
242
				#回傳結果:
242
				#回傳結果:
243
				#$result["status"],執行狀態,"true"代表執行成功;"false"代表執行失敗.
243
				#$result["status"],執行狀態,"true"代表執行成功;"false"代表執行失敗.
244
				#$result["error"],錯誤訊息陣列.
244
				#$result["error"],錯誤訊息陣列.
245
				#$result["function"],當前執行的函數名稱.
245
				#$result["function"],當前執行的函數名稱.
246
				#必填參數:
246
				#必填參數:
247
				#$conf["sessionName"],字串,要建立的session變數名稱,建議可採用name1.name2.name3的格式.
247
				#$conf["sessionName"],字串,要建立的session變數名稱,建議可採用name1.name2.name3的格式.
248
				$conf["session::create"]["sessionName"]=$conf["sessionVarName"];
248
				$conf["session::create"]["sessionName"]=$conf["sessionVarName"];
249
				#可省略參數: 
249
				#可省略參數:
250
				
250
 
251
				#如果有設置 $conf["initVal"]
251
				#如果有設置 $conf["initVal"]
252
				if(isset($conf["initVal"])){
252
				if(isset($conf["initVal"])){
253
				
253
 
254
					#$conf["sessionValue"],字串,session變數的內容,預設為"".
254
					#$conf["sessionValue"],字串,session變數的內容,預設為"".
255
					$conf["session::create"]["sessionValue"]=$conf["initVal"];
255
					$conf["session::create"]["sessionValue"]=$conf["initVal"];
256
				
256
 
257
					}#if end
257
					}#if end
258
				
258
 
259
				$create=session::create($conf["session::create"]);
259
				$create=session::create($conf["session::create"]);
260
				unset($conf["session::create"]);
260
				unset($conf["session::create"]);
261
			
261
 
262
				#遞迴執行
262
				#遞迴執行
263
				return session::getSessionValue($conf);
263
				return session::getSessionValue($conf);
264
			
264
 
265
				}#if end
265
				}#if end
266
 
266
 
267
			#回傳結果
267
			#回傳結果
268
			return $result;
268
			return $result;
269
 
269
 
270
			}#if end
270
			}#if end
271
 
271
 
272
		#取得session變數的內容
272
		#取得session變數的內容
273
		$result["content"]=$_SESSION[$conf["sessionVarName"]];
273
		$result["content"]=$_SESSION[$conf["sessionVarName"]];
274
	
274
 
275
		#設置有找到session變數
275
		#設置有找到session變數
276
		$result["founded"]="true";
276
		$result["founded"]="true";
277
 
277
 
278
		#如果 $conf["unsetSessionVar"] 為 "true"
278
		#如果 $conf["unsetSessionVar"] 為 "true"
279
		if($conf["unsetSessionVar"]==="true"){
279
		if($conf["unsetSessionVar"]==="true"){
280
				
280
 
281
			#移除session變數的內容
281
			#移除session變數的內容
282
			unset($_SESSION[$conf["sessionVarName"]]);
282
			unset($_SESSION[$conf["sessionVarName"]]);
283
			
283
 
284
			}#if end
284
			}#if end
285
		
285
 
286
		#設置執行正常
286
		#設置執行正常
287
		$result["status"]="true";
287
		$result["status"]="true";
288
 
288
 
289
		#回傳結果
289
		#回傳結果
290
		return $result;	
290
		return $result;
291
			
291
 
292
		}#function getSessionValue end
292
		}#function getSessionValue end
293
	
293
 
294
	/*
294
	/*
295
	#函式說明:
295
	#函式說明:
296
	#取得多個指定的session變數,卸除之.
296
	#取得多個指定的session變數,卸除之.
297
	#回傳結果:
297
	#回傳結果:
298
	#$result["status"],執行狀態,"true"代表執行成功;"false"代表執行失敗。
298
	#$result["status"],執行狀態,"true"代表執行成功;"false"代表執行失敗。
Line 313... Line 313...
313
	#無.
313
	#無.
314
	#備註:
314
	#備註:
315
	#無.
315
	#無.
316
	*/
316
	*/
317
	public static function getMultiSessionValues(&$conf){
317
	public static function getMultiSessionValues(&$conf){
318
		
318
 
319
		#初始化要回傳的變數
319
		#初始化要回傳的變數
320
		$result=array();
320
		$result=array();
321
		
321
 
322
		#設置當前執行的函式
322
		#設置當前執行的函式
323
		$result["function"]=__FUNCTION__;
323
		$result["function"]=__FUNCTION__;
324
		
324
 
325
		#如果 $conf 不為陣列
325
		#如果 $conf 不為陣列
326
		if(gettype($conf)!="array"){
326
		if(gettype($conf)!="array"){
327
			
327
 
328
			#設置執行失敗
328
			#設置執行失敗
329
			$result["status"]="false";
329
			$result["status"]="false";
330
			
330
 
331
			#設置執行錯誤訊息
331
			#設置執行錯誤訊息
332
			$result["error"][]="\$conf變數須為陣列形態";
332
			$result["error"][]="\$conf變數須為陣列形態";
333
 
333
 
334
			#如果傳入的參數為 null
334
			#如果傳入的參數為 null
335
			if($conf==null){
335
			if($conf==null){
336
				
336
 
337
				#設置執行錯誤訊息
337
				#設置執行錯誤訊息
338
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
338
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
339
				
339
 
340
				}#if end
340
				}#if end
341
 
341
 
342
			#回傳結果
342
			#回傳結果
343
			return $result;
343
			return $result;
344
			
344
 
345
			}#if end
345
			}#if end
346
		
346
 
347
		#初始化要回傳的變數內容
347
		#初始化要回傳的變數內容
348
		$result["content"]=array();
348
		$result["content"]=array();
349
		
349
 
350
		#檢查參數
350
		#檢查參數
351
		#函式說明:
351
		#函式說明:
352
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
352
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
353
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
353
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
354
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
354
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
Line 363... Line 363...
363
		#必填寫的參數:
363
		#必填寫的參數:
364
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
364
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
365
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
365
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
366
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
366
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
367
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("sessionVarNameArray");
367
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("sessionVarNameArray");
368
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
368
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
369
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
369
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
370
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
370
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
371
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
371
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
372
		#可以省略的參數:
372
		#可以省略的參數:
373
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
373
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
374
		#$conf["canBeEmptyString"]="false";
374
		#$conf["canBeEmptyString"]="false";
375
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
375
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
376
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("keyArrayOfGotSessionValue","unsetSessionVars");
376
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("keyArrayOfGotSessionValue","unsetSessionVars");
377
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
377
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
378
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array","string");
378
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array","string");
379
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
379
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
380
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,"true");
380
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,"true");
381
		#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
381
		#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
382
		#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("sessionArrayName","sessionArrayValue");
382
		#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("sessionArrayName","sessionArrayValue");
383
		#參考資料來源:
383
		#參考資料來源:
384
		#array_keys=>http://php.net/manual/en/function.array-keys.php
384
		#array_keys=>http://php.net/manual/en/function.array-keys.php
385
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
385
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
386
		unset($conf["variableCheck::checkArguments"]);
386
		unset($conf["variableCheck::checkArguments"]);
387
		
387
 
388
		#如果檢查參數失敗
388
		#如果檢查參數失敗
389
		if($checkArguments["status"]=="false"){
389
		if($checkArguments["status"]=="false"){
390
			
390
 
391
			#設置執行失敗
391
			#設置執行失敗
392
			$result["status"]="false";
392
			$result["status"]="false";
393
			
393
 
394
			#設置執行錯誤訊息
394
			#設置執行錯誤訊息
395
			$result["error"]=$checkArguments;
395
			$result["error"]=$checkArguments;
396
 
396
 
397
			#回傳結果
397
			#回傳結果
398
			return $result;
398
			return $result;
399
			
399
 
400
			}#if end
400
			}#if end
401
			
401
 
402
		#檢查參數不通過
402
		#檢查參數不通過
403
		if($checkArguments["passed"]=="false"){
403
		if($checkArguments["passed"]=="false"){
404
			
404
 
405
			#設置執行失敗
405
			#設置執行失敗
406
			$result["status"]="false";
406
			$result["status"]="false";
407
			
407
 
408
			#設置執行錯誤訊息
408
			#設置執行錯誤訊息
409
			$result["error"]=$checkArguments;
409
			$result["error"]=$checkArguments;
410
 
410
 
411
			#回傳結果
411
			#回傳結果
412
			return $result;
412
			return $result;
413
			
413
 
414
			}#if end
414
			}#if end
415
					
415
 
416
		#有幾個session變數要接收就執行幾次
416
		#有幾個session變數要接收就執行幾次
417
		for($i=0;$i<count($conf["sessionVarNameArray"]);$i++){
417
		for($i=0;$i<count($conf["sessionVarNameArray"]);$i++){
418
			
418
 
419
			#函式說明:
419
			#函式說明:
420
			#取得session變數裡面的數值,然後卸除該session變數
420
			#取得session變數裡面的數值,然後卸除該session變數
421
			#回傳結果:
421
			#回傳結果:
422
			#$result["status"],執行是否正常,"true"代表正常,"false"代表有誤.
422
			#$result["status"],執行是否正常,"true"代表正常,"false"代表有誤.
423
			#$result["error"],錯誤訊息
423
			#$result["error"],錯誤訊息
Line 431... Line 431...
431
			#http://stackoverflow.com/questions/8971261/php-5-4-call-time-pass-by-reference-easy-fix-available
431
			#http://stackoverflow.com/questions/8971261/php-5-4-call-time-pass-by-reference-easy-fix-available
432
			#可變變數->http://emn178.pixnet.net/blog/post/80119035-php%E6%95%99%E5%AD%B8---%E8%AE%8A%E6%95%B8%28variables%29
432
			#可變變數->http://emn178.pixnet.net/blog/post/80119035-php%E6%95%99%E5%AD%B8---%E8%AE%8A%E6%95%B8%28variables%29
433
			#卸除參考的原始變數->http://stackoverflow.com/questions/6654538/php-function-to-unset-variables-passed-by-reference
433
			#卸除參考的原始變數->http://stackoverflow.com/questions/6654538/php-function-to-unset-variables-passed-by-reference
434
			$getSessionValueResult=session::getSessionValue($conf["session.getSessionValue"]);
434
			$getSessionValueResult=session::getSessionValue($conf["session.getSessionValue"]);
435
			unset($conf["session.getSessionValue"]);
435
			unset($conf["session.getSessionValue"]);
436
			
436
 
437
			#debug
437
			#debug
438
			#var_dump($getSessionValueResult);
438
			#var_dump($getSessionValueResult);
439
			
439
 
440
			#如果取得session變數失敗
440
			#如果取得session變數失敗
441
			if($getSessionValueResult["status"]=="false"){
441
			if($getSessionValueResult["status"]=="false"){
442
				
442
 
443
				#設置執行不正常
443
				#設置執行不正常
444
				$result["status"]="false";
444
				$result["status"]="false";
445
				
445
 
446
				#設置執行錯誤的訊息
446
				#設置執行錯誤的訊息
447
				$result["error"]=$checkResult;
447
				$result["error"]=$checkResult;
448
				
448
 
449
				#回傳結果
449
				#回傳結果
450
				return $result;
450
				return $result;
451
				
451
 
452
				}#if end
452
				}#if end
453
				
453
 
454
			#如果該session變數不存在
454
			#如果該session變數不存在
455
			if($getSessionValueResult["founded"]=="false"){
455
			if($getSessionValueResult["founded"]=="false"){
456
				
456
 
457
				#設置該session變數不存在
457
				#設置該session變數不存在
458
				$result["founded"][$i]="false";
458
				$result["founded"][$i]="false";
459
				
459
 
460
				}#if end
460
				}#if end
461
				
461
 
462
			#反之session變數存在
462
			#反之session變數存在
463
			else{
463
			else{
464
				
464
 
465
				#設置該session變數存在
465
				#設置該session變數存在
466
				$result["founded"][$i]="true";
466
				$result["founded"][$i]="true";
467
				
467
 
468
				#取得session變數的內容
468
				#取得session變數的內容
469
				$result["content"][$i]=$getSessionValueResult["content"];
469
				$result["content"][$i]=$getSessionValueResult["content"];
470
				
470
 
471
				}#else end
471
				}#else end
472
			
472
 
473
			}#for end
473
			}#for end
474
		
474
 
475
		#如果 $conf["keyArrayOfGotSessionValue"] 有設置
475
		#如果 $conf["keyArrayOfGotSessionValue"] 有設置
476
		if(isset($conf["keyArrayOfGotSessionValue"])){
476
		if(isset($conf["keyArrayOfGotSessionValue"])){
477
			
477
 
478
			#如果 $conf["keyArrayOfGotSessionValue"] 與 $conf["sessionVarNameArray"] 的元素數量相等
478
			#如果 $conf["keyArrayOfGotSessionValue"] 與 $conf["sessionVarNameArray"] 的元素數量相等
479
			if(count($conf["keyArrayOfGotSessionValue"])==count($conf["sessionVarNameArray"])){
479
			if(count($conf["keyArrayOfGotSessionValue"])==count($conf["sessionVarNameArray"])){
480
				
480
 
481
				#$conf["keyArrayOfGotSessionValue"]有幾個元素就執行幾次
481
				#$conf["keyArrayOfGotSessionValue"]有幾個元素就執行幾次
482
				for($i=0;$i<count($conf["keyArrayOfGotSessionValue"]);$i++){
482
				for($i=0;$i<count($conf["keyArrayOfGotSessionValue"]);$i++){
483
					
483
 
484
					#給與新key
484
					#給與新key
485
					$result["founded"][$conf["keyArrayOfGotSessionValue"][$i]]=$result["founded"][$i];
485
					$result["founded"][$conf["keyArrayOfGotSessionValue"][$i]]=$result["founded"][$i];
486
					
486
 
487
					#如果存在session變數
487
					#如果存在session變數
488
					if(isset($result["content"][$i])){
488
					if(isset($result["content"][$i])){
489
					
489
 
490
						#給與新key
490
						#給與新key
491
						$result["content"][$conf["keyArrayOfGotSessionValue"][$i]]=$result["content"][$i];
491
						$result["content"][$conf["keyArrayOfGotSessionValue"][$i]]=$result["content"][$i];
492
					
492
 
493
						#移除舊key的變數
493
						#移除舊key的變數
494
						unset($result["content"][$i]);
494
						unset($result["content"][$i]);
495
					
495
 
496
						}#if end
496
						}#if end
497
					
497
 
498
					#移除舊key的變數
498
					#移除舊key的變數
499
					unset($result["founded"][$i]);
499
					unset($result["founded"][$i]);
500
					
500
 
501
					}#for end 
501
					}#for end
502
					
502
 
503
				}#if end
503
				}#if end
504
				
504
 
505
			#反之 $conf["keyArrayOfGotSessionValue"] 與 $conf["sessionVarNameArray"] 的元素數量不相等
505
			#反之 $conf["keyArrayOfGotSessionValue"] 與 $conf["sessionVarNameArray"] 的元素數量不相等
506
			else{
506
			else{
507
				
507
 
508
				#設置執行不正常
508
				#設置執行不正常
509
				$result["status"]="false";
509
				$result["status"]="false";
510
				
510
 
511
				#設置執行錯誤的訊息
511
				#設置執行錯誤的訊息
512
				$result["error"][]="\$conf[\"keyArrayOfGotSessionValue\"] 與 \$conf[\"sessionVarNameArray\"] 的元素數量不相等";
512
				$result["error"][]="\$conf[\"keyArrayOfGotSessionValue\"] 與 \$conf[\"sessionVarNameArray\"] 的元素數量不相等";
513
				
513
 
514
				#回傳結果
514
				#回傳結果
515
				return $result;
515
				return $result;
516
				
516
 
517
				}#else end
517
				}#else end
518
			
518
 
519
			}#if end
519
			}#if end
520
		
520
 
521
		#如果有一個session變數沒找到
521
		#如果有一個session變數沒找到
522
		foreach($result["founded"] as $value){
522
		foreach($result["founded"] as $value){
523
			
523
 
524
			#如果等於 "false"
524
			#如果等於 "false"
525
			if($value=="false"){
525
			if($value=="false"){
526
				
526
 
527
				#設置沒有每個session變數都抓到
527
				#設置沒有每個session變數都抓到
528
				$result["foundedAll"]="false";
528
				$result["foundedAll"]="false";
529
				
529
 
530
				#跳出foreach
530
				#跳出foreach
531
				break;
531
				break;
532
				
532
 
533
				}#if end
533
				}#if end
534
			
534
 
535
			}#foreach end
535
			}#foreach end
536
		
536
 
537
		#如果 $result["foundedAll"] 沒有設置
537
		#如果 $result["foundedAll"] 沒有設置
538
		if(!isset($result["foundedAll"])){
538
		if(!isset($result["foundedAll"])){
539
			
539
 
540
			#設爲 "true"
540
			#設爲 "true"
541
			$result["foundedAll"]="true";
541
			$result["foundedAll"]="true";
542
			
542
 
543
			}#if end
543
			}#if end
544
		
544
 
545
		#設置執行結果爲正常
545
		#設置執行結果爲正常
546
		$result["status"]="true";
546
		$result["status"]="true";
547
		
547
 
548
		#回傳結果
548
		#回傳結果
549
		return $result;
549
		return $result;
550
		
550
 
551
		}#funtion getMultiSessionValues end
551
		}#funtion getMultiSessionValues end
552
		
552
 
553
	/*
553
	/*
554
	#函式說明:
554
	#函式說明:
555
	#建立session變數,並指派其內容
555
	#建立session變數,並指派其內容
556
	#回傳結果:
556
	#回傳結果:
557
	#$result["status"],執行狀態,"true"代表執行成功;"false"代表執行失敗.
557
	#$result["status"],執行狀態,"true"代表執行成功;"false"代表執行失敗.
Line 559... Line 559...
559
	#$result["argu"],使用的參數.
559
	#$result["argu"],使用的參數.
560
	#$result["function"],當前執行的函數名稱.
560
	#$result["function"],當前執行的函數名稱.
561
	#必填參數:
561
	#必填參數:
562
	#$conf["sessionName"],字串,要建立的session變數名稱,建議可採用name1.name2.name3的格式.
562
	#$conf["sessionName"],字串,要建立的session變數名稱,建議可採用name1.name2.name3的格式.
563
	$conf["sessionName"]="";
563
	$conf["sessionName"]="";
564
	#可省略參數: 
564
	#可省略參數:
565
	#$conf["sessionValue"],字串,session變數的內容,預設為"".
565
	#$conf["sessionValue"],字串,session變數的內容,預設為"".
566
	#$conf["sessionValue"]="";
566
	#$conf["sessionValue"]="";
567
	#參考資料:
567
	#參考資料:
568
	#無.
568
	#無.
569
	#備註:
569
	#備註:
570
	#無.
570
	#無.
571
	*/
571
	*/
572
	public static function create(&$conf){
572
	public static function create(&$conf){
573
		
573
 
574
		#初始化要回傳的變數
574
		#初始化要回傳的變數
575
		$result=array();
575
		$result=array();
576
		
576
 
577
		#儲存使用的參數
577
		#儲存使用的參數
578
		$result["argu"]=$conf;
578
		$result["argu"]=$conf;
579
		
579
 
580
		#記錄當前執行的函數名稱
580
		#記錄當前執行的函數名稱
581
		$result["function"]=__FUNCTION__;
581
		$result["function"]=__FUNCTION__;
582
		
582
 
583
		#如果 $conf 不為陣列
583
		#如果 $conf 不為陣列
584
		if(gettype($conf)!="array"){
584
		if(gettype($conf)!="array"){
585
			
585
 
586
			#設置執行失敗
586
			#設置執行失敗
587
			$result["status"]="false";
587
			$result["status"]="false";
588
			
588
 
589
			#設置執行錯誤訊息
589
			#設置執行錯誤訊息
590
			$result["error"][]="\$conf變數須為陣列形態";
590
			$result["error"][]="\$conf變數須為陣列形態";
591
 
591
 
592
			#如果傳入的參數為 null
592
			#如果傳入的參數為 null
593
			if($conf==null){
593
			if($conf==null){
594
				
594
 
595
				#設置執行錯誤訊息
595
				#設置執行錯誤訊息
596
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
596
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
597
				
597
 
598
				}#if end
598
				}#if end
599
 
599
 
600
			#回傳結果
600
			#回傳結果
601
			return $result;
601
			return $result;
602
			
602
 
603
			}#if end
603
			}#if end
604
		
604
 
605
		#檢查參數
605
		#檢查參數
606
		#函式說明:
606
		#函式說明:
607
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
607
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
608
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
608
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
609
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
609
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
Line 615... Line 615...
615
		#必填寫的參數:
615
		#必填寫的參數:
616
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
616
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
617
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
617
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
618
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
618
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
619
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("sessionName");
619
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("sessionName");
620
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double"); 
620
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
621
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
621
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
622
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
622
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
623
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
623
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
624
		#可以省略的參數:
624
		#可以省略的參數:
625
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
625
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
626
		#$conf["canBeEmptyString"]="false";
626
		#$conf["canBeEmptyString"]="false";
627
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
627
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
628
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("sessionValue");
628
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("sessionValue");
629
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
629
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
630
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array();
630
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array();
631
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
631
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
632
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("");
632
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("");
633
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
633
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
634
		#$conf["arrayCountEqualCheck"][]=array();
634
		#$conf["arrayCountEqualCheck"][]=array();
635
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
635
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
636
		unset($conf["variableCheck::checkArguments"]);
636
		unset($conf["variableCheck::checkArguments"]);
637
		
637
 
638
		#如果檢查失敗
638
		#如果檢查失敗
639
		if($checkResult["status"]=="false"){
639
		if($checkResult["status"]=="false"){
640
			
640
 
641
			#設置執行錯誤的識別
641
			#設置執行錯誤的識別
642
			$result["status"]="false";
642
			$result["status"]="false";
643
			
643
 
644
			#設置執行失敗的錯誤訊息
644
			#設置執行失敗的錯誤訊息
645
			$result["error"]=$checkResult;
645
			$result["error"]=$checkResult;
646
			
646
 
647
			#回傳結果
647
			#回傳結果
648
			return $result;
648
			return $result;
649
			
649
 
650
			}#if end
650
			}#if end
651
		
651
 
652
		#如果檢查不通過
652
		#如果檢查不通過
653
		if($checkResult["passed"]=="false"){
653
		if($checkResult["passed"]=="false"){
654
			
654
 
655
			#設置執行錯誤的識別
655
			#設置執行錯誤的識別
656
			$result["status"]="false";
656
			$result["status"]="false";
657
			
657
 
658
			#設置執行失敗的錯誤訊息
658
			#設置執行失敗的錯誤訊息
659
			$result["error"]=$checkResult;
659
			$result["error"]=$checkResult;
660
			
660
 
661
			#回傳結果
661
			#回傳結果
662
			return $result;
662
			return $result;
663
			
663
 
664
			}#if end
664
			}#if end
665
		
665
 
666
		#建立session變數,並指派其直
666
		#建立session變數,並指派其直
667
		$_SESSION[$conf["sessionName"]]=$conf["sessionValue"];
667
		$_SESSION[$conf["sessionName"]]=$conf["sessionValue"];
668
		
668
 
669
		#設置執行成功的辨識訊息
669
		#設置執行成功的辨識訊息
670
		$result["status"]="true";
670
		$result["status"]="true";
671
		
671
 
672
		#回傳結果
672
		#回傳結果
673
		return $result;
673
		return $result;
674
		
674
 
675
		}#function create end
675
		}#function create end
676
	
676
 
677
	/*
677
	/*
678
	#函式說明:
678
	#函式說明:
679
	#記錄當前訪問的頁面,並且保存上一個訪問的頁面.
679
	#記錄當前訪問的頁面,並且保存上一個訪問的頁面.
680
	#回傳結果:
680
	#回傳結果:
681
	#$result["status"],執行是否正常,"true"代表正常,"false"代表有誤.
681
	#$result["status"],執行是否正常,"true"代表正常,"false"代表有誤.
Line 696... Line 696...
696
	*/
696
	*/
697
	public static function getPreAndNowPosition(){
697
	public static function getPreAndNowPosition(){
698
 
698
 
699
		#初始化要回傳的變數
699
		#初始化要回傳的變數
700
		$result=array();
700
		$result=array();
701
		
701
 
702
		#設置當前執行的函式
702
		#設置當前執行的函式
703
		$result["function"]=__FUNCTION__;
703
		$result["function"]=__FUNCTION__;
704
		
704
 
705
		#如果 $conf 不為陣列
705
		#如果 $conf 不為陣列
706
		if(gettype($conf)!="array"){
706
		if(gettype($conf)!="array"){
707
			
707
 
708
			#設置執行失敗
708
			#設置執行失敗
709
			$result["status"]="false";
709
			$result["status"]="false";
710
			
710
 
711
			#設置執行錯誤訊息
711
			#設置執行錯誤訊息
712
			$result["error"][]="\$conf變數須為陣列形態";
712
			$result["error"][]="\$conf變數須為陣列形態";
713
 
713
 
714
			#如果傳入的參數為 null
714
			#如果傳入的參數為 null
715
			if($conf==null){
715
			if($conf==null){
716
				
716
 
717
				#設置執行錯誤訊息
717
				#設置執行錯誤訊息
718
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
718
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
719
				
719
 
720
				}#if end
720
				}#if end
721
 
721
 
722
			#回傳結果
722
			#回傳結果
723
			return $result;
723
			return $result;
724
			
724
 
725
			}#if end
725
			}#if end
726
 
726
 
727
		#設置當前執行的函式
727
		#設置當前執行的函式
728
		$result["function"]=__FUNCTION__;
728
		$result["function"]=__FUNCTION__;
729
 
729
 
730
		#如果 $_SESSION["session"]["getPreAndNowPosition"]["prePlace"] 不存在
730
		#如果 $_SESSION["session"]["getPreAndNowPosition"]["prePlace"] 不存在
731
		if(!isset($_SESSION["session"]["getPreAndNowPosition"]["prePlace"])){
731
		if(!isset($_SESSION["session"]["getPreAndNowPosition"]["prePlace"])){
732
 
732
 
733
			#將之設為 ""
733
			#將之設為 ""
734
			$_SESSION["session"]["getPreAndNowPosition"]["prePlace"]="";
734
			$_SESSION["session"]["getPreAndNowPosition"]["prePlace"]="";
735
			
735
 
736
			}#if end
736
			}#if end
737
		
737
 
738
		#如果 $_SESSION["session"]["getPreAndNowPosition"]["nowPlace"] 存在
738
		#如果 $_SESSION["session"]["getPreAndNowPosition"]["nowPlace"] 存在
739
		if(isset($_SESSION["session"]["getPreAndNowPosition"]["nowPlace"])){
739
		if(isset($_SESSION["session"]["getPreAndNowPosition"]["nowPlace"])){
740
			
740
 
741
			#設置 $_SESSION["session"]["getPreAndNowPosition"]["prePlace"] 為 $_SESSION["session"]["getPreAndNowPosition"]["nowPlace"]
741
			#設置 $_SESSION["session"]["getPreAndNowPosition"]["prePlace"] 為 $_SESSION["session"]["getPreAndNowPosition"]["nowPlace"]
742
			$_SESSION["session"]["getPreAndNowPosition"]["prePlace"]=$_SESSION["session"]["getPreAndNowPosition"]["nowPlace"];
742
			$_SESSION["session"]["getPreAndNowPosition"]["prePlace"]=$_SESSION["session"]["getPreAndNowPosition"]["nowPlace"];
743
				
743
 
744
			#設置 $_SESSION["session"]["getPreAndNowPosition"]["nowPlace"] 為 $_SERVER["PHP_SELF"]
744
			#設置 $_SESSION["session"]["getPreAndNowPosition"]["nowPlace"] 為 $_SERVER["PHP_SELF"]
745
			$_SESSION["session"]["getPreAndNowPosition"]["nowPlace"]=$_SERVER["PHP_SELF"];
745
			$_SESSION["session"]["getPreAndNowPosition"]["nowPlace"]=$_SERVER["PHP_SELF"];
746
				
746
 
747
			}#if end
747
			}#if end
748
			
748
 
749
		#反之 $_SESSION["session"]["getPreAndNowPosition"]["nowPlace"] 沒有設置
749
		#反之 $_SESSION["session"]["getPreAndNowPosition"]["nowPlace"] 沒有設置
750
		else{
750
		else{
751
		
751
 
752
			#將 $_SESSION["session"]["getPreAndNowPosition"]["nowPlace"] 設為 $_SERVER["PHP_SELF"]
752
			#將 $_SESSION["session"]["getPreAndNowPosition"]["nowPlace"] 設為 $_SERVER["PHP_SELF"]
753
			$_SESSION["session"]["getPreAndNowPosition"]["nowPlace"]=$_SERVER["PHP_SELF"];
753
			$_SESSION["session"]["getPreAndNowPosition"]["nowPlace"]=$_SERVER["PHP_SELF"];
754
		
754
 
755
			}#else end
755
			}#else end
756
		
756
 
757
		#記錄要回傳的內容
757
		#記錄要回傳的內容
758
		
758
 
759
		#記錄當前瀏覽的目錄
759
		#記錄當前瀏覽的目錄
760
		#函式說明:
760
		#函式說明:
761
		#將固定格式的字串分開,並回傳分開的結果。
761
		#將固定格式的字串分開,並回傳分開的結果。
762
		#回傳的參數:
762
		#回傳的參數:
763
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
763
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 769... Line 769...
769
		#必填參數:
769
		#必填參數:
770
		$conf["stringIn"]=$_SESSION["session"]["getPreAndNowPosition"]["nowPlace"];#要處理的字串。
770
		$conf["stringIn"]=$_SESSION["session"]["getPreAndNowPosition"]["nowPlace"];#要處理的字串。
771
		$conf["spiltSymbol"]="/";#爲以哪個符號作爲分割
771
		$conf["spiltSymbol"]="/";#爲以哪個符號作爲分割
772
		$processedStr=stringProcess::spiltString($conf);
772
		$processedStr=stringProcess::spiltString($conf);
773
		unset($conf);
773
		unset($conf);
774
		
774
 
775
		#如果處理字串失敗
775
		#如果處理字串失敗
776
		if($processedStr["status"]=="false"){
776
		if($processedStr["status"]=="false"){
777
			
777
 
778
			#設置錯誤識別
778
			#設置錯誤識別
779
			$result["status"]="false";
779
			$result["status"]="false";
780
			
780
 
781
			#設置錯誤訊息
781
			#設置錯誤訊息
782
			$result["error"]=$processedStr;
782
			$result["error"]=$processedStr;
783
			
783
 
784
			#回傳結果
784
			#回傳結果
785
			return $result;
785
			return $result;
786
			
786
 
787
			}#if end
787
			}#if end
788
		
788
 
789
		#初始化 $result["phpNowViewed"] 為 ""
789
		#初始化 $result["phpNowViewed"] 為 ""
790
		$result["nowPosition"]="";
790
		$result["nowPosition"]="";
791
		
791
 
792
		#針對 $processedStr["dataCounts"] 的數字來合併目錄
792
		#針對 $processedStr["dataCounts"] 的數字來合併目錄
793
		for($i=0;$i<$processedStr["dataCounts"]-1;$i++){
793
		for($i=0;$i<$processedStr["dataCounts"]-1;$i++){
794
			
794
 
795
			#合併目錄
795
			#合併目錄
796
			$result["nowPosition"]=$result["nowPosition"].$processedStr["dataArray"][$i]."/";
796
			$result["nowPosition"]=$result["nowPosition"].$processedStr["dataArray"][$i]."/";
797
			
797
 
798
			}#for end
798
			}#for end
799
		
799
 
800
		#記錄上一個瀏覽的目錄
800
		#記錄上一個瀏覽的目錄
801
		#函式說明:
801
		#函式說明:
802
		#將固定格式的字串分開,並回傳分開的結果。
802
		#將固定格式的字串分開,並回傳分開的結果。
803
		#回傳的參數:
803
		#回傳的參數:
804
		#$result["oriStr"],要分割的原始字串內容
804
		#$result["oriStr"],要分割的原始字串內容
Line 807... Line 807...
807
		#必填參數:
807
		#必填參數:
808
		$conf["stringIn"]=$_SESSION["session"]["getPreAndNowPosition"]["prePlace"];#要處理的字串。
808
		$conf["stringIn"]=$_SESSION["session"]["getPreAndNowPosition"]["prePlace"];#要處理的字串。
809
		$conf["spiltSymbol"]="/";#爲以哪個符號作爲分割
809
		$conf["spiltSymbol"]="/";#爲以哪個符號作爲分割
810
		$processedStr=stringProcess::spiltString($conf);
810
		$processedStr=stringProcess::spiltString($conf);
811
		unset($conf);
811
		unset($conf);
812
		
812
 
813
		#如果處理字串失敗
813
		#如果處理字串失敗
814
		if($processedStr["status"]=="false"){
814
		if($processedStr["status"]=="false"){
815
			
815
 
816
			#設置錯誤識別
816
			#設置錯誤識別
817
			$result["status"]="false";
817
			$result["status"]="false";
818
			
818
 
819
			#設置錯誤訊息
819
			#設置錯誤訊息
820
			$result["error"]=$processedStr;
820
			$result["error"]=$processedStr;
821
			
821
 
822
			#回傳結果
822
			#回傳結果
823
			return $result;
823
			return $result;
824
			
824
 
825
			}#if end
825
			}#if end
826
		
826
 
827
		#初始化 $result["prePosition"] 為 ""
827
		#初始化 $result["prePosition"] 為 ""
828
		$result["prePosition"]="";
828
		$result["prePosition"]="";
829
		
829
 
830
		#針對 $processedStr["dataCounts"] 的數字來合併目錄
830
		#針對 $processedStr["dataCounts"] 的數字來合併目錄
831
		for($i=0;$i<$processedStr["dataCounts"]-1;$i++){
831
		for($i=0;$i<$processedStr["dataCounts"]-1;$i++){
832
			
832
 
833
			#合併目錄
833
			#合併目錄
834
			$result["prePosition"]=$result["prePosition"].$processedStr["dataArray"][$i]."/";
834
			$result["prePosition"]=$result["prePosition"].$processedStr["dataArray"][$i]."/";
835
			
835
 
836
			}#for end
836
			}#for end
837
		
837
 
838
		#記錄當前瀏覽的檔案名稱
838
		#記錄當前瀏覽的檔案名稱
839
		$result["phpNowViewed"]=basename($_SESSION["session"]["getPreAndNowPosition"]["nowPlace"]);
839
		$result["phpNowViewed"]=basename($_SESSION["session"]["getPreAndNowPosition"]["nowPlace"]);
840
		
840
 
841
		#記錄上一筆瀏覽的檔案名稱
841
		#記錄上一筆瀏覽的檔案名稱
842
		$result["phpPreViewed"]=basename($_SESSION["session"]["getPreAndNowPosition"]["prePlace"]);
842
		$result["phpPreViewed"]=basename($_SESSION["session"]["getPreAndNowPosition"]["prePlace"]);
843
		
843
 
844
		#設置執行正常
844
		#設置執行正常
845
		$result["status"]="true";
845
		$result["status"]="true";
846
		
846
 
847
		#回傳結果
847
		#回傳結果
848
		return $result;
848
		return $result;
849
			
849
 
850
		}#function getPreAndNowPosition end
850
		}#function getPreAndNowPosition end
851
	
851
 
852
	/*
852
	/*
853
	#函式說明:
853
	#函式說明:
854
	#建立多個session變數
854
	#建立多個session變數
855
	#回傳結果:
855
	#回傳結果:
856
	#$result["status"],執行狀態,"true"代表執行成功;"false"代表執行失敗.
856
	#$result["status"],執行狀態,"true"代表執行成功;"false"代表執行失敗.
Line 867... Line 867...
867
	#無.
867
	#無.
868
	#備註:
868
	#備註:
869
	#無.
869
	#無.
870
	*/
870
	*/
871
	public static function createMulti(&$conf){
871
	public static function createMulti(&$conf){
872
		
872
 
873
		#初始化要回傳的變數
873
		#初始化要回傳的變數
874
		$result=array();
874
		$result=array();
875
		
875
 
876
		#設置當前執行的函式
876
		#設置當前執行的函式
877
		$result["function"]=__FUNCTION__;
877
		$result["function"]=__FUNCTION__;
878
		
878
 
879
		#如果 $conf 不為陣列
879
		#如果 $conf 不為陣列
880
		if(gettype($conf)!=="array"){
880
		if(gettype($conf)!=="array"){
881
			
881
 
882
			#設置執行失敗
882
			#設置執行失敗
883
			$result["status"]="false";
883
			$result["status"]="false";
884
			
884
 
885
			#設置執行錯誤訊息
885
			#設置執行錯誤訊息
886
			$result["error"][]="\$conf變數須為陣列形態";
886
			$result["error"][]="\$conf變數須為陣列形態";
887
 
887
 
888
			#如果傳入的參數為 null
888
			#如果傳入的參數為 null
889
			if($conf===null){
889
			if($conf===null){
890
				
890
 
891
				#設置執行錯誤訊息
891
				#設置執行錯誤訊息
892
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
892
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
893
				
893
 
894
				}#if end
894
				}#if end
895
 
895
 
896
			#回傳結果
896
			#回傳結果
897
			return $result;
897
			return $result;
898
			
898
 
899
			}#if end
899
			}#if end
900
		
900
 
901
		#檢查參數
901
		#檢查參數
902
		#函式說明:
902
		#函式說明:
903
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
903
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
904
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
904
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
905
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
905
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
Line 914... Line 914...
914
		#必填寫的參數:
914
		#必填寫的參數:
915
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
915
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
916
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
916
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
917
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
917
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
918
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("sessionArrayName","sessionArrayValue");
918
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("sessionArrayName","sessionArrayValue");
919
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
919
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
920
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","array");
920
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","array");
921
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
921
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
922
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
922
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
923
		#可以省略的參數:
923
		#可以省略的參數:
924
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
924
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
925
		#$conf["canBeEmptyString"]="false";
925
		#$conf["canBeEmptyString"]="false";
926
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
926
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
927
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array();
927
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array();
928
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
928
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
929
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array();
929
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array();
930
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
930
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
931
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("");
931
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("");
932
		#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
932
		#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
933
		$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("sessionArrayName","sessionArrayValue");
933
		$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("sessionArrayName","sessionArrayValue");
934
		#參考資料來源:
934
		#參考資料來源:
935
		#array_keys=>http://php.net/manual/en/function.array-keys.php
935
		#array_keys=>http://php.net/manual/en/function.array-keys.php
936
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
936
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
937
		unset($conf["variableCheck::checkArguments"]);
937
		unset($conf["variableCheck::checkArguments"]);
938
		
938
 
939
		#如果檢查參數失敗
939
		#如果檢查參數失敗
940
		if($checkArguments["status"]=="false"){
940
		if($checkArguments["status"]=="false"){
941
			
941
 
942
			#設置執行失敗
942
			#設置執行失敗
943
			$result["status"]="false";
943
			$result["status"]="false";
944
			
944
 
945
			#設置執行錯誤訊息
945
			#設置執行錯誤訊息
946
			$result["error"]=$checkArguments;
946
			$result["error"]=$checkArguments;
947
 
947
 
948
			#回傳結果
948
			#回傳結果
949
			return $result;
949
			return $result;
950
			
950
 
951
			}#if end
951
			}#if end
952
			
952
 
953
		#檢查參數不通過
953
		#檢查參數不通過
954
		if($checkArguments["passed"]=="false"){
954
		if($checkArguments["passed"]=="false"){
955
			
955
 
956
			#設置執行失敗
956
			#設置執行失敗
957
			$result["status"]="false";
957
			$result["status"]="false";
958
			
958
 
959
			#設置執行錯誤訊息
959
			#設置執行錯誤訊息
960
			$result["error"]=$checkArguments;
960
			$result["error"]=$checkArguments;
961
 
961
 
962
			#回傳結果
962
			#回傳結果
963
			return $result;
963
			return $result;
964
			
964
 
965
			}#if end
965
			}#if end
966
				
966
 
967
		#執行迴圈 count($conf["sessionArrayName"]) 次
967
		#執行迴圈 count($conf["sessionArrayName"]) 次
968
		for($i=0;$i<count($conf["sessionArrayName"]);$i++){
968
		for($i=0;$i<count($conf["sessionArrayName"]);$i++){
969
			
969
 
970
			#函式說明:
970
			#函式說明:
971
			#建立session變數,並指派其內容
971
			#建立session變數,並指派其內容
972
			#回傳結果:
972
			#回傳結果:
973
			#$result["status"],執行狀態,"true"代表執行成功;"false"代表執行失敗。
973
			#$result["status"],執行狀態,"true"代表執行成功;"false"代表執行失敗。
974
			#$result["error"],錯誤訊息陣列
974
			#$result["error"],錯誤訊息陣列
975
			#必填參數:
975
			#必填參數:
976
			$conf["session.create"]["sessionName"]=$conf["sessionArrayName"][$i];#要建立的session變數名稱,建議可採用name1.name2.name3的格式。
976
			$conf["session.create"]["sessionName"]=$conf["sessionArrayName"][$i];#要建立的session變數名稱,建議可採用name1.name2.name3的格式。
977
			#可省略參數: 
977
			#可省略參數:
978
			$conf["session.create"]["sessionValue"]=$conf["sessionArrayValue"][$i];#session變數的內容要存放什麼呢? 
978
			$conf["session.create"]["sessionValue"]=$conf["sessionArrayValue"][$i];#session變數的內容要存放什麼呢?
979
			$sessionCreateResult=session::create($conf["session.create"]);
979
			$sessionCreateResult=session::create($conf["session.create"]);
980
			unset($conf["session.create"]);
980
			unset($conf["session.create"]);
981
			
981
 
982
			#如果 建立 session 變數失敗
982
			#如果 建立 session 變數失敗
983
			if($sessionCreateResult["status"]=="false"){
983
			if($sessionCreateResult["status"]=="false"){
984
				
984
 
985
				#設置執行錯誤的識別
985
				#設置執行錯誤的識別
986
				$result["status"]="false";
986
				$result["status"]="false";
987
				
987
 
988
				#設置執行失敗的錯誤訊息
988
				#設置執行失敗的錯誤訊息
989
				$result["error"]=$sessionCreateResult;
989
				$result["error"]=$sessionCreateResult;
990
				
990
 
991
				#回傳結果
991
				#回傳結果
992
				return $result;
992
				return $result;
993
				
993
 
994
				}#if end
994
				}#if end
995
			
995
 
996
			}#for end
996
			}#for end
997
			
997
 
998
		#執行到這邊代表執行成功
998
		#執行到這邊代表執行成功
999
		$result["status"]="true";
999
		$result["status"]="true";
1000
			
1000
 
1001
		#設置執行正常的識別
1001
		#設置執行正常的識別
1002
		$result["status"]="true";
1002
		$result["status"]="true";
1003
			
1003
 
1004
		#回傳結果
1004
		#回傳結果
1005
		return $result;
1005
		return $result;
1006
			
1006
 
1007
		}#function createMulti end
1007
		}#function createMulti end
1008
	
1008
 
1009
	/*
1009
	/*
1010
	#函式說明:
1010
	#函式說明:
1011
	#接收post表單變數後另存成session變數 
1011
	#接收post表單變數後另存成session變數
1012
	#回傳結果:
1012
	#回傳結果:
1013
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1013
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1014
	#$result["errot"],錯誤訊息陣列.
1014
	#$result["errot"],錯誤訊息陣列.
1015
	#$result["function"],當前的函數名稱.
1015
	#$result["function"],當前的函數名稱.
1016
	#必填參數:
1016
	#必填參數:
Line 1027... Line 1027...
1027
	#無.
1027
	#無.
1028
	#備註:
1028
	#備註:
1029
	#無.
1029
	#無.
1030
	*/
1030
	*/
1031
	public static function formVarToSession(&$conf){
1031
	public static function formVarToSession(&$conf){
1032
		
1032
 
1033
		#初始化要回傳的變數
1033
		#初始化要回傳的變數
1034
		$result=array();
1034
		$result=array();
1035
		
1035
 
1036
		#設置當前執行的函式
1036
		#設置當前執行的函式
1037
		$result["function"]=__FUNCTION__;
1037
		$result["function"]=__FUNCTION__;
1038
		
1038
 
1039
		#如果 $conf 不為陣列
1039
		#如果 $conf 不為陣列
1040
		if(gettype($conf)!="array"){
1040
		if(gettype($conf)!="array"){
1041
			
1041
 
1042
			#設置執行失敗
1042
			#設置執行失敗
1043
			$result["status"]="false";
1043
			$result["status"]="false";
1044
			
1044
 
1045
			#設置執行錯誤訊息
1045
			#設置執行錯誤訊息
1046
			$result["error"][]="\$conf變數須為陣列形態";
1046
			$result["error"][]="\$conf變數須為陣列形態";
1047
 
1047
 
1048
			#如果傳入的參數為 null
1048
			#如果傳入的參數為 null
1049
			if($conf==null){
1049
			if($conf==null){
1050
				
1050
 
1051
				#設置執行錯誤訊息
1051
				#設置執行錯誤訊息
1052
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1052
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1053
				
1053
 
1054
				}#if end
1054
				}#if end
1055
 
1055
 
1056
			#回傳結果
1056
			#回傳結果
1057
			return $result;
1057
			return $result;
1058
			
1058
 
1059
			}#if end
1059
			}#if end
1060
		
1060
 
1061
		#檢查參數
1061
		#檢查參數
1062
		#函式說明:
1062
		#函式說明:
1063
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1063
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1064
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1064
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1065
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
1065
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
Line 1071... Line 1071...
1071
		#必填寫的參數:
1071
		#必填寫的參數:
1072
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1072
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1073
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
1073
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
1074
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1074
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1075
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("checkedVarName");
1075
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("checkedVarName");
1076
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double"); 
1076
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
1077
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("array");
1077
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("array");
1078
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1078
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1079
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
1079
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
1080
		#可以省略的參數:
1080
		#可以省略的參數:
1081
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
1081
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
1082
		$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
1082
		$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";
1083
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1083
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1084
		$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("limitPrePage","transferLocation","sessionArrayName");
1084
		$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("limitPrePage","transferLocation","sessionArrayName");
1085
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
1085
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1086
		$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("array","string","array");
1086
		$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("array","string","array");
1087
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
1087
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.
1088
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array(null,null,"\$conf[\"checkedVarName\"]");
1088
		$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array(null,null,"\$conf[\"checkedVarName\"]");
1089
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
1089
		$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
1090
		unset($conf["variableCheck.checkArguments"]);
1090
		unset($conf["variableCheck.checkArguments"]);
1091
		
1091
 
1092
		#如果檢查失敗
1092
		#如果檢查失敗
1093
		if($checkResult["status"]=="false"){
1093
		if($checkResult["status"]=="false"){
1094
			
1094
 
1095
			#設置執行不正常
1095
			#設置執行不正常
1096
			$result["status"]="false";
1096
			$result["status"]="false";
1097
			
1097
 
1098
			#設置錯誤訊息
1098
			#設置錯誤訊息
1099
			$result["error"]=$checkResult;
1099
			$result["error"]=$checkResult;
1100
			
1100
 
1101
			#回傳結果
1101
			#回傳結果
1102
			return $result;
1102
			return $result;
1103
			
1103
 
1104
			}#if end
1104
			}#if end
1105
		
1105
 
1106
		#函式說明:
1106
		#函式說明:
1107
		#可以處理多個透過GET、POST而來的資訊,儲存成變數,同時限定傳送的方法、來源,來增加安全性,檢查有沒有皆收到必須要接收到的變數
1107
		#可以處理多個透過GET、POST而來的資訊,儲存成變數,同時限定傳送的方法、來源,來增加安全性,檢查有沒有皆收到必須要接收到的變數
1108
		#回傳結果:
1108
		#回傳結果:
1109
		#$result["status"],執行是否成功,"true"代表執行成功;"false"代表執行失敗.
1109
		#$result["status"],執行是否成功,"true"代表執行成功;"false"代表執行失敗.
1110
		#$result["error"],錯誤訊息.
1110
		#$result["error"],錯誤訊息.
Line 1117... Line 1117...
1117
		#$conf["method"],字串,傳送過來的資料是用"post/POST"還是"get/GET"?
1117
		#$conf["method"],字串,傳送過來的資料是用"post/POST"還是"get/GET"?
1118
		$conf["form.responseMultiInputDataSecurityEnhance"]["method"]="post";
1118
		$conf["form.responseMultiInputDataSecurityEnhance"]["method"]="post";
1119
		#可省略參數:
1119
		#可省略參數:
1120
		#$conf["allowGet"],字串,是否要允許 get 傳值,"true",代表允許;"false" ,代表不允許,預設爲不允許.
1120
		#$conf["allowGet"],字串,是否要允許 get 傳值,"true",代表允許;"false" ,代表不允許,預設爲不允許.
1121
		#$conf["allowGet"]="true";
1121
		#$conf["allowGet"]="true";
1122
		
1122
 
1123
		#如果有設定 $conf["limitPrePage"]
1123
		#如果有設定 $conf["limitPrePage"]
1124
		if(isset($conf["limitPrePage"])){
1124
		if(isset($conf["limitPrePage"])){
1125
			
1125
 
1126
			#$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"],字串陣列,是否要限定前一頁的網址為哪些,才能接收內容,不符合則轉址.
1126
			#$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"],字串陣列,是否要限定前一頁的網址為哪些,才能接收內容,不符合則轉址.
1127
			$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"]=$conf["limitPrePage"];
1127
			$conf["form.responseMultiInputDataSecurityEnhance"]["limitPrePage"]=$conf["limitPrePage"];
1128
			
1128
 
1129
			}#if end
1129
			}#if end
1130
		
1130
 
1131
		#如果 $conf["transferLocation"] 有設定
1131
		#如果 $conf["transferLocation"] 有設定
1132
		if(isset($conf["transferLocation"])){
1132
		if(isset($conf["transferLocation"])){
1133
			
1133
 
1134
			#$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"],字串,遇到get傳值的時候要轉址到的頁面,預設爲資安素養網"https://isafe.moe.edu.tw/"
1134
			#$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"],字串,遇到get傳值的時候要轉址到的頁面,預設爲資安素養網"https://isafe.moe.edu.tw/"
1135
			$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"]=$conf["transferLocation"];
1135
			$conf["form.responseMultiInputDataSecurityEnhance"]["transferLocation"]=$conf["transferLocation"];
1136
			
1136
 
1137
			}#if end
1137
			}#if end
1138
		
1138
 
1139
		#$conf["ignore"]=字串陣列,如果要接收的變數名稱與該陣列其一元素一樣,則不放進要回傳的變數裏面.
1139
		#$conf["ignore"]=字串陣列,如果要接收的變數名稱與該陣列其一元素一樣,則不放進要回傳的變數裏面.
1140
		#$conf["ignore"]=array();
1140
		#$conf["ignore"]=array();
1141
		#$conf["correctCharacter"]=,字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設爲要進行處理.
1141
		#$conf["correctCharacter"]=,字串,如果爲"false",則不處理可能導致網頁出問題的字串,預設爲要進行處理.
1142
		#$conf["correctCharacter"]="false";
1142
		#$conf["correctCharacter"]="false";
1143
		
1143
 
1144
		#如果 $conf["checkedVarName"] 有設定
1144
		#如果 $conf["checkedVarName"] 有設定
1145
		if(isset($conf["checkedVarName"])){
1145
		if(isset($conf["checkedVarName"])){
1146
		
1146
 
1147
			#$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"],字串陣列,為檢查是否有接收到哪些變數.
1147
			#$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"],字串陣列,為檢查是否有接收到哪些變數.
1148
			$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"]=$conf["checkedVarName"];
1148
			$conf["form.responseMultiInputDataSecurityEnhance"]["checkedVarName"]=$conf["checkedVarName"];
1149
			
1149
 
1150
			}#if end
1150
			}#if end
1151
			
1151
 
1152
		#參考資料來源:
1152
		#參考資料來源:
1153
		#foreach 的用法 -> http://php.net/manual/en/control-structures.foreach.php
1153
		#foreach 的用法 -> http://php.net/manual/en/control-structures.foreach.php
1154
		#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php
1154
		#伺服器端的變數 -> http://php.net/manual/en/reserved.variables.server.php
1155
		#備註:
1155
		#備註:
1156
		#表單變數的名稱若含有「.」,則會變成「-」。
1156
		#表單變數的名稱若含有「.」,則會變成「-」。
1157
		$receivedVar=form::responseMultiInputDataSecurityEnhance($conf["form.responseMultiInputDataSecurityEnhance"]);
1157
		$receivedVar=form::responseMultiInputDataSecurityEnhance($conf["form.responseMultiInputDataSecurityEnhance"]);
1158
		unset($conf["form.responseMultiInputDataSecurityEnhance"]);
1158
		unset($conf["form.responseMultiInputDataSecurityEnhance"]);
1159
		
1159
 
1160
		#如果接受變數失敗
1160
		#如果接受變數失敗
1161
		if($receivedVar["status"]=="false"){
1161
		if($receivedVar["status"]=="false"){
1162
			
1162
 
1163
			#設置執行不正常
1163
			#設置執行不正常
1164
			$result["status"]="false";
1164
			$result["status"]="false";
1165
			
1165
 
1166
			#設置錯誤訊息
1166
			#設置錯誤訊息
1167
			$result["error"]=$receivedVar;
1167
			$result["error"]=$receivedVar;
1168
			
1168
 
1169
			#回傳結果
1169
			#回傳結果
1170
			return $result;
1170
			return $result;
1171
			
1171
 
1172
			}#if end
1172
			}#if end
1173
		
1173
 
1174
		#初始化轉好的session變數數值陣列
1174
		#初始化轉好的session變數數值陣列
1175
		$sessionValueArray=array();
1175
		$sessionValueArray=array();
1176
		
1176
 
1177
		#建立要轉換成session變數的form變數數值陣列
1177
		#建立要轉換成session變數的form變數數值陣列
1178
		foreach($conf["checkedVarName"] as $value){
1178
		foreach($conf["checkedVarName"] as $value){
1179
			
1179
 
1180
			#取得要轉換成session變數的form變數數值內容
1180
			#取得要轉換成session變數的form變數數值內容
1181
			$sessionValueArray[]=$receivedVar["inputDataContent"][$value];
1181
			$sessionValueArray[]=$receivedVar["inputDataContent"][$value];
1182
			
1182
 
1183
			}#foreach end
1183
			}#foreach end
1184
			
1184
 
1185
		#函式說明:
1185
		#函式說明:
1186
		#建立多個session變數
1186
		#建立多個session變數
1187
		#回傳結果:
1187
		#回傳結果:
1188
		#$result["status"],執行狀態,"true"代表執行成功;"false"代表執行失敗.
1188
		#$result["status"],執行狀態,"true"代表執行成功;"false"代表執行失敗.
1189
		#$reuslt["function"],當前執行的函數.
1189
		#$reuslt["function"],當前執行的函數.
Line 1195... Line 1195...
1195
		$conf["session.createMulti"]["sessionArrayValue"]=$sessionValueArray;
1195
		$conf["session.createMulti"]["sessionArrayValue"]=$sessionValueArray;
1196
		#可省略參數:
1196
		#可省略參數:
1197
		#無
1197
		#無
1198
		$createSessionVarStatus=session::createMulti($conf["session.createMulti"]);
1198
		$createSessionVarStatus=session::createMulti($conf["session.createMulti"]);
1199
		unset($conf["session.createMulti"]);
1199
		unset($conf["session.createMulti"]);
1200
		
1200
 
1201
		#如果建立session變數失敗
1201
		#如果建立session變數失敗
1202
		if($createSessionVarStatus["status"]=="false"){
1202
		if($createSessionVarStatus["status"]=="false"){
1203
			
1203
 
1204
			#設置執行不正常
1204
			#設置執行不正常
1205
			$result["status"]="false";
1205
			$result["status"]="false";
1206
			
1206
 
1207
			#設置錯誤訊息
1207
			#設置錯誤訊息
1208
			$reuslt["error"]=$createSessionVarStatus;
1208
			$reuslt["error"]=$createSessionVarStatus;
1209
			
1209
 
1210
			#回傳結果
1210
			#回傳結果
1211
			return $result;
1211
			return $result;
1212
			
1212
 
1213
			}#if end
1213
			}#if end
1214
		
1214
 
1215
		#執行到這邊代表執行正常
1215
		#執行到這邊代表執行正常
1216
		$result["status"]="true";
1216
		$result["status"]="true";
1217
		
1217
 
1218
		#回傳結果
1218
		#回傳結果
1219
		return $result;
1219
		return $result;
1220
		
1220
 
1221
		}#function formVarToSession end
1221
		}#function formVarToSession end
1222
		
1222
 
1223
	/*
1223
	/*
1224
	#函式說明:
1224
	#函式說明:
1225
	#取得指定的session數值 
1225
	#取得指定的session數值
1226
	#回傳結果:
1226
	#回傳結果:
1227
	#$result["status"],執行是否正常,"true"代表正常,"false"代表有誤.
1227
	#$result["status"],執行是否正常,"true"代表正常,"false"代表有誤.
1228
	#$result["error"],錯誤訊息.
1228
	#$result["error"],錯誤訊息.
1229
	#$result["founded"],是否有該session變數,"true"代表有,"false"代表沒有.
1229
	#$result["founded"],是否有該session變數,"true"代表有,"false"代表沒有.
1230
	#$result["content"],session變數的內容
1230
	#$result["content"],session變數的內容
Line 1241... Line 1241...
1241
	#無.
1241
	#無.
1242
	#備註:
1242
	#備註:
1243
	#無.
1243
	#無.
1244
	*/
1244
	*/
1245
	public static function getVal(&$conf){
1245
	public static function getVal(&$conf){
1246
		
1246
 
1247
		#初始化要回傳的結果
1247
		#初始化要回傳的結果
1248
		$result=array();
1248
		$result=array();
1249
 
1249
 
1250
		#取得當前執行的函數名稱
1250
		#取得當前執行的函數名稱
1251
		$result["function"]=__FUNCTION__;
1251
		$result["function"]=__FUNCTION__;
1252
 
1252
 
1253
		#如果沒有參數
1253
		#如果沒有參數
1254
		if(func_num_args()==0){
1254
		if(func_num_args()==0){
1255
			
1255
 
1256
			#設置執行失敗
1256
			#設置執行失敗
1257
			$result["status"]="false";
1257
			$result["status"]="false";
1258
			
1258
 
1259
			#設置執行錯誤訊息
1259
			#設置執行錯誤訊息
1260
			$result["error"]="函數".$result["function"]."需要參數";
1260
			$result["error"]="函數".$result["function"]."需要參數";
1261
			
1261
 
1262
			#回傳結果
1262
			#回傳結果
1263
			return $result;
1263
			return $result;
1264
			
1264
 
1265
			}#if end
1265
			}#if end
1266
		
1266
 
1267
		#取得參數
1267
		#取得參數
1268
		$result["argu"]=$conf;
1268
		$result["argu"]=$conf;
1269
 
1269
 
1270
		#如果 $conf 不為陣列
1270
		#如果 $conf 不為陣列
1271
		if(gettype($conf)!=="array"){
1271
		if(gettype($conf)!=="array"){
1272
			
1272
 
1273
			#設置執行失敗
1273
			#設置執行失敗
1274
			$result["status"]="false";
1274
			$result["status"]="false";
1275
			
1275
 
1276
			#設置執行錯誤訊息
1276
			#設置執行錯誤訊息
1277
			$result["error"][]="\$conf變數須為陣列形態";
1277
			$result["error"][]="\$conf變數須為陣列形態";
1278
			
1278
 
1279
			#如果傳入的參數為 null
1279
			#如果傳入的參數為 null
1280
			if($conf===null){
1280
			if($conf===null){
1281
				
1281
 
1282
				#設置執行錯誤訊息
1282
				#設置執行錯誤訊息
1283
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1283
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1284
				
1284
 
1285
				}#if end
1285
				}#if end
1286
 
1286
 
1287
			#回傳結果
1287
			#回傳結果
1288
			return $result;
1288
			return $result;
1289
			
1289
 
1290
			}#if end
1290
			}#if end
1291
		
1291
 
1292
		#檢查參數
1292
		#檢查參數
1293
		#函式說明:
1293
		#函式說明:
1294
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1294
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1295
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1295
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1296
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
1296
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
Line 1321... Line 1321...
1321
		#$conf["canBeEmpty"]=array();
1321
		#$conf["canBeEmpty"]=array();
1322
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
1322
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
1323
		#$conf["skipableVariableCanNotBeEmpty"]=array();
1323
		#$conf["skipableVariableCanNotBeEmpty"]=array();
1324
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1324
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1325
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("unsetSess");
1325
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("unsetSess");
1326
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
1326
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1327
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
1327
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
1328
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1328
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1329
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
1329
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
1330
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1330
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1331
		#$conf["arrayCountEqualCheck"][]=array();
1331
		#$conf["arrayCountEqualCheck"][]=array();
Line 1333... Line 1333...
1333
		#array_keys=>http://php.net/manual/en/function.array-keys.php
1333
		#array_keys=>http://php.net/manual/en/function.array-keys.php
1334
		#建議:
1334
		#建議:
1335
		#增加可省略參數全部不能為空字串或空陣列的參數功能.
1335
		#增加可省略參數全部不能為空字串或空陣列的參數功能.
1336
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1336
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1337
		unset($conf["variableCheck::checkArguments"]);
1337
		unset($conf["variableCheck::checkArguments"]);
1338
		
1338
 
1339
		#若檢查參數失敗
1339
		#若檢查參數失敗
1340
		if($checkArguments["status"]==="false"){
1340
		if($checkArguments["status"]==="false"){
1341
			
1341
 
1342
			#設置執行失敗
1342
			#設置執行失敗
1343
			$result["status"]="false";
1343
			$result["status"]="false";
1344
			
1344
 
1345
			#設置執行錯誤訊息
1345
			#設置執行錯誤訊息
1346
			$result["error"]=$checkArguments;
1346
			$result["error"]=$checkArguments;
1347
			
1347
 
1348
			#回傳結果
1348
			#回傳結果
1349
			return $result;
1349
			return $result;
1350
			
1350
 
1351
			}#if end
1351
			}#if end
1352
			
1352
 
1353
		#若檢查參數不通過
1353
		#若檢查參數不通過
1354
		if($checkArguments["passed"]==="false"){
1354
		if($checkArguments["passed"]==="false"){
1355
			
1355
 
1356
			#設置執行失敗
1356
			#設置執行失敗
1357
			$result["status"]="false";
1357
			$result["status"]="false";
1358
			
1358
 
1359
			#設置執行錯誤訊息
1359
			#設置執行錯誤訊息
1360
			$result["error"]=$checkArguments;
1360
			$result["error"]=$checkArguments;
1361
			
1361
 
1362
			#回傳結果
1362
			#回傳結果
1363
			return $result;
1363
			return $result;
1364
			
1364
 
1365
			}#if end
1365
			}#if end
1366
		
1366
 
1367
		#取得session的副本
1367
		#取得session的副本
1368
		$session=$_SESSION;
1368
		$session=$_SESSION;
1369
		
1369
 
1370
		#儲存session的位址
1370
		#儲存session的位址
1371
		$sessionAddress=&$_SESSION;
1371
		$sessionAddress=&$_SESSION;
1372
		
1372
 
1373
		#針對每個key
1373
		#針對每個key
1374
		foreach($conf["key"] as $keyVal){
1374
		foreach($conf["key"] as $keyVal){
1375
			
1375
 
1376
			#如果 key 為 $keyVal 的 session 變數不存在
1376
			#如果 key 為 $keyVal 的 session 變數不存在
1377
			if(!isset($session[$keyVal])){
1377
			if(!isset($session[$keyVal])){
1378
				
1378
 
1379
				#設置執行正常 
1379
				#設置執行正常
1380
				$result["status"]="true";
1380
				$result["status"]="true";
1381
				
1381
 
1382
				#設置未找到session變數
1382
				#設置未找到session變數
1383
				$result["founded"]="false";
1383
				$result["founded"]="false";
1384
				
1384
 
1385
				#取得 session 的位址
1385
				#取得 session 的位址
1386
				$result["address"]=&$sessionAddress;
1386
				$result["address"]=&$sessionAddress;
1387
				
1387
 
1388
				#回傳結果
1388
				#回傳結果
1389
				return $result;
1389
				return $result;
1390
				
1390
 
1391
				}#if end
1391
				}#if end
1392
				
1392
 
1393
			#反之
1393
			#反之
1394
			else{
1394
			else{
1395
				
1395
 
1396
				#取得 session 該層的內容
1396
				#取得 session 該層的內容
1397
				$session=$session[$keyVal];
1397
				$session=$session[$keyVal];
1398
				
1398
 
1399
				#取得 session 的位址
1399
				#取得 session 的位址
1400
				$sessionAddress=&$sessionAddress[$keyVal];
1400
				$sessionAddress=&$sessionAddress[$keyVal];
1401
				
1401
 
1402
				#如果要卸除 session 變數
1402
				#如果要卸除 session 變數
1403
				if($conf["unsetSess"]==="true"){
1403
				if($conf["unsetSess"]==="true"){
1404
				
1404
 
1405
					#卸除 session 變數
1405
					#卸除 session 變數
1406
					unset($sessionAddress);
1406
					unset($sessionAddress);
1407
				
1407
 
1408
					}#if end
1408
					}#if end
1409
				
1409
 
1410
				}#else end
1410
				}#else end
1411
			
1411
 
1412
			}#foreach end
1412
			}#foreach end
1413
			
1413
 
1414
		#設置執行正常
1414
		#設置執行正常
1415
		$result["status"]="true";
1415
		$result["status"]="true";
1416
		
1416
 
1417
		#設置有找到 session 變數
1417
		#設置有找到 session 變數
1418
		$result["founded"]="true";
1418
		$result["founded"]="true";
1419
		
1419
 
1420
		#設置取得的session內容
1420
		#設置取得的session內容
1421
		$result["content"]=$session;
1421
		$result["content"]=$session;
1422
		
1422
 
1423
		#取得 session 的位址
1423
		#取得 session 的位址
1424
		$result["address"]=&$sessionAddress;
1424
		$result["address"]=&$sessionAddress;
1425
		
1425
 
1426
		#回傳結果
1426
		#回傳結果
1427
		return $result;
1427
		return $result;
1428
		
1428
 
1429
		}#function getVal end
1429
		}#function getVal end
1430
		
1430
 
1431
	/*
1431
	/*
1432
	#函式說明:
1432
	#函式說明:
1433
	#設置指定的session變數 
1433
	#設置指定的session變數
1434
	#回傳結果:
1434
	#回傳結果:
1435
	#$result["status"],執行是否正常,"true"代表正常,"false"代表有誤.
1435
	#$result["status"],執行是否正常,"true"代表正常,"false"代表有誤.
1436
	#$result["error"],錯誤訊息.
1436
	#$result["error"],錯誤訊息.
1437
	#$result["founded"],是否有該session變數,"true"代表有,"false"代表沒有.
1437
	#$result["founded"],是否有該session變數,"true"代表有,"false"代表沒有.
1438
	#$result["content"],session變數的內容
1438
	#$result["content"],session變數的內容
Line 1452... Line 1452...
1452
	#http://php.net/manual/en/function.end.php
1452
	#http://php.net/manual/en/function.end.php
1453
	#備註:
1453
	#備註:
1454
	#無.
1454
	#無.
1455
	*/
1455
	*/
1456
	public static function setVal(&$conf){
1456
	public static function setVal(&$conf){
1457
		
1457
 
1458
		#初始化要回傳的結果
1458
		#初始化要回傳的結果
1459
		$result=array();
1459
		$result=array();
1460
 
1460
 
1461
		#取得當前執行的函數名稱
1461
		#取得當前執行的函數名稱
1462
		$result["function"]=__FUNCTION__;
1462
		$result["function"]=__FUNCTION__;
1463
 
1463
 
1464
		#如果沒有參數
1464
		#如果沒有參數
1465
		if(func_num_args()==0){
1465
		if(func_num_args()==0){
1466
			
1466
 
1467
			#設置執行失敗
1467
			#設置執行失敗
1468
			$result["status"]="false";
1468
			$result["status"]="false";
1469
			
1469
 
1470
			#設置執行錯誤訊息
1470
			#設置執行錯誤訊息
1471
			$result["error"]="函數".$result["function"]."需要參數";
1471
			$result["error"]="函數".$result["function"]."需要參數";
1472
			
1472
 
1473
			#回傳結果
1473
			#回傳結果
1474
			return $result;
1474
			return $result;
1475
			
1475
 
1476
			}#if end
1476
			}#if end
1477
		
1477
 
1478
		#取得參數
1478
		#取得參數
1479
		$result["argu"]=$conf;
1479
		$result["argu"]=$conf;
1480
 
1480
 
1481
		#如果 $conf 不為陣列
1481
		#如果 $conf 不為陣列
1482
		if(gettype($conf)!=="array"){
1482
		if(gettype($conf)!=="array"){
1483
			
1483
 
1484
			#設置執行失敗
1484
			#設置執行失敗
1485
			$result["status"]="false";
1485
			$result["status"]="false";
1486
			
1486
 
1487
			#設置執行錯誤訊息
1487
			#設置執行錯誤訊息
1488
			$result["error"][]="\$conf變數須為陣列形態";
1488
			$result["error"][]="\$conf變數須為陣列形態";
1489
			
1489
 
1490
			#如果傳入的參數為 null
1490
			#如果傳入的參數為 null
1491
			if($conf===null){
1491
			if($conf===null){
1492
				
1492
 
1493
				#設置執行錯誤訊息
1493
				#設置執行錯誤訊息
1494
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1494
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1495
				
1495
 
1496
				}#if end
1496
				}#if end
1497
 
1497
 
1498
			#回傳結果
1498
			#回傳結果
1499
			return $result;
1499
			return $result;
1500
			
1500
 
1501
			}#if end
1501
			}#if end
1502
			
1502
 
1503
		#檢查參數
1503
		#檢查參數
1504
		#函式說明:
1504
		#函式說明:
1505
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1505
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1506
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1506
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1507
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
1507
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
Line 1532... Line 1532...
1532
		#$conf["canBeEmpty"]=array();
1532
		#$conf["canBeEmpty"]=array();
1533
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
1533
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
1534
		#$conf["skipableVariableCanNotBeEmpty"]=array();
1534
		#$conf["skipableVariableCanNotBeEmpty"]=array();
1535
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1535
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1536
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("storeAsNotRepeatArray");
1536
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("storeAsNotRepeatArray");
1537
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
1537
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1538
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
1538
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
1539
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1539
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1540
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
1540
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
1541
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1541
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1542
		#$conf["arrayCountEqualCheck"][]=array();
1542
		#$conf["arrayCountEqualCheck"][]=array();
Line 1544... Line 1544...
1544
		#array_keys=>http://php.net/manual/en/function.array-keys.php
1544
		#array_keys=>http://php.net/manual/en/function.array-keys.php
1545
		#建議:
1545
		#建議:
1546
		#增加可省略參數全部不能為空字串或空陣列的參數功能.
1546
		#增加可省略參數全部不能為空字串或空陣列的參數功能.
1547
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1547
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1548
		unset($conf["variableCheck::checkArguments"]);
1548
		unset($conf["variableCheck::checkArguments"]);
1549
		
1549
 
1550
		#若檢查參數失敗
1550
		#若檢查參數失敗
1551
		if($checkArguments["status"]==="false"){
1551
		if($checkArguments["status"]==="false"){
1552
			
1552
 
1553
			#設置執行失敗
1553
			#設置執行失敗
1554
			$result["status"]="false";
1554
			$result["status"]="false";
1555
			
1555
 
1556
			#設置執行錯誤訊息
1556
			#設置執行錯誤訊息
1557
			$result["error"]=$checkArguments;
1557
			$result["error"]=$checkArguments;
1558
			
1558
 
1559
			#回傳結果
1559
			#回傳結果
1560
			return $result;
1560
			return $result;
1561
			
1561
 
1562
			}#if end
1562
			}#if end
1563
			
1563
 
1564
		#若檢查參數不通過
1564
		#若檢查參數不通過
1565
		if($checkArguments["passed"]==="false"){
1565
		if($checkArguments["passed"]==="false"){
1566
			
1566
 
1567
			#設置執行失敗
1567
			#設置執行失敗
1568
			$result["status"]="false";
1568
			$result["status"]="false";
1569
			
1569
 
1570
			#設置執行錯誤訊息
1570
			#設置執行錯誤訊息
1571
			$result["error"]=$checkArguments;
1571
			$result["error"]=$checkArguments;
1572
			
1572
 
1573
			#回傳結果
1573
			#回傳結果
1574
			return $result;
1574
			return $result;
1575
			
1575
 
1576
			}#if end
1576
			}#if end
1577
			
1577
 
1578
		#取得seesion變數的層級數目
1578
		#取得seesion變數的層級數目
1579
		$lastLayer=count($conf["key"]);
1579
		$lastLayer=count($conf["key"]);
1580
			
1580
 
1581
		#設置初始的層級
1581
		#設置初始的層級
1582
		$layer=1;	
1582
		$layer=1;
1583
		
1583
 
1584
		#取得session變數的位址
1584
		#取得session變數的位址
1585
		$session=&$_SESSION;
1585
		$session=&$_SESSION;
1586
			
1586
 
1587
		#數化要查詢的session key階層
1587
		#數化要查詢的session key階層
1588
		$sa=array();	
1588
		$sa=array();
1589
			
1589
 
1590
		#針對session變數的每個層級
1590
		#針對session變數的每個層級
1591
		foreach($conf["key"] as $keyVal){
1591
		foreach($conf["key"] as $keyVal){
1592
			
1592
 
1593
			#如果是最後一層
1593
			#如果是最後一層
1594
			if($layer===$lastLayer){
1594
			if($layer===$lastLayer){
1595
				
1595
 
1596
				#如果要儲存成陣列
1596
				#如果要儲存成陣列
1597
				if($conf["storeAsNotRepeatArray"]==="true"){
1597
				if($conf["storeAsNotRepeatArray"]==="true"){
1598
					
1598
 
1599
					#如果目標變數有存在了
1599
					#如果目標變數有存在了
1600
					if(isset($session[$keyVal])){
1600
					if(isset($session[$keyVal])){
1601
						
1601
 
1602
						#如果不是陣列
1602
						#如果不是陣列
1603
						if(gettype($session[$keyVal])!=="array"){
1603
						if(gettype($session[$keyVal])!=="array"){
1604
							
1604
 
1605
							#設置執行失敗
1605
							#設置執行失敗
1606
							$result["status"]="false";
1606
							$result["status"]="false";
1607
							
1607
 
1608
							#設置執行錯誤訊息
1608
							#設置執行錯誤訊息
1609
							$result["error"]=$checkArguments;
1609
							$result["error"]=$checkArguments;
1610
							
1610
 
1611
							#設置錯誤訊息
1611
							#設置錯誤訊息
1612
							$result["error"][]="變數內容不是陣列";
1612
							$result["error"][]="變數內容不是陣列";
1613
							
1613
 
1614
							#回傳結果
1614
							#回傳結果
1615
							return $result;
1615
							return $result;
1616
							
1616
 
1617
							}#if end
1617
							}#if end
1618
							
1618
 
1619
						#如果是新的元素
1619
						#如果是新的元素
1620
						if(!in_array($conf["val"],$session[$keyVal])){
1620
						if(!in_array($conf["val"],$session[$keyVal])){
1621
							
1621
 
1622
							#新增元素
1622
							#新增元素
1623
							$session[$keyVal][]=$conf["val"];
1623
							$session[$keyVal][]=$conf["val"];
1624
							
1624
 
1625
							}#if end
1625
							}#if end
1626
						
1626
 
1627
						}#if end
1627
						}#if end
1628
						
1628
 
1629
					#反之
1629
					#反之
1630
					else{
1630
					else{
1631
						
1631
 
1632
						#新增元素
1632
						#新增元素
1633
						$session[$keyVal][]=$conf["val"];
1633
						$session[$keyVal][]=$conf["val"];
1634
						
1634
 
1635
						}#else end
1635
						}#else end
1636
					
1636
 
1637
					$keys=array_keys($session[$keyVal]);
1637
					$keys=array_keys($session[$keyVal]);
1638
					
1638
 
1639
					#get last key
1639
					#get last key
1640
					$lastKey=end($keys);
1640
					$lastKey=end($keys);
1641
						
1641
 
1642
					#取得當前參照的session階層位址
1642
					#取得當前參照的session階層位址
1643
					$session=&$session[$keyVal][$lastKey];	
1643
					$session=&$session[$keyVal][$lastKey];
1644
					
1644
 
1645
					}#if end
1645
					}#if end
1646
					
1646
 
1647
				#反之直接儲存
1647
				#反之直接儲存
1648
				else{
1648
				else{
1649
					
1649
 
1650
					#設置 session 變數的內容
1650
					#設置 session 變數的內容
1651
					$session[$keyVal]=$conf["val"];	
1651
					$session[$keyVal]=$conf["val"];
1652
					
1652
 
1653
					#取得當前參照的session階層位址
1653
					#取得當前參照的session階層位址
1654
					$session=&$session[$keyVal];				
1654
					$session=&$session[$keyVal];
1655
 
1655
 
1656
					}#else end
1656
					}#else end
1657
				
1657
 
1658
				#跳出迴圈
1658
				#跳出迴圈
1659
				break;
1659
				break;
1660
				
1660
 
1661
				}#if end
1661
				}#if end
1662
			
1662
 
1663
			#設置要檢查的session key階層
1663
			#設置要檢查的session key階層
1664
			$sa[]=$keyVal;
1664
			$sa[]=$keyVal;
1665
				
1665
 
1666
			#函式說明:
1666
			#函式說明:
1667
			#取得指定的session數值 
1667
			#取得指定的session數值
1668
			#回傳結果:
1668
			#回傳結果:
1669
			#$result["status"],執行是否正常,"true"代表正常,"false"代表有誤.
1669
			#$result["status"],執行是否正常,"true"代表正常,"false"代表有誤.
1670
			#$result["error"],錯誤訊息.
1670
			#$result["error"],錯誤訊息.
1671
			#$result["founded"],是否有該session變數,"true"代表有,"false"代表沒有.
1671
			#$result["founded"],是否有該session變數,"true"代表有,"false"代表沒有.
1672
			#$result["content"],session變數的內容
1672
			#$result["content"],session變數的內容
Line 1675... Line 1675...
1675
			#$result["argu"],使用的參數.
1675
			#$result["argu"],使用的參數.
1676
			#必填參數:
1676
			#必填參數:
1677
			#$conf["key"],字串陣列,session的key名稱與層級.
1677
			#$conf["key"],字串陣列,session的key名稱與層級.
1678
			$conf["session::getVal"]["key"]=$sa;
1678
			$conf["session::getVal"]["key"]=$sa;
1679
			$getVal=session::getVal($conf["session::getVal"]);
1679
			$getVal=session::getVal($conf["session::getVal"]);
1680
			unset($conf["session::getVal"]);	
1680
			unset($conf["session::getVal"]);
1681
				
1681
 
1682
			#如果取得 session key 的內容失敗
1682
			#如果取得 session key 的內容失敗
1683
			if($getVal["status"]==="false"){
1683
			if($getVal["status"]==="false"){
1684
				
1684
 
1685
				#設置執行失敗
1685
				#設置執行失敗
1686
				$result["status"]="false";
1686
				$result["status"]="false";
1687
				
1687
 
1688
				#設置執行錯誤訊息
1688
				#設置執行錯誤訊息
1689
				$result["error"]=$getVal;
1689
				$result["error"]=$getVal;
1690
				
1690
 
1691
				#回傳結果
1691
				#回傳結果
1692
				return $result;
1692
				return $result;
1693
				
1693
 
1694
				}#if end
1694
				}#if end
1695
				
1695
 
1696
			#如果 session 不存在
1696
			#如果 session 不存在
1697
			if($getVal["founded"]==="false"){
1697
			if($getVal["founded"]==="false"){
1698
				
1698
 
1699
				#建立該 session 階層並設為空陣列
1699
				#建立該 session 階層並設為空陣列
1700
				$getVal["address"][$keyVal]=array();
1700
				$getVal["address"][$keyVal]=array();
1701
				
1701
 
1702
				#取得當前參照的session階層位址
1702
				#取得當前參照的session階層位址
1703
				$session=&$getVal["address"][$keyVal];				
1703
				$session=&$getVal["address"][$keyVal];
1704
				
1704
 
1705
				}#if end			
1705
				}#if end
1706
			
1706
 
1707
			#如果 session 存在	
1707
			#如果 session 存在
1708
			else{
1708
			else{
1709
				
1709
 
1710
				#取得當前參照的session階層位址
1710
				#取得當前參照的session階層位址
1711
				$session=&$getVal["address"];
1711
				$session=&$getVal["address"];
1712
				
1712
 
1713
				}#else end	
1713
				}#else end
1714
				
1714
 
1715
			#層級加一
1715
			#層級加一
1716
			$layer++;
1716
			$layer++;
1717
			
1717
 
1718
			}#foreach end
1718
			}#foreach end
1719
		
1719
 
1720
		#設置執行正常
1720
		#設置執行正常
1721
		$result["status"]="true";
1721
		$result["status"]="true";
1722
		
1722
 
1723
		#設置session變數的位址
1723
		#設置session變數的位址
1724
		$result["address"]=&$session;
1724
		$result["address"]=&$session;
1725
		
1725
 
1726
		#回傳節果
1726
		#回傳節果
1727
		return $result;
1727
		return $result;
1728
		
1728
 
1729
		}#function setVal end
1729
		}#function setVal end
1730
		
1730
 
1731
	/*
1731
	/*
1732
	#函式說明:
1732
	#函式說明:
1733
	#設置多個session變數的內容 
1733
	#設置多個session變數的內容
1734
	#$result["status"],執行是否正常,"true"代表正常,"false"代表有誤.
1734
	#$result["status"],執行是否正常,"true"代表正常,"false"代表有誤.
1735
	#$result["error"],錯誤訊息.
1735
	#$result["error"],錯誤訊息.
1736
	#$result["founded"],是否有該session變數,"true"代表有,"false"代表沒有.
1736
	#$result["founded"],是否有該session變數,"true"代表有,"false"代表沒有.
1737
	#$result["content"],每個設置好的session變數資訊
1737
	#$result["content"],每個設置好的session變數資訊
1738
	#$result["function"],當前執行的函數名稱.
1738
	#$result["function"],當前執行的函數名稱.
Line 1749... Line 1749...
1749
	#無.
1749
	#無.
1750
	#備註:
1750
	#備註:
1751
	#無.
1751
	#無.
1752
	*/
1752
	*/
1753
	public static function setMultiVal(&$conf){
1753
	public static function setMultiVal(&$conf){
1754
		
1754
 
1755
		#初始化要回傳的結果
1755
		#初始化要回傳的結果
1756
		$result=array();
1756
		$result=array();
1757
 
1757
 
1758
		#取得當前執行的函數名稱
1758
		#取得當前執行的函數名稱
1759
		$result["function"]=__FUNCTION__;
1759
		$result["function"]=__FUNCTION__;
1760
 
1760
 
1761
		#如果沒有參數
1761
		#如果沒有參數
1762
		if(func_num_args()==0){
1762
		if(func_num_args()==0){
1763
			
1763
 
1764
			#設置執行失敗
1764
			#設置執行失敗
1765
			$result["status"]="false";
1765
			$result["status"]="false";
1766
			
1766
 
1767
			#設置執行錯誤訊息
1767
			#設置執行錯誤訊息
1768
			$result["error"]="函數".$result["function"]."需要參數";
1768
			$result["error"]="函數".$result["function"]."需要參數";
1769
			
1769
 
1770
			#回傳結果
1770
			#回傳結果
1771
			return $result;
1771
			return $result;
1772
			
1772
 
1773
			}#if end
1773
			}#if end
1774
		
1774
 
1775
		#取得參數
1775
		#取得參數
1776
		$result["argu"]=$conf;
1776
		$result["argu"]=$conf;
1777
 
1777
 
1778
		#如果 $conf 不為陣列
1778
		#如果 $conf 不為陣列
1779
		if(gettype($conf)!=="array"){
1779
		if(gettype($conf)!=="array"){
1780
			
1780
 
1781
			#設置執行失敗
1781
			#設置執行失敗
1782
			$result["status"]="false";
1782
			$result["status"]="false";
1783
			
1783
 
1784
			#設置執行錯誤訊息
1784
			#設置執行錯誤訊息
1785
			$result["error"][]="\$conf變數須為陣列形態";
1785
			$result["error"][]="\$conf變數須為陣列形態";
1786
			
1786
 
1787
			#如果傳入的參數為 null
1787
			#如果傳入的參數為 null
1788
			if($conf===null){
1788
			if($conf===null){
1789
				
1789
 
1790
				#設置執行錯誤訊息
1790
				#設置執行錯誤訊息
1791
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1791
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1792
				
1792
 
1793
				}#if end
1793
				}#if end
1794
 
1794
 
1795
			#回傳結果
1795
			#回傳結果
1796
			return $result;
1796
			return $result;
1797
			
1797
 
1798
			}#if end
1798
			}#if end
1799
			
1799
 
1800
		#檢查參數
1800
		#檢查參數
1801
		#函式說明:
1801
		#函式說明:
1802
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1802
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1803
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1803
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1804
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
1804
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
Line 1829... Line 1829...
1829
		#$conf["canBeEmpty"]=array();
1829
		#$conf["canBeEmpty"]=array();
1830
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
1830
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
1831
		#$conf["skipableVariableCanNotBeEmpty"]=array();
1831
		#$conf["skipableVariableCanNotBeEmpty"]=array();
1832
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1832
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1833
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("storeAsNotRepeatArray");
1833
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("storeAsNotRepeatArray");
1834
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
1834
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1835
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
1835
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
1836
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1836
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1837
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
1837
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
1838
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1838
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1839
		$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("key","val");
1839
		$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("key","val");
Line 1841... Line 1841...
1841
		#array_keys=>http://php.net/manual/en/function.array-keys.php
1841
		#array_keys=>http://php.net/manual/en/function.array-keys.php
1842
		#建議:
1842
		#建議:
1843
		#增加可省略參數全部不能為空字串或空陣列的參數功能.
1843
		#增加可省略參數全部不能為空字串或空陣列的參數功能.
1844
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1844
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1845
		unset($conf["variableCheck::checkArguments"]);
1845
		unset($conf["variableCheck::checkArguments"]);
1846
		
1846
 
1847
		#若檢查參數失敗
1847
		#若檢查參數失敗
1848
		if($checkArguments["status"]==="false"){
1848
		if($checkArguments["status"]==="false"){
1849
			
1849
 
1850
			#設置執行失敗
1850
			#設置執行失敗
1851
			$result["status"]="false";
1851
			$result["status"]="false";
1852
			
1852
 
1853
			#設置執行錯誤訊息
1853
			#設置執行錯誤訊息
1854
			$result["error"]=$checkArguments;
1854
			$result["error"]=$checkArguments;
1855
			
1855
 
1856
			#回傳結果
1856
			#回傳結果
1857
			return $result;
1857
			return $result;
1858
			
1858
 
1859
			}#if end
1859
			}#if end
1860
			
1860
 
1861
		#若檢查參數不通過
1861
		#若檢查參數不通過
1862
		if($checkArguments["passed"]==="false"){
1862
		if($checkArguments["passed"]==="false"){
1863
			
1863
 
1864
			#設置執行失敗
1864
			#設置執行失敗
1865
			$result["status"]="false";
1865
			$result["status"]="false";
1866
			
1866
 
1867
			#設置執行錯誤訊息
1867
			#設置執行錯誤訊息
1868
			$result["error"]=$checkArguments;
1868
			$result["error"]=$checkArguments;
1869
			
1869
 
1870
			#回傳結果
1870
			#回傳結果
1871
			return $result;
1871
			return $result;
1872
			
1872
 
1873
			}#if end
1873
			}#if end
1874
			
1874
 
1875
		#針對每個 $conf["key"]
1875
		#針對每個 $conf["key"]
1876
		foreach($conf["key"] as $index=>$keyVal){
1876
		foreach($conf["key"] as $index=>$keyVal){
1877
			
1877
 
1878
			#設置指定的session變數 
1878
			#設置指定的session變數
1879
			#回傳結果:
1879
			#回傳結果:
1880
			#$result["status"],執行是否正常,"true"代表正常,"false"代表有誤.
1880
			#$result["status"],執行是否正常,"true"代表正常,"false"代表有誤.
1881
			#$result["error"],錯誤訊息.
1881
			#$result["error"],錯誤訊息.
1882
			#$result["founded"],是否有該session變數,"true"代表有,"false"代表沒有.
1882
			#$result["founded"],是否有該session變數,"true"代表有,"false"代表沒有.
1883
			#$result["content"],session變數的內容
1883
			#$result["content"],session變數的內容
Line 1889... Line 1889...
1889
			$conf["session::setVal"]["key"]=$keyVal;
1889
			$conf["session::setVal"]["key"]=$keyVal;
1890
			#$conf["val"],任意型態,指定的session變數內容.
1890
			#$conf["val"],任意型態,指定的session變數內容.
1891
			$conf["session::setVal"]["val"]=$conf["val"][$index];
1891
			$conf["session::setVal"]["val"]=$conf["val"][$index];
1892
			#可省略參數:
1892
			#可省略參數:
1893
			#$conf["storeAsNotRepeatArray"],字串,"true"代表要將變數內容存成陣列,預設為"false".
1893
			#$conf["storeAsNotRepeatArray"],字串,"true"代表要將變數內容存成陣列,預設為"false".
1894
			$conf["session::setVal"]["storeAsNotRepeatArray"]=$conf["storeAsNotRepeatArray"];			
1894
			$conf["session::setVal"]["storeAsNotRepeatArray"]=$conf["storeAsNotRepeatArray"];
1895
			$setVal=session::setVal($conf["session::setVal"]);
1895
			$setVal=session::setVal($conf["session::setVal"]);
1896
			unset($conf["session::setVal"]);
1896
			unset($conf["session::setVal"]);
1897
			
1897
 
1898
			#如果設置 session 變數失敗 
1898
			#如果設置 session 變數失敗
1899
			if($setVal["status"]==="false"){
1899
			if($setVal["status"]==="false"){
1900
				
1900
 
1901
				#設置執行失敗
1901
				#設置執行失敗
1902
				$result["status"]="false";
1902
				$result["status"]="false";
1903
				
1903
 
1904
				#設置執行錯誤訊息
1904
				#設置執行錯誤訊息
1905
				$result["error"]=$setVal;
1905
				$result["error"]=$setVal;
1906
				
1906
 
1907
				#回傳結果
1907
				#回傳結果
1908
				return $result;
1908
				return $result;
1909
				
1909
 
1910
				}#if end
1910
				}#if end
1911
				
1911
 
1912
			#取得設置好的結果
1912
			#取得設置好的結果
1913
			$result["content"][]=$setVal;
1913
			$result["content"][]=$setVal;
1914
			
1914
 
1915
			}#foreach end
1915
			}#foreach end
1916
			
1916
 
1917
		#設置執行正常
1917
		#設置執行正常
1918
		$result["status"]="true";
1918
		$result["status"]="true";
1919
		
1919
 
1920
		#回傳結果
1920
		#回傳結果
1921
		return $result;
1921
		return $result;
1922
		
1922
 
1923
		}#function setMutiVal end
1923
		}#function setMutiVal end
1924
	
1924
 
1925
	}#session class end
1925
	}#session class end
1926
 
1926
 
1927
?>
1927
?>