-1

受け取った PHP エラー通知に基づいて、2 つの特定の条件を設定できるように、この PHP コードをカスタマイズする方法を見つけようとしています。

<?php

/* connect to yahoo */

$hostname = '{imap.mail.yahoo.com:993/imap/ssl}INBOX';

$username = 'user@yahoo.com';

$password = 'password';

$alerts = imap_alerts()



/* try to connect */

$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to yahoo: ' . $alerts);

 if ( $inbox === false ) {

exit ("Can't connect: " . imap_last_error() ."\n");

}

else

{

echo"Logined:";

//do stuff

}


?>

私が達成したいのは:

  1. IMAP サーバーに接続します。
  2. ユーザーとパスワードの組み合わせが正しいかどうかを確認し、正しい場合はログインしてください (説明しました)。
  3. そうでない場合は、「ログイン失敗が多すぎます」という IMAP エラーが表示されます。
  4. そうだが、Yahoo が認識しない場所からログインしようとしている場合、つまり、以前にそこからログインしたことがない場合は、同じエラーが発生します。
  5. ユーザー/パスの組み合わせが正しくないか、場所が認識されないかによって、ユーザーを「page1」または「page2」にリダイレクトします。

imap_last_error は、両方のケースで同じエラーを返します。ただし、エラー アラート ( imap_alerts ) は両方のケースで異なり、ここでそれらを区別できます。

ログインしようとして、特定のテキスト文字列を含むエラー通知を受信したときに、そのテキスト文字列を読み取るだけで (エラーをまったく表示しない)、「1」にリダイレクトするように設定するにはどうすればよいですか? 」または「2」?

リダイレクト自体は問題になりません。ここで私をつまずかせているのは差別化です。受信した IMAP 通知をテキスト ファイルにダンプする (または、理想的には、直接読み取る) ことを望みます。また、「文字列 A」または「文字列 B」が含まれているかどうかに応じて、次のスクリプト アクションはいずれかへのリダイレクトになります。ページ 1 またはページ 2。

IMAP 間違ったユーザー/パス コンボ通知:

Notice: 不明: [AUTHORIZATIONFAILED] ユーザー名またはパスワードが正しくありません。

IMAP の不明な場所に関する通知:

注意: 不明: [AUTHORIZATIONFAILED] https://login.yahoo.comでアカウントを確認してください。

4

1 に答える 1

-1

エラーが表示されないよう@imap_openにするには、その使用後に関数の前に @ を使用します

imap_errors();
imap_alerts();

エラーを取得するには例:

$errors = imap_errors();
for ($i=0; $i<count($errors); $i++) {
   echo "{$errors[$i]} <BR>\n";
}
于 2013-10-09T09:28:09.343 に答える