Subversion Repositories php-qbpwcf

Rev

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

Rev 53 Rev 66
Line 223... Line 223...
223
$conf["listenIp"]=$addr;
223
$conf["listenIp"]=$addr;
224
#$conf["listenPort"],字串,要接聽的port,預設為已使用port+1.
224
#$conf["listenPort"],字串,要接聽的port,預設為已使用port+1.
225
$conf["listenPort"]=$port;
225
$conf["listenPort"]=$port;
226
#$conf["wsMode"],字串,是否要用webSocket模式,預設為"false",不使用,若為"true"則要使用.
226
#$conf["wsMode"],字串,是否要用webSocket模式,預設為"false",不使用,若為"true"則要使用.
227
$conf["wsMode"]="true";
227
$conf["wsMode"]="true";
228
#$conf["processFuncs"],陣列,針對收到的訊息要呼叫的函式,會帶入一個參數陣列,array("data"=>收到的資料,"serverSock"=>serverSock,"clientSock"=>clientSock,"clientInfo"=>用戶端的資訊,"clientIndex"=>用戶端的索引,"allConn"=>所有連線的用戶端的連線資訊),回傳的結果若為陣列$result,其$result["status"]為"false"時,會結束執行(等待下個訊息).
228
#$conf["processFuncs"],陣列,針對收到的訊息要呼叫的函式,會帶入一個參數陣列,array("data"=>收到的資料,"serverSock"=>serverSock,"clientSock"=>clientSock,"clientInfo"=>用戶端的資訊,"clientIndex"=>用戶端的索引,"allConn"=>所有連線的用戶端的連線資訊),回傳的結果若為陣列$result,其$result["status"]為"true"時,會結束執行(等待下個訊息);為"false"時,會var_dump結果,然後交給下一個函式執行;為"continue"時,代表交給下一個函式執行;預設的數值為array("noAuth");
229
$conf["processFuncs"]=array("\qbpwcf\pwd");
229
#$conf["processFuncs"]=array("\qbpwcf\callFunc");
-
 
230
#$conf["idleFunc"],陣列,當沒有收到訊息時,要執行的函式順序,預設不指定.
-
 
231
#$conf["idleFunc"]=array();
230
#參考資料:
232
#參考資料:
231
#http://php.net/manual/en/sockets.examples.php
233
#http://php.net/manual/en/sockets.examples.php
232
#http://us3.php.net/manual/en/function.socket-select.php
234
#http://us3.php.net/manual/en/function.socket-select.php
233
#response should at least end with "\r"=>http://stackoverflow.com/questions/25739768/websocket-communication-between-chromeclient-and-hotspotserver-status-line
235
#response should at least end with "\r"=>http://stackoverflow.com/questions/25739768/websocket-communication-between-chromeclient-and-hotspotserver-status-line
234
#response status code should be 101=>http://stackoverflow.com/questions/29829597/i-get-a-status-200-when-connecting-to-the-websocket-but-it-is-an-error
236
#response status code should be 101=>http://stackoverflow.com/questions/29829597/i-get-a-status-200-when-connecting-to-the-websocket-but-it-is-an-error
Line 249... Line 251...
249
	exit;
251
	exit;
250
 
252
 
251
	}#if end
253
	}#if end
252
 
254
 
253
/*
255
/*
254
函式說明:
256
#函式說明:
255
提供取得當前路徑的功能
257
#提供取得當前路徑的功能
-
 
258
#回傳結果:
-
 
259
#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常. 
-
 
260
#$result["function"],當前執行的函數名稱.
-
 
261
#$result["content"],加密後的結果.
-
 
262
#$result["error"],錯誤訊息陣列.
-
 
263
#$result["argu"],使用的參數.
-
 
264
#必填參數:
-
 
265
#$conf["data"],字串.
-
 
266
$conf["data"]="";
-
 
267
#$conf["serverSock"],socket,代表web socket server的socket.
-
 
268
$conf["serverSock"]=;
-
 
269
#$conf["clientSock"],socket,代表web socket client的socket.
-
 
270
#$conf["clientInfo"],陣列,用戶端的資訊.
-
 
271
$conf["clientInfo"]=array();
-
 
272
#$conf["clientIndex"],字串,代表client於allConn中的索引.
-
 
273
$conf["clientIndex"]="";
-
 
274
#$conf["allConn"],陣列,所有連線的用戶端的連線資訊.
-
 
275
$conf["allConn"]=array();
-
 
276
#可省略參數:
-
 
277
#無.
-
 
278
#參考資料:
-
 
279
#無.
-
 
280
#備註:
-
 
281
#無.
256
*/
282
*/
-
 
