• Salve, sto facendo un plugin via tramite IA, ma tutte le IA, mi danno il solito codice alcune volte diverso.

    Ma non capisco perché non funziona il controllo che se uno sbaglia mi dovrebbe darmi un messaggio di errore. vi incollo il codice, ma leggendo il codice vedo che ci sono i vari controlli e che non funzionano.. ho notato se c’è 5+2 e metto 394394 mi fa i login ma non mi da che ho sbagliato il calcolo.

    avete idea?,

    vi incollo il codice:

    // Start a session if not already started
    add_action('init', 'start_session', 1);
    function start_session() {
    if (!session_id()) {
    session_start();
    }
    }

    // Function to generate and display the Math CAPTCHA
    function add_math_captcha() {
    // Generate two random numbers
    $digit1 = mt_rand(1, 20);
    $digit2 = mt_rand(1, 20);

    // Randomly choose between addition and subtraction
    if (mt_rand(0, 1) === 1) {
    $math = "$digit1 + $digit2";
    $answer = $digit1 + $digit2;
    } else {
    $math = "$digit1 - $digit2";
    $answer = $digit1 - $digit2;
    }

    // Store the correct answer in session
    $_SESSION['math_captcha_answer'] = $answer;

    // Display the CAPTCHA
    echo "<p>Please solve the equation: <strong>$math</strong>";
    echo "<input type='text' name='captcha_answer' required></p>";
    }

    // Hook the CAPTCHA into the login form
    add_action('login_form', 'add_math_captcha');
    // Hook the CAPTCHA into the registration form
    add_action('register_form', 'add_math_captcha');
    // Hook the CAPTCHA into the comment form
    add_action('comment_form_after_fields', 'add_math_captcha');
    // Hook the CAPTCHA into the forgot password form
    add_action('lostpassword_form', 'add_math_captcha');

    // Validate the CAPTCHA on form submission
    function validate_math_captcha($user) {
    if (isset($_POST['captcha_answer']) && $_POST['captcha_answer'] != $_SESSION['math_captcha_answer']) {
    return new WP_Error('captcha_error', __('Invalid CAPTCHA. Please try again.'));
    }
    return $user;
    }

    // Hook the validation function into the login, registration, and forgot password processes
    add_action('authenticate', 'validate_math_captcha', 1);
    add_action('register_post', 'validate_math_captcha');
    add_action('lostpassword_post', 'validate_math_captcha');

    // Validate CAPTCHA for comments
    add_action('pre_comment_on_post', 'validate_math_captcha_for_comments');
    function validate_math_captcha_for_comments() {
    if (isset($_POST['captcha_answer']) && $_POST['captcha_answer'] != $_SESSION['math_captcha_answer']) {
    wp_die(__('Invalid CAPTCHA. Please go back and try again.'));
    }
    }

    Aspetto risposte nel frattempo vi auguro una buona fine settimana.

    • Questo topic è stato modificato 1 mese, 3 settimane fa da Luigi Amorfini.
Stai visualizzando 1 risposte (di 1 totali)
  • Ciao @lamorfini ,

    Stai sviluppando un captcha direi. Ho una discreta esperienza in materia e posso dirti che in WP non si usano le sessioni, o meglio, si possono usare ma bisogna stare attentissimi, meglio non usarle. Per ottenere un risultato simile è meglio adoperare i transienti. Dopo di che se ancora non funziona bisogna controllare tutti gli hook che lo script adopera.

    Bye.

Stai visualizzando 1 risposte (di 1 totali)
  • Devi essere collegato per rispondere a questo topic.