{"success":true,"debug":{"php_version":"8.3.31","server_time":"2026-07-03 14:20:13","server_software":"LiteSpeed","https":true,"dev_mode":true,"db_host":"localhost","db_name":"kgnkrqrh_kodawave","db_connected":true,"db_error":"","user_types_count":6,"argon2id_available":true,"session_active":true,"csrf_token_present":false,"request_method":"GET","request_uri":"\/authentication.php?action=debug","script_name":"\/authentication.php","client_ip":"216.73.216.251","has_php_input":false,"input_action":"debug","allow_url_fopen":true,"extensions_loaded":"Core,date,libxml,openssl,pcre,zlib,filter,hash,json,pcntl,random,readline,Reflection,SPL,session,standard,litespeed,timezonedb,ctype,curl,dom,fileinfo,ftp,gd,iconv,intl,mbstring,mysqlnd,PDO,pgsql,Phar,posix,SimpleXML,sodium,sqlite3,tokenizer,xml,xmlwriter,xsl,zip,mysqli,pdo_mysql,pdo_pgsql,pdo_sqlite,xmlreader,clos_ssa,i360,ionCube Loader","tables":{"users":{"exists":true,"rows":5},"user_types":{"exists":true,"rows":6},"sessions":{"exists":true,"rows":28},"login_attempts":{"exists":true,"rows":34},"security_alerts":{"exists":true,"rows":3},"email_verifications":{"exists":true,"rows":6},"activity_log":{"exists":true,"rows":38},"registration_attempts":{"exists":true,"rows":6},"wallets":{"exists":true,"rows":5}},"columns":{"users.id":true,"users.uuid":true,"users.user_type_id":true,"users.username":true,"users.email":true,"users.password_hash":true,"users.status":true,"users.phone":true,"users.phone_country_code":true,"users.referral_code":true,"users.onboarding_completed":true,"users.deleted_at":false,"login_attempts.id":{"Field":"id","Type":"bigint unsigned","Null":"NO","Key":"PRI","Default":null,"Extra":""},"login_attempts.id_has_auto_increment":false},"note_deleted_at":"users.deleted_at is expected to be FALSE — the users table has no deleted_at column by design. Login queries must NOT reference it.","note_login_attempts":"login_attempts.id has NO AUTO_INCREMENT in the provided schema. v5 routes all inserts through kw_insert_login_attempt() which generates a safe MAX(id)+1 inside a transaction.","note_sessions":"sessions.id has NO AUTO_INCREMENT either. v5 routes session inserts through kw_insert_session() (same pattern). v3 silently swallowed the failure in try\/catch.","note_security_alerts":"security_alerts.id has NO AUTO_INCREMENT. v5 wraps createSecurityAlert() in the same safe-id transaction pattern.","note_login_redirect":"v5: login ALWAYS redirects to getDashboardUrl() (clientdashboard.php \/ workerdashboard.php \/ enterprisedashboard.php \/ agencydashboard.php \/ expertdashboard.php \/ admindashboard.php). The onboarding.php detour has been removed from login + verify_2fa.","version":"v5"}}