0

アカウント残高内の正しい金額と正しいウォレットで実行すると、ビットコインエンジンが応答することを検証しようとしていますトランザクションIDを取得していますが、金額を入力しすぎて偽のウォレットを入力しても、エラーは返されず、HTMLの空白ページのみが表示されます、頭と体の要素。デバッグモードはありますか、または応答を受信するためにできることはありますか?

$message = ($bitcoin->sendfrom($mywallet,$to_wallet,$wammount));

jsonRPCClient を使用してビットコイン エンジンに接続しています。

ただし、RPCコマンドを使用してコンソールでそれを行うと

私はこれを取得しています: アカウントに十分な資金がありません (コード -6)

リダイレクトのコード

if ($message !== '') {
ob_start(); 
header("Location: mywallet.php?error=done");
die();

} else { 


ob_start(); 
header("Location: mywallet.php?error=true");
die();


    }

更新はい正しいです。ob_start(); を追加します。上記のように、一度 (try,catch) イベントを試行すると、成功すると空白のページが表示されます (通常の方法のようにトランザクション ID ではなく、トランザクション ID が返されます) 失敗すると、ビットコイン サーバーに接続できません。 . 必要なのは非常に単純に聞こえますが、トランザクションが成功または失敗、成功したことを確認するにはどうすればよいですか -> ID が返され、失敗 -> エラーが返されます。SOフォームが送信された後、ユーザーをページの適切な場所に誘導できます。実際に私が行っているのは、ユーザーが金額とウォレットを挿入して、ビットコイン アカウントからプライベート アカウントに資金を戻す資金フォームを引き出すことです。これが理解に役立つことを願っています。

更新 2そのための構造を変更しましたが、非常にうまく機能しているようです。トランザクション ID にその単語がなく、他の例外が「サーバーに接続できません...」であるため、基本的には「不可能」という単語を探しています。私を導いてくれてありがとう。フィードバックはありますか?

try {
       $message = ($bitcoin->sendfrom($mywallet,$to_wallet,$wammount));
      }
catch (Exception $e) {
       $e->getMessage();

}
// exit;

if (!strpos($e,'Unable') !== false){

header("Location: mywallet.php?error=done");
die();

} else { 


header("Location: mywallet.php?error=true");
die();


    }
4

1 に答える 1

0

どのビットコイン php ライブラリを使用していますか? もしかしてこれみたい?

その場合、エラー メッセージは返されず、BitCoinClientException がスローされます。

だからあなたは次のようなものが必要です

  try {
       $message = ($bitcoin->sendfrom($mywallet,$to_wallet,$wammount));
       }
  catch (Exception $e) {
       echo $e->getMessage();
   }

更新 ヘッダー位置の前に何も出力しないため、ob_start は不必要に思えます。この時点に到達する前に何かを出力していない限り、ヘッダーを送信することはできません。したがって、出力の前に ob_start をスクリプトの先頭に移動する必要があります。

また、メッセージを wallet.php スクリプトに送信していません。それともその時点で終わりですか?


RE: update 2 追加する可能性があるのは、「Unable」を含まない、まだ考えていない他の例外メッセージが発生する可能性です。私はもっ​​と好きなことをします:

$errorOccured = false;
try {
       $message = ($bitcoin->sendfrom($mywallet,$to_wallet,$wammount));
      }
catch (Exception $e) {
       $errrorMessage = $e->getMessage();
       $errorOccured = true;

}

if (!$errorOccured) {
   ...
 }
else {
header("Location: mywallet.php?error=true&errormsg=" . $errorMessage);
...
}

これには、追加の GET パラメータとして受け入れるように mywallet.php を変更し$errorMessageて、それをユーザーに送り返す必要があります。$message成功時に送信するために、トランザクション ID を含む別のパラメーターを追加で使用するとよいでしょう。

于 2013-09-23T16:22:08.587 に答える