Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    problema verifica captcha

    Buongiorno forumisti, ho nuovamente bisogno del vostro prezioso aiuto!
    sto cercando di risolvere un problema di spam derivante da un modulo contatti utilizzando un captcha.

    La pagina che attualmente ho modificato è http://www.vivirecoaroterme.it/index_cap.php

    che fa riferimento alla pagina:
    codice_captcha.php
    codice:
    <?php 
    /*Apro la sessione*/
    session_start();
    /*Creo una stringa ed estraggo da essa un valore casuale di cinque caratteri alfanumerici*/ 
    $stringa = md5(microtime());
    $risultato = substr($stringa, 0, 5);
    /*Definisco l'immagine che verrà utilizzata come base per il captcha*/
    $img = imagecreatefromjpeg("base_captcha.jpg");
    /*Definisco il colore del testo, in questo caso il bianco*/
    $testo = imagecolorallocate($img, 80, 80, 80);
    /*Definisco le dimensioni e le distanze dai bordi del testo*/
    imagestring($img, 6, 20, 10, $risultato, $testo);
    /*Memorizzo il codice in una sessione*/
    $_SESSION['CODICE'] = $risultato;
    /*Modifico l'intestazione della pagina, per richiamarla come se fosse  un'immagine*/
    header("Content-type: image/jpeg");
    /*Visualizzo l'immagine*/
    imagejpeg($img); ?>
    e alla pagina di verifica con il codice:
    codice:
    $codice_sicurezza=$_POST['codice_sicurezza'];
    if ($codice_sicurezza != $risultato) { 
      $error = "errore!!! $codice_sicurezza non corrisponde a $risultato"; 
    }
    problema: mi compare sempre e comunque l'errore! ma non vedo quella che dovrebbe essere la variabile di sessione $risultato...

  2. #2
    non devi usare $risultato per il confronto ma: $_SESSION['CODICE']

  3. #3
    non mi passa comunque il parametro di sessione, o almeno credo sia qui l'inghippo! mi compare l'errore perchè i dati non corrispondono...

    codice:
    if ($codice_sicurezza != $_SESSION['CODICE']) { 
    $error = "<h1>hai inserito correttamente il CODICE DI VERIFICA?</h1>
                <hr> $codice_sicurezza ".$_SESSION['CODICE'].""; 
    }
    eppure quando mi risponde la pagina vedo che $_SESSION['CODICE'] non c'è... vuoto, nulla...

  4. #4
    Supponendo che nella pagina di verifica apri la sessione con session_start() come nella pagina in cui la crei... direi che hai lo stesso mio problema che mi era capitato qualche mese fa...

    Per ovviare, io generavo il codice del captcha nella pagina che contiene il form di controllo, passando allo script php che genera l'immagine, il codice da printare criptato...

    Del tipo:
    codice:
    [img]immagine.php?cod=4448af13fa1dg48h486gd[/img]
    e nel file immagine.php che conterrà lo script con le gd che creano il captcha, ci sarà una funzione che decripta quel codice passato in GET...

    Così la sessione col codice tu non la setti più nel file che genera il captcha, ma la setti nel file dove sta il form di controllo subito dopo averlo creato... e così vedrai che lo prende!


    Esempio pratico:

    form.php
    Codice PHP:
    session_start(); //apri sessione

    /////////////////
    // crei il codice
    /////////////////

    $_SESSION['codice'] = $codice;

    $ccod cripta($codice); // cripti il cod

    echo "[img]immagine.php?cod=".$ccod."[/img]"
    immagine.php
    Codice PHP:
    $ccod $_GET['cod'];

    $decod decripta($ccod);

    //////
    // fai apparire il captcha con le gd
    ////// 
    controllo.php
    Codice PHP:
    $postcode $_POST['cod'];
    $sescod $_SESSION['codice'];

    if(
    $postcode != $sescode)
      die(
    "Errore"); 

    L'ho scritto al volo, prova e dimmi, ciao!

  5. #5
    premetto: era un problema con il server che incasinava la variabile di sessione, ho risolto provando a scrivere un cookie... e poi contattando il sistemista.
    (non mi ero accorta ma non funzionava nemmeno l'area riservata perchè mi perdeva la variabile di sessione dell'autenticazione.)

    comunque è interessante la tua soluzione, ho un altro sito su cui mettere il captcha, proverò con quella che hai suggerito!

    Grazie mille

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.