最近由於項目需要,從一個前端變成了後端,不得不做起背景工作。想著我成為全棧工程師的偉大目標,更加堅定了自己的幹勁兒。雖然之前看過nodejs,但是真正用過的後台語言還是只有php,所以選擇了php這門語言來給同事們寫後台。感覺自己寫的php根本就是僅僅滿足了基本需求,還要不停的學習。
在完成項目的過程中,移動端開發人員要求他們每次都是請求同一個url,然後我這邊根據參數不同在後台實現跳轉,請求對應的php。之前是想著他們不同的請求直接請求對應的php就好了,現實並非如此。
那麼如何在php之間實現跳轉呢。我用的是header()來實現,廢話不多說,直接上代碼:
$serversName=$_POST['serversName'];if($serversName=='register'){ @$phoneNumber=$_POST["phoneNumber"]; @$password=$_POST["password"]; @$nickName=$_POST["nickName"]; @$userId="panaiduan"; @$headImg=$_POST["headImg"]; @$token="abcdefghijklmn"; @$deviceId=$_POST["deviceId"]; @$clientOS=$_POST["clientOS"]; header('Location:register.php?phoneNumber='.$phoneNumber .'&password='.$password .'&nickName='.$nickName .'&userId='.$userId .'&headImg='.$headImg .'&token='.$token .'&deviceId='.$deviceId .'&clientOS='.$clientOS);}else if($serversName=='login'){ $phoneNumber=$_POST["phoneNumber"]; $password=$_POST["password"]; header('Location:login.php?phoneNumber='.$phoneNumber.'&password='.$password);}else if($serversName=='applyRoom'){ $roomName=$_POST["roomName"]; $channelId=$_POST["channelId"]; $roomDescribe=$_POST["roomDescribe"]; $timeStart=$_POST["timeStart"]; $timeEnd=$_POST["timeEnd"]; $newscast=$_POST["newscast"]; header('Location:createRoom.php?roomName='.$roomName .'&channelId='.$channelId .'&roomDescribe='.$roomDescribe .'&timeStart='.$timeStart .'&timeEnd='.$timeEnd .'&newscast='.$newscast);}else if($serversName=='getRoom'){ $phoneNumber=$_POST['phoneNumber']; header('Location:getRoomInfo.php?phoneNumber='.$phoneNumber);}else if($serversName=='password'){ $phoneNumber=$_POST["phoneNumber"]; $password=$_POST["password"]; header('Location:resetPassword.php?phoneNumber='.$phoneNumber.'&password='.$password);}else if($serversName=='modifyInfo'){ $phoneNumber=$_POST["phoneNumber"]; $nickName=$_POST["nickName"]; header('Location:modifyInfo.php?phoneNumber='.$phoneNumber.'&nickName='.$nickName);}
這就是index.php的代碼,每次他們請求都請求該頁面。
每次請求,都會有一個serversName參數,該參數表示該次請求的目的,是跟移動端人員提前定義好的。根據serversName的值的不同,進行相應的跳轉。
header('url');
header裡面的參數url即為想要跳轉到的頁面,如果想要把參數傳過去,可以使用get方式將請求參數通過index.php傳到目標頁面,這裡有個問題需要注意,請求到index.php是post方式的請求,index.php跳轉到目標頁面是get方式傳參,在目標頁面接收參數時要注意。
header('Location:login.php?phoneNumber='.$phoneNumber.'&password='.$password);
如上這樣就把兩個參數傳遞過去了。
這樣的做法有點像nodejs裡面的路由,我的index.php通過判斷參數裡面的serversName的不同來跳轉到對應的php頁面,並將除serversName外的參數繼續傳遞過去。由於自己剛剛進行php開發,懂得也不多,有什麼問題歡迎大家指出。
通過header()進行跳轉,解決了項目需求,感覺還不錯。