2

YouTube のページがクラッシュすると、YouTube のインフラストラクチャや使用されているプログラムについて顧客が知識を得ることなく、YouTube の開発者に送信できる一種のエンコードされたメッセージが出力されることに気付きました。

このアイデアは、ご自身のサイトで実践するものですか?

4

3 に答える 3

2

最近のほとんどのフレームワークには、本番環境と開発環境で使用するためにさまざまなアプリケーション設定を使用する機能があります。

実稼働モード(サイトが顧客によって使用されている場合)では、セキュリティと設計上の理由から、エラーが表示されないようにする必要があります。したがって、log_errorsをオンにし、display_errorsをオフにすることがよくあります。回復不能なエラーが発生すると、ユーザーには「問題が発生しました。すぐに最高の人材を配置します」などのメッセージが表示されます。「エラーコード823」のような奇妙な番号をユーザーに表示しても意味がありません。cronワーカーを使用してエラーログを送信するか、ログを手動でチェックして、エラーメッセージがバグを追跡するのに十分なほど詳細であることを確認してください。

開発モード(開発中にローカルでサイトを実行している場合)では、エラーが発生したらすぐに確認する必要があります。したがって、display_errorsをオンにします。デザインが壊れてもかまわないでしょうし、うまくいけば何が起こっているのか理解できます。

エラーメッセージはプログラマーの親友ですが、ユーザーがエラーメッセージを経験する必要はありません。その場合は、空白のページやランダムなエラーコードだけでなく、ユーザーに適切なフィードバックを提供するようにしてください。

于 2013-02-09T10:11:20.590 に答える
2

PHP では必要ありません。
Flash とは異なり、PHP はサーバー側で実行されます。だから、どんなエラーメッセージでも記録するように PHP を作ってください。
php.ini ファイルでこれらのオプションを設定します

log_errors = On
display_errors = Off

ボランティアのユーザーがそれらを表示する必要はありません
が、Web サーバーのエラー ログを覗くだけで済みます。

于 2013-02-09T09:55:20.370 に答える
0

いくつかの基本的なエンコード/デコード関数を使用して、カスタムエラーハンドラーを作成するようなものを考えただけで、アイデアを拡張するのはあなた次第です:

// Set error handler
set_error_handler("customError");

// The error function handler
function customError($error, $errorMessage, $errorFile, $errorLine){
   echo(encodeError("<b>Error</b> [$error]: $errorMessage, on line $errorLine in $errorFile ."));
}

function encodeError($string){
  $array = str_split($string,1);
  $results = array();
  foreach ($array as $value) {
    $results[] = ord($value);
  }
  return(base64_encode(implode(".", $results)));
}

function decodeError($string){
  $array = explode(".", base64_decode($string));
  $results = array();
  foreach ($array as $value) {
    $results[] = chr($value);
  }
  return (implode("", $results));
}

 // Trigger error
 echo(3/0);

// We the developers decode it with the decode function
echo('<br><hr>'.decodeError('NjAuOTguNjIuNjkuMTE0LjExNC4xMTEuMTE0LjYwLjQ3Ljk4LjYyLjMyLjkxLjUwLjkzLjU4LjMyLjY4LjEwNS4xMTguMTA1LjExNS4xMDUuMTExLjExMC4zMi45OC4xMjEuMzIuMTIyLjEwMS4xMTQuMTExLjQ0LjMyLjExMS4xMTAuMzIuMTA4LjEwNS4xMTAuMTAxLjMyLjU2LjUzLjMyLjEwNS4xMTAuMzIuNjcuNTguOTIuMTE5Ljk3LjEwOS4xMTIuOTIuMTE5LjExOS4xMTkuOTIuMTAxLjEyMC4xMTIuMTA4LjQ4LjEwNS4xMTYuOTIuMTIyLjEwMS4xMTQuMTExLjQ5LjQ2LjExMi4xMDQuMTEyLjMyLjQ2'));
于 2013-02-09T10:20:27.523 に答える