refda/captcheck

此软件包最新版本(v0.4)没有可用的许可信息。

PHP Captcha 库

v0.4 2017-06-13 08:21 UTC

This package is not auto-updated.

Last update: 2024-09-25 09:26:46 UTC


README

Captcheck

简单、轻量、自托管 CAPTCHA 服务。适用于现代浏览器(包括 IE9+)。使用 Font-Awesome 的图标选择。支持纯文本访问模式和仅键盘操作。

感谢 textcaptcha.com 为纯文本 CAPTCHA 提供数据。

如何使用

在您的表单中,放置一个带有 "captcheck_container" 类的空 div。将 captcheck.js(或 captcheck.min.js)添加到您的页面中。

<!DOCTYPE html>
<html>
    <head>
        <title>Captcheck Sample Form</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script src="captcheck.js"></script>
    </head>
    <body>
        <form action="submit.php">
            <input type="text" name="form_field" placeholder="Some random form field" />
            <div class="captcheck_container">
            </div>
            <button type="submit">Submit Form</button>
        </form>
    </body>
</html>

当表单提交时,您的服务器将接收到两个额外的表单字段:captcheck_session_codecaptcheck_selected_answer。在您的表单处理代码中,向 http(s)://captcheck-url/api.php 发送请求。传递变量 session_idanswer_id 与表单一起发送的值,并传递变量 action,其值为 verify。您将收到一个 JSON 响应,其中包括(其他事项)"result": true"result": false。如果结果为 false,则用户未通过测试,并且还有一个带有解释的变量 msg

示例 URL:http(s)://captcheck-url/api.php?action=verify&session_id=<captcheck_session_code>&answer_id=<captcheck_selected_answer>

示例响应:{"session":"some_session_id","result":true} {"session":"some_session_id","result":false,"msg":"Answer incorrect."}

###内容安全策略和非ce

data-stylenonce="nonce_here" 添加到 .captcheck_container div 中。如果您在一个页面上有多个 CAPTCHA,则只需指定其中一个 nonce。

安装

  1. 运行 composer install。
  2. 将 settings.template.php 复制到 settings.php 并插入您的设置。
  3. 安装数据库。
  4. 使用正确的 api_url 修改 captcheck.js。
  5. 按照“如何使用”部分和 test.html、test.php 中的示例设置进行操作。

执行流程

JS = captcheck.js, API = api.php, FORM = parent form,
SITE = form processing code, -> = some action taken on the right by the left

JS -> API:      Request session ID, question, and answers (with scrambled random codes)
API -> JS:      Sends info, saves session ID, correct answer, and scrambled answer codes in DB
JS -> API:      Requests answer images by sending scrambled value and session ID
JS -> FORM:     Adds hidden field with value=session ID, displays question and images (or text box)
[USER SUBMITS FORM]
SITE -> API:    Sends session ID and answer
API -> SITE:    Responds with true/false to indicate if the answer is valid, marks session as expired to prevent CAPTCHA reuse