283
function pwd(&$conf){
-
 
284
 
-
 
285
	#初始化要回傳的結果
-
 
286
	$result=array();
-
 
287
 
-
 
288
	#取得當前執行的函數名稱
-
 
289
	$result["function"]=__FUNCTION__;
-
 
290
 
-
 
291
	#涵式說明:
-
 
292
	#判斷當前環境為web還是cmd
-
 
293
	#回傳結果:
-
 
294
	#$result,"web"或"cmd"
-
 
295
	if(csInformation::getEnv()==="web"){
-
 
296
		
-
 
297
		#設置執行失敗
-
 
298
		$result["status"]="false";
-
 
299
		
-
 
300
		#設置執行錯誤訊息
-
 
301
		$result["error"][]="函數 ".$result["function"]." 僅能在命令列環境下運行!";
-
 
302
		
-
 
303
		#回傳結果
-
 
304
		return $result;
-
 
305
		
-
 
306
		}#if end
-
 
307
 
-
 
308
	#取得參數
-
 
309
	$result["argu"]=$conf;
-
 
310
 
-
 
311
	#如果 $conf 不為陣列
-
 
312
	if(gettype($conf)!="array"){
-
 
313
	
-
 
314
		#設置執行失敗
-
 
315
		$result["status"]="false";
-
 
316
	
-
 
317
		#設置執行錯誤訊息
-
 
318
		$result["error"][]="\$conf變數須為陣列形態";
-
 
319
	
-
 
320
		#如果傳入的參數為 null
-
 
321
		if($conf==null){
-
 
322
		
-
 
323
			#設置執行錯誤訊息
-
 
324
			$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
-
 
325
		
-
 
326
			}#if end
-
 
327
 
-
 
328
		#回傳結果
-
 
329
		return $result;
-
 
330
	
-
 
331
		}#if end
-
 
332
		
-
 
333
	#檢查參數
-
 
334
	#函式說明:
-
 
335
	#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
-
 
336
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
-
 
337
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
-
 
338
	#$result["function"],當前執行的函式名稱.
-
 
339
	#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
-
 
340
	#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
-
 
341
	#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
-
 
342
	#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
-
 
343
	#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
-
 
344
	#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
-
 
345
	#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
-
 
346
	#$result["notNeedVar"],字串陣列,多餘的參數名稱.
-
 
347
	#必填寫的參數:
-
 
348
	#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
-
 
349
	$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
-
 
350
	#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
-
 
351
	$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("data","serverSock","clientInfo","clientIndex","allConn");
257
function pwd(&$params){
352
	#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
-
 
353
	$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","resource","array","string","array");
-
 
354
	#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
-
 
355
	$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
-
 
356
	#可以省略的參數:
-
 
357
	#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
-
 
358
	#$conf["canBeEmptyString"]="false";
-
 
359
	#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
-
 
360
	#$conf["canNotBeEmpty"]=array();
-
 
361
	#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
-
 
362
	#$conf["canBeEmpty"]=array();
-
 
363
	#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
-
 
364
	#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array();
-
 
365
	#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
-
 
366
	#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("listenIp","listenPort","wsMode","processFuncs");
-
 
367
	#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
-
 
368
	#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","array");
-
 
369
	#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
-
 
370
	#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("127.0.0.1",null,"false",null);
-
 
371
	#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
-
 
372
	#$conf["arrayCountEqualCheck"][]=array();
-
 
373
	#參考資料來源:
-
 
374
	#array_keys=>http://php.net/manual/en/function.array-keys.php
-
 
375
	#建議:
-
 
376
	#增加可省略參數全部不能為空字串或空陣列的參數功能.
-
 
377
	$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
-
 
378
	unset($conf["variableCheck::checkArguments"]);
-
 
379
			
-
 
380
	#如果檢查參數失敗
-
 
381
	if($checkArguments["status"]==="false"){
-
 
382
		
-
 
383
		#設置執行失敗
-
 
384
		$result["status"]="false";
-
 
385
	
-
 
386
		#設置執行錯誤訊息
-
 
387
		$result["error"]=$checkArguments;
-
 
388
		
-
 
389
		#回傳結果
-
 
390
		return $result;
-
 
391
		
-
 
392
		}#if end
-
 
393
		
-
 
394
	#如果檢查參數不通過
-
 
395
	if($checkArguments["passed"]==="false"){
-
 
396
		
-
 
397
		#設置執行失敗
-
 
398
		$result["status"]="false";
-
 
399
	
-
 
400
		#設置執行錯誤訊息
-
 
401
		$result["error"]=$checkArguments;
-
 
402
		
-
 
403
		#回傳結果
-
 
404
		return $result;
-
 
405
		
-
 
406
		}#if end
258
 
407
 
259
	#取得收到的訊息
408
	#取得收到的訊息
260
	$receivedData=$params["data"];
409
	$receivedData=$conf["data"];
261
	
410
	
262
	#取得 server 的 socket
411
	#取得 server 的 socket
263
	$serverSocket=$params["serverSock"];
412
	$serverSocket=$conf["serverSock"];
264
	
413
	
265
	#取得 client 的 socket
414
	#取得 client 的 socket
266
	$clientSocket=$params["clientSock"];
415
	$clientSocket=$conf["clientSock"];
267
	
416
	
268
	#取得 client 的資訊
417
	#取得 client 的資訊
269
	$clientInfo=$params["clientInfo"];
418
	$clientInfo=$conf["clientInfo"];
270
	
419
	
271
	#取得 client 的索引
420
	#取得 client 的索引
272
	$clientIndex=$params["clientIndex"];
421
	$clientIndex=$conf["clientIndex"];
273
	
422
	
274
	#取得 all clients 的資訊
423
	#取得 all clients 的資訊
275
	$allConn=$params["allConn"];
424
	$allConn=$conf["allConn"];
276
	
425
	
277
	#函式說明:
426
	#函式說明:
278
	#呼叫shell執行系統命令,並取得回傳的內容.
427
	#呼叫shell執行系統命令,並取得回傳的內容.
279
	#回傳結果:
428
	#回傳結果:
280
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
429
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 341... Line 490...
341
		return $callShell;
490
		return $callShell;
342
		
491
		
343
		}#if end
492
		}#if end
