Implement a "Where's Wally" (or Waldo/Charlie) Captcha in a simple Symfony Project

Overview

Where's Wally ?

Nowadays, we are often confronted with "Captcha".

These tests to know if we are robots or not.

They are all very boring and not very fun.

Imagine a world where to submit a form on your favorite site, you have to find Wally (or Waldo or Charlie).

Yes, you know this guy:

Wally

The goal of this project is to implement a captcha where the objective is to find Wally.

🧰 Getting Started

👾 Tech Stack

‼️ Prerequisites

You need to have PHP and Composer installed on your computer.

⚙️ Installing

Clone the project:

git clone https://github.com/Romaixn/captcha-wally.git

Install the dependencies:

composer install
npm i

Run the server: With Symfony Binary :

symfony serve -d 

Or with PHP :

php -S localhost:8000 -t public

Build the assets:

npm run dev

Split base image:

php bin/console app:split-image images/wally-1.png

And go to https://localhost:8000 🚀

🤝 Contributing

Contributions, issues and feature requests are welcome !
Feel free to check issues page.

To contribute to this project, please follow these steps:

Fork this repository.

Clone your forked repository.

Follow the Installing section.

After that, you can make your changes.

Run the analysis tool to ensure that everything is working. :

vendor/bin/psalm

Fix the code style:

vendor/bin/php-cs-fixer fix

Show your support

Give a ⭐️ if you like this project !

