ホームページ >バックエンド開発 >PHPチュートリアル >php、認証コード画像、文字化け
何が問題だったのかは分かりませんが、プレビューすると大量の文字化けが表示されます
ob_clean();
header("Content-Type: image/png");
$img=@ imagecreatetruecolor(50,20) または die("fjhb");
$bg_color=imagecolorallocate($img,255,255,255);
$border_color=imagecolorallocate($img, 200,200,200) ;
imagerectangle($img,0,0,49,19,$border_color);
for($i=2;$i<18;$i++){
$line_color=imagecolorallocate($img,rand(200,255) )、rand(200,255)、rand(200,255));
imageline($img,2,$i,47,$i,$line_color)
$str[0]="ABCDEFGHIJKLMNOPQRSTUVWXYZ ";
$str[1]="abcdefghijklmnopqrstuvwxyz";
$str[2]="01234567891234567890123456";
$imgstr[0]["s"]=$str[rand(0,2)][rand( 0, 25)];
$imgstr[0]["x"]=rand(2,5);
$imgstr[1] ][ "s"]=$str[rand(0,2)][rand(0,25)];
$imgstr[1]["x"]=$imgstr[0]["x"]+$ font_size- 1+rand(0,1);
$imgstr[1]["y"]=rand(1,3);
$imgstr[2]["s"]=$str[rand(0, 2) ][rand(0,25)];
$imgstr[2]["x"]=$imgstr[1]["x"]+$font_size-1+rand(0,1); [2 ]["y"]=rand(1,4);
$imgstr[3]["s"]=$str[rand(0,2)][rand(0,25)]; imgstr[3]["x"]=$imgstr[2]["x"]+$font_size-1+rand(0,1);
$imgstr[3]["y"]=rand(1,3) );
for($i=0;$i<4;$i++){
$text_color=imagecolorallocate($img,rand(50,180),rand(50,180)); ,$ font_size,$imgstr[$i]["x"],$imgstr[$i]["y"],$imgstr[$i]["s"],$text_color); $img );
imagedestroy($img);
?>
ディスカッションへの返信 (解決策)
コードが文字化けしているのは、ブラウザが画像ではなく文字を表示しているためですか?
ブラウザを閉じて、このアドレスに再度アクセスしてみてください。それでも動作しない場合は、ヘッダーに問題があると考えられます。
画像出力の場合は、中国語出力が発生する可能性があるため、UTF-8 文字セットを使用するのが最善です。
UTF-8 の場合は、BOM ヘッダーに注意する必要があります。
作者はとてもユーモアがあります
ob_clean(); //BOM ヘッダーがあっても画像に影響を与えないようにバッファーの内容をクリアします
header("Content-Type: image/png"); //後続のコンテンツが png 画像データであることを宣言します
したがって、プログラムに文法的以外のエラーがあったとしても、せいぜい文字化けではなくフォークになります ここでのテストは正常です
BOM が正しいかどうかを確認してくださいヘッダーが削除されました
gd ライブラリとその他の環境が完成したかどうか
主な感じはまだヘッダーの問題です ヘッダーの前に他の出力はありますか?
ファイルのエンコードが原因ですか?
lZ プレビューは次のように文字化けしていますか:
この問題は、ファイルのエンコーディングが次のとおりであるために発生します:
その後、それを
に変更する必要があります。これで問題ありません。プレビュー効果:
キャッシュをクリアしても問題ありません。昨夜ブラウザを閉じましたが、エンコードを変更した後、いつも文字化けが多発しましたが、今日コンピューターを起動してWebページをテストしたところ、どういうわけか正常に戻りました。コンピューターのせいにするしかありません。遊んでね! ! ! !