のドキュメントに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
クレデンシャルのセットがもう1つしかない場合は、それ自体の内部を複製するだけです。
//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
}