CHANGES 4.0.1 - Increase captcha difficulty - Add setting "use_text_angles". Enable to select a random angle and step value and draw each character at an angle in a step like fashion - Add setting "use_random_spaces". Enable to insert 1-3 spaces between a random group of letters some of the time - Add setting "use_random_baseline". Enable to draw letters at a random height instead of centered. Each character's baseline is a step up or down from the previous (not totally random) - Add setting "use_random_boxes". Enable to draw a bounding box around one or more characters at random - Improve performance of captcha generation when using distortion (perturbation) and noise (noise_level) - Enable image anti-aliasing - Make all text functions multibyte safe when using UTF-8 or other encodings for charsets and wordlists (using mbstring) - Deprecate background images. May be removed in future version or limited to special use - Fix code display issue when using a math captcha that was re-displayed after being retrieved from a StorageAdapter 4.0.0 - REMOVE namespaces (everything is tied to a captcha ID now) - Implement StorageAdapter interface - Move session and database storage into StorageAdapters - Add memcached StorageAdapter (requires PHP extension memcached) - Add Redis StorageAdapter (requires PHP extension Redis [https://github.com/phpredis/phpredis]) - REMOVE options use_sqlite_db and sqlite_database (deprecated since 3.2 RC4) - REMOVE database options from class (options are now defined in config.inc.php) - REMOVE Flash audio playback and Flash fallback - REMOVE "static captcha" functionality (getCaptchaId and checkByCaptchaId) - REMOVE SoX audio manipulation from PHP via shell_exec 3.6.6 - Not critical: Fix potential HTML injection in example form via HTTP_USER_AGENT (CVE-2017-14077) 3.6.5 - Fix regex in replaceElements in securimage.js - Update examples - Exclude certain examples from Git autogenerated archives 3.6.4 - Fix XSS vulnerability in example_form.ajax.php (Discovered by RedTeam. advisory rt-sa-2016-002) - Update example_form.ajax.php to use Securimage::getCaptchaHtml() 3.6.3 - Add support for multibyte wordlist files - Fix code generation issues with UTF-8 charsets - Add parameter to getCaptchaHtml() method to control display components of captcha HTML - Fix database audio storage issue with multiple namespaces 3.6.2 - Support HTTP range requests with audio playback (iOS requirement) - Add optional config.inc.php for storing global configuration settings 3.6.1 - Fix copyElement bug in securimage.js for IE Flash fallback 3.6 - Implement CAPTCHA audio using HTML5