ホームページ  >  記事  >  バックエンド開発  >  PHP検証コードパターンが表示できない

PHP検証コードパターンが表示できない

WBOY
WBOYオリジナル
2016-06-23 14:26:261021ブラウズ

次の captcha.php ファイルは、実行時に 500 エラーを報告し、検証コード パターンが表示されません
「$_SESSION['pass_phrase'] = SHA($pass_phrase);」という文をコメントアウトすると、エラーは発生しなくなります報告され、パターンが表示されます。その理由は何ですか?
& & lt;? PHP

// いくつかの重要なキャプチャ定数を設定します
captcha_numchars', 6); // パスフレーズの文字数
define('CAPTCHA_WIDTH', 100) // 画像の幅
define('CAPTCHA_HEIGHT', 25); // 画像の高さ

;ランダムなパスフレーズ
$pass_phrase = "";
for ($i = 0; $i $pass_phrase .= chr(rand(97, 122)); / 暗号化されたパスフレーズをセッション変数に保存します
$_SESSION ['pass_phrase'] = SHA($pass_phrase); // 画像を作成します
$img = imagecreatetruecolor(CAPTCHA_WIDTH, CAPTCHA_HEIGHT); // を設定します白の背景に黒のテキストとグレーのグラフィック
$bg_color = imagecolorallocate( $img, 255, 255, 255); // 白
$text_color = imagecolorallocate($img, 0, 0, 0); // 黒
$graphic_color = imagecolorallocate($img, 64, 64, 64); // ダークグレー

// 背景を塗りつぶします
imagefilledrectangle($img, 0, 0, CAPTCHA_WIDTH, CAPTCHA_HEIGHT, $bg_color); // ランダムな線を描画します
for ($i = 0; $i & lt; 5; $ i++) {
imageline($img, 0, rand() % CAPTCHA_HEIGHT, CAPTCHA_WIDTH, rand() % CAPTCHA_HEIGHT, $graphic_color); }

//ランダムなドットを散りばめます
for ($i = 0; $i imagesetpixel($img, rand() % CAPTCHA_WIDTH, rand() % CAPTCHA_HEIGHT, $graphic_color);
//パスフレーズ文字列を描画します
imagettftext($img, 18 , 0 , 5, CAPTCHA_HEIGHT - 5, $text_color, 'Courier New Bold.ttf', $pass_phrase) // ヘッダーを使用して画像を PNG として出力します
; header('Content-type: image/png');
imagepng ($img);

//
imagedestroy($img) ?>


ディスカッションに返信します

header('Content-type: image/png'); 先頭に移動します。

ヘッダーをコメントアウトして実行し、どのようなエラーが報告されるかを確認します

この header('Content-type: image/png'); を先頭に置くと、依然として 500 が報告され、Firefox は次のプロンプトを表示します:
画像 "http://localhost/captcha.php" は、独自の問題により表示できません

最前部に到達していない場合は、そのようなプロンプトは表示されません。また、最前部に到達した後、「$_SESSION['pass_phrase'] = SHA($pass_phrase);」という文のマークを外しても、引き続き実行できます。

ヘッダーのマークを外しても表示できます。 レポート 500:
GET captcha.php
500 Internal Server Error
localhost
0 B
127.0.0.1:80

レスポンスヘッダーの元のヘッダー情報
キャッシュ-コントロール no-store、no-cache、must-revalidate、post-check=0、pre-check=0
接続終了
Content-Length 0
Content-Type text/html
Date Sun, 03 Nov 2013 12:16 :16 GMT
有効期限 Thu, 19 Nov 1981 08:52:00 GMT
Pragma no-cache
サーバー Apache/2.2.25 (Win32) PHP/5.3.27
X-Powered-By PHP/5.3.27
リクエストヘッダー情報 元のヘッダー情報
Accept text/html,application/xhtml+xml, application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language zh-cn,zh;q= 0.8,en-us;q=0.5,en;q=0.3
キャッシュ制御 max-age=0
接続キープアライブ
Cookie PHPSESSID=9e4i75adp4ahnpba6ieq1pinn0
ホスト localhost
ユーザーエージェント Mozilla/5.0 (Windows NT 6.3; WOW64) ; rv:24.0) Gecko/20100101 Firefox/24.0

$_SESSION['pass_phrase'] = SHA($pass_phrase);

$_SESSION['pass_phrase'] = SHA1($pass_phrase); どうしますか?

、SHA() は MySQL の関数、PHP は sha1、ありがとう、ポイントをください

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。