尝试将验证码添加到表单

时间:2011-02-08 19:24:34

标签: php security captcha

这是一些表单生成代码。我想添加验证码或数学验证。我有一个名为captcha.php的验证码类构造文件。我已经在我写的更基本的PHP表单上使用过这个类,但以下内容是由其他人编写的。我想我可以添加另一个名为captcha的案例或者创建一个smartforms_captcha函数。有任何想法吗?

function smartforms_form_field($type,$name,$class = '',$extra = array(),$prefill = true) {
    global $sf_form,$sf_fid;

    if (!empty($extra) && !is_array($extra)) parse_str($extra,$extra);
    $classes = array('input_' . $type, $sf_form->field[$sf_fid][$name]);
    if (!is_array($class)) $class = preg_split('#\s+#',$class);
    $classes = trim(implode(' ',array_merge($classes,$class)));

    $value = ($prefill) ? $sf_form->values[$sf_fid][$name] : '';
    switch ($type) {
        case 'text':
        $autocomplete = ($extra['autocomplete'] == 'off') ? 'off' : 'on';
        $format = '<input type="text" name="%1$s" id="%1$s" class="%2$s" value="%3$s" autocomplete="%4$s" />';
        printf($format,$name,$classes,$value,$autocomplete);
        break;
        case 'textarea':
        $rows = $extra['rows'];
        $cols = $extra['cols'];
        $format = '<textarea name="%1$s" id="%1$s" class="%2$s" rows="%3$d" cols="%4$d">%5$s</textarea>';
        printf($format,$name,$classes,$rows,$cols,$value);
        break;
    }
}

2 个答案:

答案 0 :(得分:1)

我实现了一个图像验证码类,它也是安全的......您可以下载并使用代码,如果您发现任何有趣的更改,请告诉我:

http://phphelperfunctions.blogspot.com/2010/09/ultimate-security-for-image-captcha-php.html

答案 1 :(得分:0)

验证码与输入字段不同,即具有两个元素,一个输入文本和一个图像的组,可选地是一个用于重新加载图像和监听验证码的按钮。 Personaly我选择创建一个新功能。

function smartforms_captcha($name, $class = '', $extra = array(), $prefill = true) {

    global $sf_form,$sf_fid;

    if (!empty($extra) && !is_array($extra)) parse_str($extra,$extra);
    if (!is_array($class)) $class = preg_split('#\s+#',$class);
    $classes = trim(implode(' ',array_merge($classes,$class)));

    // Create your markup correctly
    $format = '<input type="text" name="$name" id="$name" class="$class" value="" />';
    $format = '<img src="/captha.php?' . uniqid() . '" />'

    }
}