• User Newbie

    controllo form stessaa pagina e captcha..

    questi i codici
    pagina del form con controllo sulla stessa pagina
    [php]
    if(isset($_POST['submit'])){
    session_start();
    if(sha1($_POST['codiceverifica']) != $_SESSION['control']){
    $error_code= "<b>Campo vuoto o non corretto</b><br>";

    $t++;
    }
    
    
        $categoria=trim($_POST['categoria']);
        $nome= trim($_POST['nome']);
        $mail= trim($_POST['mail']);
    
        if(empty($categoria)){
        $error= "errore nel campo";
        $t++;
        }
        if(empty($nome)){
        $error_nome= "campo vuoto";
        $t++;
        }    
        if(empty($mail)){
        $error_mail= "campo vuoto";
        $t++;
        }
        else{
    

    if (!eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)@[a-z0-9-]+(.[a-z0-9-]+)(.[a-z]{2,4})$", $mail)){
    $error_mail="Mail scritta non correttamente";
    }
    }

        if($t ==0){
        mail("[email protected]","subject","messaggio","header");
        echo "inviato";
        }
        else{
        echo "<form name=\"FORM3\" method=\"post\" action=\"por.php\">";
        echo "<input name=\"categoria\" type=\"text\" value=\"".$categoria."\">$error<br>";
        echo "<input name=\"nome\" type=\"text\" value=\"".$nome."\">$error_nome<br>";
        echo "<input name=\"mail\" type=\"text\" value=\"".$mail."\">$error_mail<br>";
    
        echo "<img src=\"captcha.php\" width=\"200\" height=\"60\" alt=\"Immagine captcha\"><br>Inserisci il codice in figura:<bR>
        <input type=\'text\' name=\'codiceverifica\' size=\"25\">$error_code</p>";
        echo "<input type=\"submit\" name=\"submit\" value=\"submit\">";
        echo "</form>";
        }
    

    }

        else{
        echo "<form name=\"FORM2\" method=\"post\" action=\"por.php\">";
        echo "<input name=\"categoria\" type=\"text\"><br>";
        echo "<input name=\"nome\" type=\"text\"><br>";
        echo "<input name=\"mail\" type=\"text\"><br>";
        echo "<img src=\"captcha.php\" width=\"200\" height=\"60\" alt=\"Immagine captcha\"><br>Inserisci il codice in figura:<bR>
        <input type=\'text\' name=\'codiceverifica\' size=\"25\"></p>";
    echo "<input type=\"submit\" name=\"submit\" value=\"submit\">";
        echo "</form>";
        }
    [/php]questo il file captcha.php
    

    [php]
    session_start();

    $x = 200;
    $y = 75;

    //creaiamo la stringa random e criptiamola
    $crypt = sha1(microtime() * mktime());

    //preleviamo una porzione della stringa
    $str = substr($crypt,0,6);

    $code = $str;
    $space = $x / (strlen($code)+1);
    $img = imagecreatetruecolor($x,$y);
    $bg = imagecolorallocate($img,255,255,255);
    $border = imagecolorallocate($img,0,0,0);
    $colors[] = imagecolorallocate($img,128,64,192);
    $colors[] = imagecolorallocate($img,192,64,128);
    $colors[] = imagecolorallocate($img,108,192,64);
    imagefilledrectangle($img,1,1,$x-2,$y-2,$bg);
    imagerectangle($img,0,0,$x-1,$y-2,$border);
    for ($i=0; $i< strlen ($code); $i++)
    {
    $color = $colors[$i % count($colors)];
    imagettftext($img,28+rand(0,8),-20+rand(0,40),($i+0.3)*$space,50+rand(0,10),$color,'Vera.ttf',$code{$i});
    }
    for($i=0;$i<400;$i++)
    {
    $x1 = rand(3,$x-3);
    $y1 = rand(3,$y-3);
    $x2 = $x1-2-rand(0,8);
    $y2 = $y1-2-rand(0,8);
    imageline($img,$x1,$y1,$x2,$y2,$colors[rand(0,count($colors)-1)]);
    }
    $_SESSION['control'] = sha1($str);
    header("Content-type: image/png");
    imagepng($img);

    [/php]quando i controlli erano in una seconda pagina il controllo del captcha funzionava...ora con i controlli nella stessa no...ho provato a visualizzare il file che passo in sessione ed è circa di una 20 di caratteri mentre dovrebbero essere solo 6...dove sta l'inghippo...è da 3 giorni che sbatto


  • User Newbie

    scusate ma credo di aver risolto...era una questione di apici dove sostituire 'codiceverifica con "codiceverifica"...
    vorrei analizzare con voi il codice..secondo voi devo fare controlli di qualche altro tipo per la sicurezza?
    è una mail normale...non in html