HEX
Server: Apache/2.4.25 (Debian)
System: Linux server17 4.9.0-19-amd64 #1 SMP Debian 4.9.320-2 (2022-06-30) x86_64
User: web37 (1062)
PHP: 7.4.30
Disabled: show_source, highlight_file, apache_child_terminate, apache_get_modules, apache_note, apache_setenv, virtual, dl, disk_total_space, posix_getpwnam, posix_getpwuid, posix_mkfifo, posix_mknod, posix_setpgid, posix_setsid, posix_setuid, posix_uname, proc_nice, openlog, syslog, pfsockopen
Upload Files
File: /var/www/web37/htdocs/fickanzeiger/models/CaptchaCodeModel.php
<?php

class CaptchaCodeModel extends Model
{
    protected $primaryKey = "captchaCodeId";

    function deleteExpiredCaptchaCodes()
    {
        $c = new Criteria();
        $c->add("ADDDATE( generationDate , INTERVAL 1 HOUR ) < NOW()");
        $this->del($c);
    }

    function validatePublicAndPrivateCodes($request)
    {
        if (empty($request->privateCode) || empty($request->publicCode)) {
            return false;
        }

        $c = new Criteria();
        $c->add("publicCode", $request->publicCode);
        $c->add("privateCode", $request->privateCode);

        $result = $this->getCount($c);
        $this->del($c);

        return ($result == 1);
    }

}

class CaptchaCodeRecord extends ModelRecord
{
    function generateCaptchaCodesAndGetPublicOne()
    {
        // generate random private code
        $lettersSet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';

        $privateCode = '';
        do {
            for ($i = 0; $i < 4; $i++) {
                $privateCode .= substr($lettersSet, rand(0, strlen($lettersSet) - 1), 1);
            }
        } while (strlen($privateCode) != 4);

        // generate random public code
        $publicCode = '';
        do {
            for ($i = 0; $i < 20; $i++) {
                $publicCode .= substr($lettersSet, rand(0, strlen($lettersSet) - 1), 1);
            }
        } while (strlen($publicCode) != 20);

        $this->publicCode = $publicCode;
        $this->privateCode = $privateCode;
        $this->save();

        Model::factoryInstance("captchaCode")->deleteExpiredCaptchaCodes();

        return $publicCode;
    }
}