{"id":19144071,"url":"https://github.com/fabianwennink/iconcaptcha-php","last_synced_at":"2025-05-16T01:05:38.726Z","repository":{"id":22006973,"uuid":"94702110","full_name":"fabianwennink/IconCaptcha-PHP","owner":"fabianwennink","description":"A self-hosted, customizable, easy-to-implement and user-friendly captcha for PHP.","archived":false,"fork":false,"pushed_at":"2025-03-22T13:09:56.000Z","size":1411,"stargazers_count":161,"open_issues_count":2,"forks_count":30,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-05-09T22:48:36.593Z","etag":null,"topics":["anti-bot","bots","captcha","captcha-alternative","captcha-generator","captcha-image","form-validation","gdpr-compliant","icon-captcha","iconcaptcha","javascript-captcha","jquery-captcha","php-captcha","security","user-friendly"],"latest_commit_sha":null,"homepage":"https://www.fabianwennink.nl/projects/IconCaptcha/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fabianwennink.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"custom":["https://paypal.me/nlgamevideosnl","https://www.buymeacoffee.com/fabianwennink"]}},"created_at":"2017-06-18T17:22:34.000Z","updated_at":"2025-05-06T11:19:47.000Z","dependencies_parsed_at":"2023-10-16T13:26:44.744Z","dependency_job_id":"d97ee64f-e13f-4123-b570-8de31c7ed923","html_url":"https://github.com/fabianwennink/IconCaptcha-PHP","commit_stats":null,"previous_names":["fabianwennink/iconcaptcha-php"],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabianwennink%2FIconCaptcha-PHP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabianwennink%2FIconCaptcha-PHP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabianwennink%2FIconCaptcha-PHP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabianwennink%2FIconCaptcha-PHP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fabianwennink","download_url":"https://codeload.github.com/fabianwennink/IconCaptcha-PHP/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254448579,"owners_count":22072764,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anti-bot","bots","captcha","captcha-alternative","captcha-generator","captcha-image","form-validation","gdpr-compliant","icon-captcha","iconcaptcha","javascript-captcha","jquery-captcha","php-captcha","security","user-friendly"],"created_at":"2024-11-09T07:33:36.434Z","updated_at":"2025-05-16T01:05:34.382Z","avatar_url":"https://github.com/fabianwennink.png","language":"PHP","funding_links":["https://paypal.me/nlgamevideosnl","https://www.buymeacoffee.com/fabianwennink"],"categories":[],"sub_categories":[],"readme":"\u003cbr/\u003e\n\u003cp align=\"center\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://i.imgur.com/k8sIUQI.png\"\u003e\n      \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://i.imgur.com/RMUALSz.png\"\u003e\n      \u003cimg alt=\"IconCaptcha Logo\" src=\"https://i.imgur.com/RMUALSz.png\"\u003e\n    \u003c/picture\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cstrong\u003eA self-hosted, customizable, easy-to-implement and user-friendly captcha.\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/fabianwennink/IconCaptcha-PHP/releases\"\u003e\u003cimg src=\"https://img.shields.io/badge/version-4.0.5-orange.svg?style=flat-square\" alt=\"Version\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://packagist.org/packages/fabianwennink/iconcaptcha\"\u003e\u003cimg src=\"https://img.shields.io/packagist/v/fabianwennink/iconcaptcha.svg?style=flat-square\" alt=\"Latest Version on Packagist\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://fabianwennink.nl/projects/IconCaptcha/license\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square\" alt=\"License\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://www.buymeacoffee.com/fabianwennink\"\u003e\u003cimg src=\"https://img.shields.io/badge/support-Buy_Me_A_Coffee-lightblue.svg?style=flat-square\" alt=\"Buy me a coffee\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://sonarcloud.io/dashboard?id=fabianwennink_IconCaptcha-PHP\"\u003e\u003cimg src=\"https://img.shields.io/sonar/alert_status/fabianwennink_IconCaptcha-PHP?server=https%3A%2F%2Fsonarcloud.io\u0026style=flat-square\u0026logo=sonarcloud\" alt=\"Sonar Quality\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://sonarcloud.io/dashboard?id=fabianwennink_IconCaptcha-PHP\"\u003e\u003cimg src=\"https://img.shields.io/sonar/security_rating/fabianwennink_IconCaptcha-PHP?server=https%3A%2F%2Fsonarcloud.io\u0026style=flat-square\u0026logo=sonarcloud\u0026color=%234c1\" alt=\"Sonar Security\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://sonarcloud.io/dashboard?id=fabianwennink_IconCaptcha-PHP\"\u003e\u003cimg src=\"https://img.shields.io/sonar/bugs/fabianwennink_IconCaptcha-PHP?server=https%3A%2F%2Fsonarcloud.io\u0026style=flat-square\u0026logo=sonarcloud\" alt=\"Sonar Bugs\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://sonarcloud.io/dashboard?id=fabianwennink_IconCaptcha-PHP\"\u003e\u003cimg src=\"https://img.shields.io/sonar/vulnerabilities/fabianwennink_IconCaptcha-PHP?server=https%3A%2F%2Fsonarcloud.io\u0026style=flat-square\u0026logo=sonarcloud\" alt=\"Sonar Vulnerabilities\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n___\n\nIntroducing IconCaptcha, a self-hosted captcha solution that's designed to be fast, user-friendly, and highly customizable. Unlike other captchas, IconCaptcha spares users the need of deciphering hard-to-read text images, solving complex math problems, or engaging with perplexing puzzle games. Instead, with IconCaptcha it's as straightforward as comparing up to 8 icons and selecting the least common one.\n\nIconCaptcha doesn't just prioritize users; it's also developer-friendly. In just a few steps, you can have IconCaptcha integrated into your website. Even if you're new to PHP and JavaScript, installing IconCaptcha is a straightforward process. The included demo pages in this repository provide all the necessary code to get IconCaptcha up and running. For more in-depth insights, take a moment to explore the information provided on this page and the wiki.\n\n___\n\n### [▶ Try the live demo here!](https://www.fabianwennink.nl/projects/IconCaptcha/#!demonstration)\n\n\u003cimg src=\"https://i.imgur.com/WsWdBRL.png\" title=\"IconCaptcha widget examples\" alt=\"IconCaptcha light and dark theme widget examples.\" /\u003e\n\n**[Using ASP.NET instead? Try IconCaptcha for ASP.NET](https://github.com/fabianwennink/IconCaptcha-ASP.NET)** _(not currently maintained - will continue in Q4 of 2023)_\n___\n\n## Installation\n\n### Composer\n```bash\ncomposer require fabianwennink/iconcaptcha\n```\nOnce the package has been installed, continue with the remaining [installation instructions](https://github.com/fabianwennink/IconCaptcha-PHP/wiki/Getting-Started#installation), followed by the [setup instructions](https://github.com/fabianwennink/IconCaptcha-PHP/wiki/Implementation).\n\n### Manual Installation\nIt is recommended to use Composer. However, if you are unable to, follow the [manual installation instructions](https://github.com/fabianwennink/IconCaptcha-PHP/wiki/Getting-Started#manual-installation) and [setup instructions](https://github.com/fabianwennink/IconCaptcha-PHP/wiki/Implementation).\n\n## Features\n* 🏠 __Self-Hosted:__ As a self-hosted solution, IconCaptcha eliminates reliance on third-party services, keeping things under your control.\n* 🚫 __No Data Sharing:__ Unlike other captchas, IconCaptcha's self-hosted nature ensures no user data is shared with third parties.\n* 🔐 __Server-Side Validation:__ All validation is carried out server-side, boosting security by eliminating exposure of sensitive processes on the client side.\n* 😊 __User-Friendly:__ Replace complex captchas for easily understandable images, delivering a smoother experience for your users.\n* 💾 __Database Support:__ Store and manage challenge data using various popular databases like MySQL, SQL Server, PostgreSQL, and SQLite.\n* 🌐 __Cross-Domain Integration:__ With CORS support, IconCaptcha effortlessly integrates into applications spanning different domains.\n* 🎣 __Events and Hooks:__ Events are triggered throughout the code, allowing you to inject custom code and fine-tune the experience to your needs.\n* 🎨 __Contemporary Design:__  IconCaptcha's modern design seamlessly integrates with a diverse range of styles.\n* 🖌️ __Themes:__  Choose from existing themes, or craft your own unique theme using the provided SASS file.\n* 🔌 __jQuery Integration:__ While written in plain JavaScript, IconCaptcha smoothly integrates with jQuery.\n\n## What's New in IconCaptcha 4\nVersion 4 of IconCaptcha introduces significant enhancements to the architecture and feature set, and offers greater flexibility and customization, alongside improved security. Here are the key updates in this release:\n\n* 📦 **Composer Compatibility:** IconCaptcha is now available on Packagist and can be installed using Composer.\n* 🏗️ **Restructured Code Base:** The entire code base has been restructured, moving away from the previous one-file-does-everything approach. This restructuring makes it easier to maintain the code in the future.\n* 📃 **Improved Configuration:** IconCaptcha 4 introduces a more comprehensive and polished configuration file, offering more options for customization alongside clearer descriptions for each choice.\n* 💾 **Database Support:** A notable addition to this version is the inclusion of database support. Challenge data can now be stored using well-known databases like MySQL, SQL Server, PostgreSQL, and SQLite.\n* 🧩 **Custom Drivers:** Want to handle certain server-side aspects your own way? IconCaptcha 4 allows you to implement custom drivers for critical features such as session management, storage, and timeout handling.\n* 🎣 **Server-side Hooks:** Hook into server-side events like captcha initialization, challenge generation, and solution processing to customize the processes according to your application's needs.\n* 🌐 **CORS Support:** Cross-Origin Resource Sharing (CORS) support is now available, allowing IconCaptcha to be integrated into applications spread across different domains while maintaining security standards.\n\n# Wiki\nFor instructions on installing, setting up, and configuring IconCaptcha, be sure to explore the Wiki pages:\n\n* [Requirements](https://github.com/fabianwennink/IconCaptcha-PHP/wiki/Getting-Started#requirements) - A list of requirements to get IconCaptcha working properly.\n* [Installation](https://github.com/fabianwennink/IconCaptcha-PHP/wiki/Getting-Started#installation) - Instructions on how to install/download IconCaptcha.\n* [Implementing](https://github.com/fabianwennink/IconCaptcha-PHP/wiki/Implementation) - Step-by-step instructions on how to implement IconCaptcha.\n* [Configuration](https://github.com/fabianwennink/IconCaptcha-PHP/wiki/Configuration) - Explanation of all available configuration options.\n* [Storage](https://github.com/fabianwennink/IconCaptcha-PHP/wiki/Storage) - Details about all storage options.\n* [Challenge Generator](https://github.com/fabianwennink/IconCaptcha-PHP/wiki/Challenge-Generator) - Information about how to implement a custom challenge generator.\n* [Validation](https://github.com/fabianwennink/IconCaptcha-PHP/wiki/Validation) - Explanation of the validation process and error handling.\n* [Hooks \u0026 Events](https://github.com/fabianwennink/IconCaptcha-PHP/wiki/Hooks-\u0026-Events) - Overview of events which are triggered at different stages in the captcha process.\n* [Token](https://github.com/fabianwennink/IconCaptcha-PHP/wiki/Token) - Information about the usage of the optional widget security token.\n* [Themes](https://github.com/fabianwennink/IconCaptcha-PHP/wiki/Themes) - Details on creating and setting up custom themes.\n* [Localization](https://github.com/fabianwennink/IconCaptcha-PHP/wiki/Localization) - Details on how to customize the localization strings.\n\n## Credits\nThe icons used in this project are made by [BlendIcons](https://blendicons.com/).\n\n## License\nThis project is licensed under the [MIT](https://www.fabianwennink.nl/projects/IconCaptcha/license) license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabianwennink%2Ficoncaptcha-php","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffabianwennink%2Ficoncaptcha-php","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabianwennink%2Ficoncaptcha-php/lists"}