1

自分でゼロからサイトを構築することに決めたのも初めてなので、ここに投稿するのは初めてです。基本的なキャプチャ スクリプトを使用して連絡先ページを作成しています。クレイジーだと思うかもしれない理由から、キャプチャをテキストとして表示したいと思います。透明な背景では(アンチ)エイリアスがかなり悪く、私のサイトが不要な注目を集めることはまだないと思うので、png に反対することにしました。

これが私のcaptcha.phpです

<?php 

session_start();

$characters_on_image = 4;

$possible_letters = '0123456789';

$code = '';

$i = 0;
while ($i < $characters_on_image) { 
$code .= substr($possible_letters, mt_rand(0, strlen($possible_letters)-1), 1);
$i++;
}

echo $code;


header('Content-Type: text/plain');

$_SESSION['code'] = $code;
?>

私が抱えている問題は、それを使用<?php print $_SESSION['code']; ?>すると以前のコードが出力されることです。<label>私のプログラミングは非常に厄介で、現在生成されているコードをタグで表示する方法があるかどうか疑問に思っていましたか?

4

2 に答える 2

2

プレーン テキストの代わりにFIGletフォントの使用を検討してください。

Font: big
 __  __             
|  \/  |            
| \  / | ___   ___  
| |\/| |/ _ \ / _ \ 
| |  | | (_) | (_) |
|_|  |_|\___/ \___/ 

これを行うためのPHPライブラリは次のとおりです

http://bolknote.ru/files/figlet/

残念ながらページはロシア語なので、ここに Google 翻訳されたものがあります (翻訳者がコード例のレイアウトを壊しているので、元に戻す必要があるかもしれないことに注意してください):

于 2012-04-13T20:27:46.820 に答える
2

また、通常の文字のように見える (しかしそうではない) Unicode 文字を出力し、ユーザーにそれらを繰り返すように求めることもできます。キリル文字には、ラテン文字に見慣れた多くの文字がありますが、エンコード方法が異なります。

А vs A    В vs B    Е vs E    Ѕ vs S    І vs I    К vs K
М vs M    Н vs H    О vs O    Р vs P    Т vs T    Х vs X

これはクラックするのはかなり簡単ですが、実装は簡単で、ユーザーが解決するのも簡単です。

(コードサンプルに関して:セッション全体をスキップして、captcha.phpファイルからCAPTCHAをエコーするだけです。ソリューションのハッシュを必ず含めてください。)

于 2012-04-14T10:31:28.343 に答える