Comments
  • build(deps): bump ramsey/composer-install from 1 to 2

    build(deps): bump ramsey/composer-install from 1 to 2

    Bumps ramsey/composer-install from 1 to 2.

    Release notes

    Sourced from ramsey/composer-install's releases.

    2.0.0

    Added

    • Use --prefer-stable with lowest dependencies (#178)
    • Allow use of a custom cache key (#167)
    • Allow ability to ignore the cache

    Changed

    Fixed

    • Fix case where working-directory did not run composer install in the correct working directory (#187)
    • Fix problems with retrieving cache with parallel builds (#161, #152)
    • Fix problems restoring from cache on Windows (#79)

    1.3.0

    • Support passing --working-dir as part of composer-options

    1.2.0

    • Support Composer working-directory option for when composer.json is in a non-standard location.
    • Add operating system name to the cache key.

    1.1.0

    Display Composer output with ANSI colors.

    1.0.3

    Patch release for dependency updates.

    1.0.2

    • Use the GitHub cache action directly to avoid duplication of code/effort.
    • Turn on output of Composer command to provide feedback in the job log
    • Use Composer cache-dir instead of cache-files-dir

    1.0.1

    Rewrite and refactor as a JavaScript action.

    Commits
    • 83af392 :sparkles: Add new custom-cache-suffix option (#239)
    • 7f9021e Fix use of deprecated set-output command (#238)
    • 4617231 Tests: update the included composer.phar from v 2.2.2 to 2.2.18 (#237)
    • 72896eb Add dependabot configuration file (#227)
    • 69e970d GH Actions: version update for codecov action runner (#226)
    • e3612f6 GH Actions: version update for actions/cache (#224)
    • d515102 GH Actions: version update for various predefined actions (#222)
    • 6085843 GH Actions: re-work the integration tests (#221)
    • f680dac test: add PHP path back to command, as well as debug message
    • 3c51967 test: ensure we use the alternate composer location
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  •  The splitted images that are generated are now destroyed

    The splitted images that are generated are now destroyed

    Fix https://github.com/Romaixn/captcha-wally/issues/4

    • Update the folder structure for consistency
    • Adding a function to refresh the generated folder
    • Adding dynamic image name/folder to step up to multiple handling images
    • Update the SplitImageCommand to add cols/rows params
    • Adding some Todos to give some ideas to work on
    opened by gturpin-dev 1
  • The splitted images that are generated are not destroyed

    The splitted images that are generated are not destroyed

    The splitted images that are generated are not destroyed so if I want to split the same image with less cols/rows i'll have a duplicate image

    Maybe can be good to have a "splitted" folder or something else to store generated images, and refresh it before each generation

    Complexity 2 - Small Priority 1 - Must have Type - Optimisation 
    opened by gturpin-dev 1
  • Adding database

    Adding database

    Add a database (SQL/noSQL (sqlite or mongo ?), don't know) to store captcha information simply:

    • Base image name
    • List of generated images
    • Name of the image containing Wally (the valid image)

    The valid image will have to be selected manually, via an admin interface? (maybe)

    Complexity 2 - Small Priority 1 - Must have Type - Feature 
    opened by Romaixn 0
  • The splitted images fill empty square with black

    The splitted images fill empty square with black

    The default image when splitted generate images from 250 by 250 and the left width/height for the lasts splitted images are filled with black color which is not good I recommend to give cols/rows parameters to split() function and generate splitted images based on these variables and source image width/height

    opened by gturpin-dev 0
  • Adding new image in admin

    Adding new image in admin

    According to #9, It would be nice to have an administration interface allowing to add a new "Where's Wally" image.

    When added, it will split automatically via a doctrine event.

    Complexity 3 - Medium Priority 3 - Could have Type - Feature 
    opened by Romaixn 0
Owner
rherault
backend web developer. Looking to contribute on OS project.
rherault
Simple class that implement a CAPTCHA for your PHP App.

simple-captcha Simple class that implement a CAPTCHA for your PHP App. Installation Use the package manager composer to install. composer require will

WILLIAM B. SAMPAIO 3 Nov 9, 2022
Simple customizable captcha script for bot prevention in php language.

phpCaptcha Simple customizable captcha script for bot prevention in php language. Usage <?php session_start(); $status = ""; if ($_SESSION['captcha']

Филип Арсовски 11 Oct 10, 2022
Simple, image-based, mathematical captcha, with increasing levels of difficulty

simple-captcha Simple, image-based, mathematical captcha, with increasing levels of difficulty version 1.1.0 see also: ModelView a simple, fast, power

Nikos M. 6 Sep 19, 2022
a simple pastebin implement in php

alcohol/pastebin-php I mostly use this demo application to keep myself up to date with the various changes introduced by new (major) Symfony releases.

Rob 26 Nov 5, 2022
Provides simple interfaces to implement a webhook-based tweeting system

webhook-tweeter This package aims to provide simple interfaces to implement a webhook-based tweeting system. This can, for example, be used to tweet a

Ricardo Boss 2 May 7, 2022
dcat admin login captcha. - dcat admin 登录验证码。

dcat-login-captcha 简体中文 | ENGLISH dact admin login captcha. - dcat admin 登录验证码。 环境要求 dcat-admin >= 2.0 安装 Composer 安装 $ composer require guanguans/dca

guanguans 29 Dec 5, 2022
Friendly Captcha anti-spam plugin for Joomla!

Friendly Captcha anti-spam plugin for Joomla! Register at https://friendlycaptcha.com to get your site and secret keys. Plugin Features Standard light

null 10 Nov 4, 2022
WPBruiser {no- Captcha anti-Spam} (forked, updated)

=== WPBruiser {no- Captcha anti-Spam} === Contributors: mihche, knutsp Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_

Webfacing 2 Jul 26, 2022
It's a CodeIgniter Library for Captcha Generation. With additional Flexibility .

Original Source : Pavel Tzonkov <[email protected]> Source Link : http://gscripts.net/free-php-scripts/Anti_Spam_Scripts/Image_Validator/d

Chris # 4 Sep 2, 2022
Simple Symfony API-Platform Template which you can use to start to develop with symfony and api-platform

symfony-api-platform-skeleton Simple Template for Symfony API You can fork it and change the git remote to your Repo git remote set-url <your-git-remo

null 1 Jan 23, 2022
The only way to implement the pipe operator in PHP.

Pipe Operator in PHP Introduction This package is based on the pipe operator RFC by Sara Golemon and Marcelo Camargo (2016), who explains the problem

BoostPHP 21 Nov 12, 2022
Here are few exercises to practice how to implement API Security with NGINX App-Protect WAF.

api-security-lab This repo contains files for customers and partners to practice an API Security with NGINX App-Protect WAF. To demonstrate the capabi

null 4 Mar 30, 2022
A light-weight RPC implement of google protobuf RPC framework.

sofa-pbrpc A light-weight RPC implementation of Google's protobuf RPC framework. Wiki: https://github.com/baidu/sofa-pbrpc/wiki Features High performa

Baidu 2.1k Nov 20, 2022
Implement event systems, signal slots, intercepting filters, and observers.

zend-eventmanager Repository abandoned 2019-12-31 This repository has moved to laminas/laminas-eventmanager. zend-eventmanager is designed for the fol

Zend Framework 1.7k Nov 21, 2022
This Pocketmine-MP plugin lets you implement the ultimate birthday wishing system on your server.

BirthdaysPE This Pocketmine-MP plugin will let you wish player(s) a happy birthday and notify others to wish them too. Commands /birthday <set/reset>

MCA7 3 Jul 25, 2022
YL MVC Structure (PHP MVC) is a pattern made in PHP used to implement user interfaces, data, and controlling logic.

YL MVC Structure (PHP MVC) is a pattern made in PHP used to implement user interfaces, data, and controlling logic. It is built based on the combination of ideas from the Yii framework and Laravel framework (yl).

Tan Nguyen 3 Aug 16, 2022
Dockerise Symfony Application (Symfony 6 + Clean Architecture+ DDD+ CQRS + Docker + Xdebug + PHPUnit + Doctrine ORM + JWT Auth + Static analysis)

Symfony Dockerise Symfony Application Install Docker Install Docker Compose Docker PHP & Nginx Create Symfony Application Debugging Install Xdebug Con

null 41 Nov 18, 2022
Roach-example-project - Example project to demonstrate how to use RoachPHP in a Laravel project.

Example repository to illustrate how to use roach-php/laravel in a Laravel app. Check app/Spiders/FussballdatenSpider.php for an example spider that c

Kai Sassnowski 9 Aug 14, 2022
A Symfony project made with DDD, CQRS and Hexagonal Architecture

Symfony Blog DDD + CQRS + Hexagonal Architecture A Symfony blog project made with CQRS, Hexagonal Architecture and DDD Docker integration This project

null 5 Aug 10, 2022