標籤:blog http os io ar for art div cti
方法如下:
<?phpheader(‘Content-Type: text/html; charset=UTF-8‘);define(‘APP_ROOT‘, dirname(__FILE__) . DIRECTORY_SEPARATOR);$wsdlurl = "http://uniplatform.essence.com.cn/UniIdentity.asmx?wsdl";$domain = "http://tgfx.essence.com.cn";$qydomain = "http://ep.essence.com.cn";$scharset = "utf-8";$qyuser = null;session_start();$logincert =(empty($_GET["logincert"])) ? false:trim( $_GET["logincert"]);$loginsso =(empty($_GET["ssocert"])) ? false:trim( $_GET["ssocert"]);//F38531ADE7D5221BE0438C92070AC392if($logincert){//是否已經在本平台登入過$qyuser = $_SESSION[‘loginQiYeUserInfo‘];if(isset($qyuser) && !empty($qyuser)){if( $qyuser[‘loginCert‘] && $qyuser[‘loginCert‘] == $logincert ){//已經登入 直接進入 系統echo ‘<script>window.location.href="‘. $domain .‘"</script>‘;exit;}else{//清空session $_SESSION[‘loginQiYeUserInfo‘] = null; //可能是另一個使用者進來}}else{//取下COOKIE中是否有/*if (isset($_COOKIE["loginQissocert"])) $loginsso = trim($_COOKIE["loginQissocert"]);*/}$rest = checkIntoSystem ($wsdlurl ,$logincert,$loginsso , $scharset , $qyuser); //認證if($rest) {//把$loginsso 儲存到Cookie//setcookie("loginQissocert", $loginsso,time()+3600);//去拿到 員工的ID 以及其它資訊儲存在Session中echo ‘<script>window.location.href="‘. $domain .‘"</script>‘;exit;}else{echo ‘<script>window.location.href="‘. $domain .‘/fail.html"</script>‘;exit;}}/** * 認證 登入人員 */function checkIntoSystem( $wsdlurl ,$logincert,$loginsso ="" ,$scharset="utf-8",& $qyuser =null ){if(empty($logincert)) return false;$scoptions = array (‘trace‘ => true,‘soap_version‘ => SOAP_1_2,‘exceptions‘ => false,‘encoding‘ => $scharset);$checkparam = array (‘userIP‘ => getClientIP(), //IP地址‘loginCert‘ => @ $logincert ,‘SSOCert‘ => $loginsso, //登入的資訊‘target‘ => "1045"//機器編號);//print_r($checkparam);//調用門戶介面測試try {$client = new SoapClient($wsdlurl, $scoptions); //print_r($client->__getFunctions()); //print_r($client->__getTypes());/** * 驗證用使用者是否能夠進入系統性 */$resultdata=null ;$check_rt = $client->__soapCall("SSOAuthenticat", array($checkparam) );if ( $check_rt ) { //SSOAuthenticatResult是認證傳回值變數$returnstr = $check_rt->SSOAuthenticatResult;if ($returnstr) {$resultdata = explode(‘|‘, $returnstr);}//print_r($resultdata);$rcode = trim($resultdata[0]);switch ($rcode){case "100": $logusername = @ trim($resultdata[1]); $qyuser[‘loginCert‘] = $_GET["logincert"];$qyuser[‘ltype‘] = "QAN";$qyuser[‘loginuname‘] = $logusername;$_SESSION[‘loginQiYeUserInfo‘] = $qyuser;return true;//認證通過 可以登入 break;case "201":echo "認證結果:驗證失敗"; break; case "101":echo "認證結果:沒有許可權"; break; default:echo "未知錯誤"; break;} } else {echo "認證返回結果為NULL,請檢查再試。";} } catch (SoapFault $soapFault) {//echo $soapFault;echo "<===>" . $soapFault->faultstring;$file = APP_ROOT."logs/error/".date("Ymd_His").time()."log";file_put_contents($file,$soapFault);//記錄異常資訊}return false;} // 定義一個函數getIP()function getClientIP(){$ip = "";if (getenv("HTTP_CLIENT_IP"))$ip = getenv("HTTP_CLIENT_IP");else if(getenv("HTTP_X_FORWARDED_FOR"))$ip = getenv("HTTP_X_FORWARDED_FOR");else if(getenv("REMOTE_ADDR"))$ip = getenv("REMOTE_ADDR");else $ip = "Unknow";return $ip;} //擷取所有部門function SoapAllDepar($wdsl, $options) { $mms = $client->GetAllDepartment(NULL); //$xmlstring = base64_decode($mms->GetAllDepartmentResult); }
PHP 調用webService方式