344
	
493
	
345
	#取得經過編碼的執行後結果字串
494
	#取得經過編碼的執行後結果字串
346
	$callShellResultStr=json_encode($callShell);
495
	$callShellResultStr=base64_encode(urlencode(json_encode($callShell)));
347
	
496
	
348
	#debug
497
	#debug
349
	#var_dump(__LINE__,$callShellResultStr);
498
	#var_dump(__LINE__,$callShellResultStr);
350
	
499
	
351
	#函式說明:
500
	#函式說明:
Line 377... Line 526...
377
		}#if end
526
		}#if end
378
		
527
		
379
	#針對每個訊息的分段
528
	#針對每個訊息的分段
380
	foreach($talkback["content"] as $msgIndex=>$msg){
529
	foreach($talkback["content"] as $msgIndex=>$msg){
381
		
530
		
-
 
531
		#debug - start
-
 
532
		
382
		#提示第幾個訊息
533
		#提示第幾個訊息
383
		echo "第 ".($msgIndex+1)." 個訊息的內容:".PHP_EOL;
534
		echo "第 ".($msgIndex+1)." 個訊息的內容:".PHP_EOL;
384
		
535
		
385
		#函式說明:
536
		#函式說明:
386
		#將字串中的每個字變成bytes陣列
537
		#將字串中的每個字變成bytes陣列
Line 444... Line 595...
444
			
595
			
445
				}#if end
596
				}#if end
446
		
597
		
447
			}#foreach end
598
			}#foreach end
448
		
599
		
-
 
600
		#debug - end
-
 
601
		
449
		#回傳訊息
602
		#回傳訊息
450
		$socket_write=socket_write($clientSocket, $msg, strlen($msg));
603
		$socket_write=socket_write($clientSocket, $msg, strlen($msg));
451
 
604
 
452
		#換行
605
		#換行
453
		echo PHP_EOL;
606
		echo PHP_EOL;
Line 466... Line 619...
466
	#回傳結果
619
	#回傳結果
467
	return $result;
620
	return $result;
468
 
621
 
469
	}#function pwd end
622
	}#function pwd end
470
	
623
	
-
 
624
/*
-
 
625
#函式說明:
-
 
626
#讓 web socket server 尋找對應的 session 檔案內容,看是否透過 email 認證了.
-
 
627
#回傳結果:
-
 
628
#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常. 
-
 
629
#$result["function"],當前執行的函數名稱.
-
 
630
#$result["content"],加密後的結果.
-
 
631
#$result["error"],錯誤訊息陣列.
-
 
632
#$result["argu"],使用的參數.
-
 
633
#必填參數:
-
 
634
#$conf["data"],字串,json資料.
-
 
635
$conf["data"]="";
-
 
636
#$conf["serverSock"],socket,代表web socket server的socket.
-
 
637
$conf["serverSock"]=;
-
 
638
#$conf["clientSock"],socket,代表web socket client的socket.
-
 
639
#$conf["clientInfo"],陣列,用戶端的資訊.
-
 
640
$conf["clientInfo"]=array();
-
 
641
#$conf["clientIndex"],字串,代表client於allConn中的索引.
-
 
642
$conf["clientIndex"]="";
-
 
643
#$conf["allConn"],陣列,所有連線的用戶端的連線資訊.
-
 
644
$conf["allConn"]=array();
-
 
645
#可省略參數:
-
 
646
#無.
-
 
647
#參考資料:
-
 
648
#無.
-
 
649
#備註:
-
 
650
#無.
-
 
651
*/
-
 
