文檔上ssh2_auth_password()
說:
返回TRUE或FALSE的成功失敗。
所以你可以只檢查是否返回false
if(ssh2_auth_password($ssh, $user, $pass) === false) {
//do stuff if it can't login
}
當你這樣做,你可能還需要添加一些錯誤檢查到ssh2_connect()
通話,因爲它可以返回一個非資源,如果它無法連接。
$ssh = ssh2_connect($ip, 22);
if($ssh === false) {
//do stuff if it can't connect
}
編輯發表評論
如果你想擁有它回退到另一個登錄嘗試,你可以做一對夫婦的方式。如果您只需擁有一組憑證,則可以簡單地在其內部複製if
。
//try the first login
if(ssh2_auth_password($ssh, $user, $pass) === false) {
//try the second set
if(ssh2_auth_password($ssh, $user2, $pass2) === false) {
//do stuff if it can't login
}
}
或者,如果你有大量的憑證來試試,你可以將它們存儲在一個數組和循環遍歷它
$creds = array(
array('user' => $user, 'pass' => $pass),
array('user' => $user2, 'pass' => $pass2),
//etc
);
$logged_in = false;
foreach($creds as $cred) {
if(ssh2_auth_password($ssh, $cred['user'], $cred['pass'])) {
$logged_in = true;
break;
}
}
if(!$logged_in) {
//do stuff when you can't login
}
確定生病測試這個權利現在,由於 – user1643454
確定此代碼的工作什麼辦法可以使它所以當它失敗時它會跳過它,使用編輯我的回答不同的SSH2登錄 – user1643454
。不要忘了標記接受答案,如果它確實回答你的問題。 – jprofitt