0

デフォルトで表示されるテキストの代わりに、「die」タグを使用してエラー サイトにリンクすることはできますか?

require_once('recaptchalib.php');
$privatekey = "*******";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if (!$resp->is_valid) {
die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
"(reCAPTCHA said: " . $resp->error . ")");
}

お気に入り:

die ('error.php');

もちろん、これはうまくいきません。しかし、ダイタグの使い方がわかりません。

4

1 に答える 1

0

die()渡された値を出力してスクリプトを停止する以外に何もできませんが、コードには、必要なことを行うための構造が既にあります。

if (!$resp->is_valid) {
    header('Location: http://example.com');
    die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
        "(reCAPTCHA said: " . $resp->error . ")");
}

このコードの前に何かを出力した場合は、別の方法を使用してリダイレクトする必要があることに注意してください。これは、header()ヘッダーが送信された後 (出力を開始することによって) は機能しないためです。

キャプチャが一致しなかった場合は、リダイレクトして実行を停止するよりも、プログラムの流れを変更した方がよいことに注意してください。リダイレクトすると(そのまま)、現在のリクエストに関連付けられているすべてのデータが失われますが、次のように設定$captcha_error = trueしてプログラムを続行すると(に基づいて適切なフローを変更する$captcha_error)、リセットしないため、ユーザーエクスペリエンスが向上しますキャプチャが間違っていたため、フォーム全体。

于 2012-06-27T11:58:57.037 に答える