652
function checkStatusOfEmailVarify(&$conf){
-
 
653
 
-
 
654
	#初始化要回傳的結果
-
 
655
	$result=array();
-
 
656
 
-
 
657
	#取得當前執行的函數名稱
-
 
658
	$result["function"]=__FUNCTION__;
-
 
659
 
-
 
660
	#涵式說明:
-
 
661
	#判斷當前環境為web還是cmd
-
 
662
	#回傳結果:
-
 
663
	#$result,"web"或"cmd"
-
 
664
	if(csInformation::getEnv()==="web"){
-
 
665
		
-
 
666
		#設置執行失敗
-
 
667
		$result["status"]="false";
-
 
668
		
-
 
669
		#設置執行錯誤訊息
-
 
670
		$result["error"][]="函數 ".$result["function"]." 僅能在命令列環境下運行!";
-
 
671
		
-
 
672
		#回傳結果
-
 
673
		return $result;
-
 
674
		
-
 
675
		}#if end
-
 
676
 
-
 
677
	#取得參數
-
 
678
	$result["argu"]=$conf;
-
 
679
 
-
 
680
	#如果 $conf 不為陣列
-
 
681
	if(gettype($conf)!="array"){
-
 
682
	
-
 
683
		#設置執行失敗
-
 
684
		$result["status"]="false";
-
 
685
	
-
 
686
		#設置執行錯誤訊息
-
 
687
		$result["error"][]="\$conf變數須為陣列形態";
-
 
688
	
-
 
689
		#如果傳入的參數為 null
-
 
690
		if($conf==null){
-
 
691
		
-
 
692
			#設置執行錯誤訊息
-
 
693
			$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
-
 
694
		
-
 
695
			}#if end
-
 
696
 
-
 
697
		#回傳結果
-
 
698
		return $result;
-
 
699
	
-
 
700
		}#if end
-
 
701
	
-
 
702
	#檢查參數
-
 
703
	#函式說明:
-
 
704
	#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
-
 
705
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
-
 
706
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
-
 
707
	#$result["function"],當前執行的函式名稱.
-
 
708
	#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
-
 
709
	#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
-
 
710
	#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
-
 
711
	#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
-
 
712
	#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
-
 
713
	#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
-
 
714
	#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
-
 
715
	#$result["notNeedVar"],字串陣列,多餘的參數名稱.
-
 
716
	#必填寫的參數:
-
 
717
	#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
-
 
718
	$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
-
 
719
	#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
-
 
720
	$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("data","serverSock","clientInfo","clientIndex","allConn");
-
 
721
	#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
-
 
722
	$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","resource","array","string","array");
-
 
723
	#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
-
 
724
	$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
-
 
725
	#可以省略的參數:
-
 
726
	#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
-
 
727
	#$conf["canBeEmptyString"]="false";
-
 
728
	#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
-
 
729
	#$conf["canNotBeEmpty"]=array();
-
 
730
	#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
-
 
731
	#$conf["canBeEmpty"]=array();
-
 
732
	#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
-
 
733
	#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array();
-
 
734
	#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
-
 
735
	#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("listenIp","listenPort","wsMode","processFuncs");
-
 
736
	#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
-
 
737
	#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","array");
-
 
738
	#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
-
 
739
	#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("127.0.0.1",null,"false",null);
-
 
740
	#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
-
 
741
	#$conf["arrayCountEqualCheck"][]=array();
-
 
742
	#參考資料來源:
-
 
743
	#array_keys=>http://php.net/manual/en/function.array-keys.php
-
 
744
	#建議:
-
 
745
	#增加可省略參數全部不能為空字串或空陣列的參數功能.
-
 
746
	$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
-
 
747
	unset($conf["variableCheck::checkArguments"]);
-
 
748
	
-
 
749
	#如果檢查參數失敗
-
 
750
	if($checkArguments["status"]==="false"){
-
 
751
		
-
 
752
		#設置執行失敗
-
 
753
		$result["status"]="false";
-
 
754
	
-
 
755
		#設置執行錯誤訊息
-
 
756
		$result["error"]=$checkArguments;
-
 
757
		
-
 
758
		#回傳結果
-
 
759
		return $result;
-
 
760
		
-
 
761
		}#if end
-
 
762
		
-
 
763
	#如果檢查參數不通過
-
 
764
	if($checkArguments["passed"]==="false"){
-
 
765
		
-
 
766
		#設置執行失敗
-
 
767
		$result["status"]="false";
-
 
768
	
-
 
769
		#設置執行錯誤訊息
-
 
770
		$result["error"]=$checkArguments;
-
 
771
		
-
 
772
		#回傳結果
-
 
773
		return $result;
-
 
774
		
-
 
775
		}#if end
-
 
776
 
-
 
777
	#取得收到的訊息
-
 
778
	$receivedData=$conf["data"];
-
 
779
	
-
 
780
	#取得 server 的 socket
-
 
781
	$serverSocket=$conf["serverSock"];
-
 
782
	
-
 
783
	#取得 client 的 socket
-
 
784
	$clientSocket=$conf["clientSock"];
-
 
785
	
-
 
786
	#取得 client 的資訊
-
 
787
	$clientInfo=$conf["clientInfo"];
-
 
788
	
-
 
789
	#取得 client 的索引
-
 
790
	$clientIndex=$conf["clientIndex"];
-
 
791
	
-
 
792
	#取得 all clients 的資訊
-
 
793
	$allConn=$conf["allConn"];
-
 
794
	
-
 
795
	#解析收到的資料
-
 
796
	$receivedData=json_decode($receivedData);
-
 
797
	
-
 
798
	#檢查參數($receivedData)
-
 
799
	#函式說明:
-
 
800
	#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
-
 
801
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
-
 
802
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
-
 
803
	#$result["function"],當前執行的函式名稱.
-
 
804
	#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
-
 
805
	#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
-
 
806
	#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
-
 
807
	#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
-
 
808
	#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
-
 
809
	#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
-
 
810
	#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
-
 
811
	#$result["notNeedVar"],字串陣列,多餘的參數名稱.
-
 
812
	#必填寫的參數:
-
 
813
	#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
-
 
814
	$conf["variableCheck::checkArguments"]["varInput"]=&$receivedData;
-
 
815
	#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
-
 
816
	$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("randomStr","sessionStorePath","sId");
-
 
817
	#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
-
 
818
	$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string");
-
 
819
	#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
-
 
820
	$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
-
 
821
	#可以省略的參數:
-
 
822
	#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
-
 
823
	#$conf["canBeEmptyString"]="false";
-
 
824
	#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
-
 
825
	#$conf["canNotBeEmpty"]=array();
-
 
826
	#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
-
 
827
	#$conf["canBeEmpty"]=array();
-
 
828
	#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
-
 
829
	#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array();
-
 
830
	#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
-
 
831
	$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("timeout");
-
 
832
	#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
-
 
833
	$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
-
 
834
	#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
-
 
835
	$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("300");
-
 
836
	#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
-
 
837
	#$conf["arrayCountEqualCheck"][]=array();
-
 
838
	#參考資料來源:
-
 
839
	#array_keys=>http://php.net/manual/en/function.array-keys.php
-
 
840
	#建議:
-
 
841
	#增加可省略參數全部不能為空字串或空陣列的參數功能.
-
 
842
	$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
-
 
843
	unset($conf["variableCheck::checkArguments"]);
-
 
844
	
-
 
845
	#如果檢查參數失敗
-
 
846
	if($checkArguments["status"]==="false"){
-
 
847
		
-
 
848
		#設置執行失敗
-
 
849
		$result["status"]="false";
-
 
850
	
-
 
851
		#設置執行錯誤訊息
-
 
852
		$result["error"]=$checkArguments;
-
 
853
		
-
 
854
		#回傳結果
-
 
855
		return $result;
-
 
856
		
-
 
857
		}#if end
-
 
858
		
-
 
859
	#如果檢查參數不通過
-
 
860
	if($checkArguments["passed"]==="false"){
-
 
861
		
-
 
862
		#設置執行失敗
-
 
863
		$result["status"]="false";
-
 
864
	
-
 
865
		#設置執行錯誤訊息
-
 
866
		$result["error"]=$checkArguments;
-
 
867
		
-
 
868
		#回傳結果
-
 
869
		return $result;
-
 
870
		
-
 
871
		}#if end
-
 
872
		
-
 
873
	#告訴 web socket server 要尋找對應的session檔案內容,看是否透過email認證了.
-
 
874
	#...
-
 
875
	
-
 
876
	}#function checkStatusOfEmailVarify end
471
877