创建验证码,带加号的麻烦

时间:2012-09-15 11:15:20

标签: php captcha

我正在尝试使用非常简单的计算总和来创建验证码。 但是当我尝试添加+时,它会变成一个空白框。

问题2和3

Q2:帽子标题真的需要并且有用吗?

Q3:$ font = dirName( FILE )。' /font/karate/Karate.ttf' ;;有人能解释一下 FILE 的作用吗?

这是我的代码:

<?php
    ob_start();
    session_start();

    $randomnr  = rand(1, 5);
    $randomnr2 = rand(1, 5);
    $plus = '+';
    $randanswer = $randomnr + $randomnr2;
    $_SESSION['randomnr2'] = md5($randanswer); 

    $im = imagecreatetruecolor(80, 20);

    $white = imagecolorallocate($im, 255, 255, 255);
    $grey  = imagecolorallocate($im, 150, 150, 150);
    $black = imagecolorallocate($im, 0, 0, 0);

    imagefilledrectangle($im, 0, 0, 80, 25, $black);


    $font = dirName(__FILE__).'/font/karate/Karate.ttf'; //wat is dit?

    imagettftext($im, 15 , 7, 15, 19, $grey, $font, $randomnr);
    imagettftext($im, 15 , 4 , 30, 19, $grey, $font , $plus);  *PROBLEM*
    imagettftext($im, 15 , 10,  50, 19, $white, $font, $randomnr2);

    //prevent caching on client side:
    header("Expires: Wed, 1 Jan 1997 00:00:00 GMT");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");

    header ("Content-type: image/gif");
    imagegif($im);
    imagedestroy($im);

    ob_end_flush;

?>

示例:http://nightcore.nl/captcha/captcha.php

如果你看到我绝对不会做的事情,请告诉我并告诉我什么是更好用的!

1 个答案:

答案 0 :(得分:4)

您正在使用的Karate font没有加号作为角色!

见0043的方框:它是空的。

__FILE__是正在执行的php文件的文件名和完整路径。 从php 5.3开始,dirname(__FILE__)可以替换为__DIR__