私は何年も前から使用してきたかなりのPHPフォーム(スパム防止の点で)を持っていますが、captchaが使用するフォントを変更したい非常に多くの人が数値「0」と大文字「O」を区別できないため、私のフォームが「機能しない」と考えて苦情を受けます。私は現在どのフォントを使用しているのかわかりません - hereを参照してください。PHP Captchaの画像に別のフォントを使用する必要があります
しかし、 "Times New Roman"、Timesまたはserifのように読みやすいフォントに変更したいと思います。ここで
はキャプチャ画像を生成するために私のPHPコードです:
<?php if (!isset($_SESSION)) session_start(); header("(anti-
spam-content-type:) image/png");
$enc_num = rand(0, 9999);
$key_num = rand(0, 24);
$hash_string = substr(md5($enc_num), $key_num, 5); // Length of
String
$hash_md5 = md5($hash_string);
$_SESSION['verify'] = $hash_md5;
// Fallback
setcookie("verify", $hash_md5, time()+3600, "/");
session_write_close();
// Verification Image Background Selection
$bgs = array("img/1.png","img/2.png","img/3.png");
$background = array_rand($bgs, 1);
// Verification Image Variables
$img_handle = imagecreatefrompng($bgs[$background]);
$text_colour = imagecolorallocate($img_handle, 108, 127, 6);
$font_size = 5;
$size_array = getimagesize($bgs[$background]);
$img_w = $size_array[0];
$img_h = $size_array[1];
$horiz = round(($img_w/2)-
((strlen($hash_string)*imagefontwidth(5))/2), 1);
$vert = round(($img_h/2)-(imagefontheight($font_size)/2));
// Make the Verification Image
imagestring($img_handle, $font_size, $horiz, $vert, $hash_string,
$text_colour);
imagepng($img_handle);
// Destroy the Image to keep Server Space
imagedestroy($img_handle);
?>
今注意してください、私のPHPの知識は2年古いの語彙と同等のである - ので、私と一緒に裸してください。
先日、これについていくつかの調査をしましたが、これらの投稿を再度見つけることはできません。
私はそうのようにするimagestring内$フォントを追加してみました:
imagestring($img_handle, $font, $font_size, $horiz, $vert,
$hash_string,
と、変数:
$フォント= 'セリフ';
しかし、キャプチャは生成されません。
私は間違っていますか?私はフォントをserif形式にしたいだけです。 フォントファイルをホストしたり、それをユーザーのPCのフォントの場所(例:C:\ Windows \ Fonts \ serif.ttf)に向けることなく、この字幕にフォントタイプ(serif)を宣言する簡単な方法はありますか?後者の理由は、誰かがアンドロイドスマートフォンを使用していて、C:\ Windows \ Fonts \ serif.ttfの場所がうまくいかない場合に起こります。
"私はTimes New Roman、Times、またはSerifのように読みやすいフォントに変更したいと思います。"キャプチャを捨てなさい。キャプチャの全体のポイントは、コンピュータが読むことが難しいので、奇妙なフォントです。または、ReCaptchaに切り替えます。 – ceejayoz
あなたのスクリーンショットに表示されているキャプチャは、テキストが読みやすくなっているため、効果がない可能性があります。代わりに[GoogleのreCAPTCHA](https://www.google.com/recaptcha/intro/index.html)のようなものを使用してみませんか? – Chris
@ceejayoz ...人間の目で見やすくすると迷惑メールの脆弱性が増すということを教えてください。キャプチャ画像を大きくしても同じことが適用されますか?もしそうなら、その差をテストして、より多くの(または任意の)迷惑メールを受け取るかどうかを確認することが良いでしょう – user3364730