1

这是我第一次在这里发帖,因为这也是我第一次决定为自己从头开始建立一个网站。我正在使用基本的验证码脚本创建一个联系页面。由于您可能认为很疯狂的原因,我想将验证码显示为文本。我决定反对 png,因为(抗)锯齿在透明背景下非常糟糕,而且我认为我的网站不会引起太多不必要的关注。

这是我的验证码.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/

不幸的是页面是俄语的,所以这里是谷歌翻译的一个(请注意,翻译器破坏了代码示例的布局,因此您可能需要返回原始代码示例):

于 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 回答