Visualizzazione dei risultati da 1 a 8 su 8

Discussione: captcha

  1. #1

    captcha

    Ciao ragazzi, sto cercando di inserire un captcha per evitare lo spam in un form. Non avendo mai affrontato l'argomento ho cercato un po' su internet e ho trovato la guida che c'è proprio sul sito html.it precisamente questa:

    http://php.html.it/articoli/leggi/2276/captcha-con-php/
    il codice della mia paginetta di prova è questo, copiato pari pari e non ancora modificato e la cosa strana è che mi da un errore:
    prova.php
    Codice PHP:
    <?php

    $pdo 
    = new PDO('mysql:host=localhost;dbname=captcha''root''');

    $stmt $pdo->prepare("SELECT * FROM validation WHERE url_key = ? AND expire_date > NOW()");
    $stmt->execute(array($_GET['token']));

    $row $stmt->fetch(PDO::FETCH_ASSOC);

    $texture imagecreatefrompng('texture.png');

    $source imagecolorat($texturerand(0imagesx($texture)), rand(0imagesy($texture)));
    $r = ($source >> 16 0xff) + 50;
    $g = ($source >> 0xff) + 50;
    $b = ($source 0xff) + 50;
    $text_color imagecolorallocate($texture$r$g$b);

    imagestring($texture5, (imagesx($texture) - strlen($row['captcha']) * 5)/ 25,  $row['captcha'], $text_color);

    header('Content-Type: image/png');

    imagepng($texture);

    imagedestroy($texture);

    unction random_string($len)
    {
       
    $string "";
       
    $chars = array("a""b""c""d""e""f""g""h""i""j""k",
                   
    "l""m""n""o""p""q""r""s""t""u""v",
                   
    "w""x""y""z""A""B""C""D""E""F""G",
                   
    "H""I""J""K""L""M""N""O""P""Q""R",
                   
    "S""T""U""V""W""X""Y""Z""0""1""2",
                   
    "3""4""5""6""7""8""9");
       for(
    $i 0$i $len; ++$i)
       {
          
    shuffle($chars);
          
    $string .= $chars[0];
       }
       
       return 
    $string;
    }

    $message 'Inserisci la scringa alphanumerica per effettuare la validazione:';

    $pdo = new PDO('mysql:host=localhost;dbname=captcha''root''');
    $pdo->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);

    if(isset(
    $_POST['validate_token']))
    {
       
    // Eseguo la validazione
       
    $stmt $pdo->prepare("SELECT * FROM validation WHERE url_key = ? AND expire_date > NOW()");
       
    $stmt->execute(array($_POST['token']));

       
    $row $stmt->fetch(PDO::FETCH_ASSOC);
       
       
    $message = ($row && ($row['captcha'] == $_POST['validate_token'])) ? 'token corretto' 'token [b]NON[/b] corretto';
       
    $stmt $pdo->prepare("DELETE FROM validation WHERE url_key = ?");
       
    $stmt->execute(array($_POST['token']));
    }

    // Elimino tutti i record scaduti
    $pdo->query("DELETE FROM validation WHERE expire_date <= NOW()");

    // Genero casualmente un record per la tabella validation
    $url_key sha1(uniqid(rand(), true)); // Possiamo (e dovremmo) fare meglio
    $captcha random_string(6);
    $stmt $pdo->prepare("INSERT INTO validation (id, url_key, captcha, expire_date) VALUES ('', ?, ?, DATE_ADD(NOW(), INTERVAL 5 MINUTE))");
    $stmt->execute(array($url_key$captcha));

    ?>
    <html>
       <head>
          <title>CAPTCHA test</title>
       </head>
       <body>
          <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
             <input type="hidden" name="token" value="<?php echo $url_key?>" />
             


                <?php echo $message?>
             </p>
             [img]captcha.php?token=<?php echo $url_key?>[/img]

             <input type="text" name="validate_token" />
             <input type="submit" name="action" value="Test" />
          </form>
       </body>
    </html>

    l'errore è il seguente:

    Parse error: syntax error, unexpected ')', expecting '(' in /home/web/clienti/lavori/sito/prova.php on line 8

    cioè a questa riga:
    Codice PHP:
    $row $stmt->fetch(PDO::FETCH_ASSOC); 
    cosa può essere? grazie Simone
    5ym0

  2. #2

    Re: captcha

    ok raga forse ho messo troppa roba...sintetizzo: queste son le prime righe di codice:
    Codice PHP:
    <?php

    $pdo 
    = new PDO('mysql:host=localhost;dbname=captcha''root''');

    $stmt $pdo->prepare("SELECT * FROM validation WHERE url_key = ? AND expire_date > NOW()");
    $stmt->execute(array($_GET['token']));

    $row $stmt->fetch(PDO::FETCH_ASSOC); #errore
    ...
    Sull'ultima mi da quest'errore:
    Parse error: syntax error, unexpected ')', expecting '(' in /home/web/clienti/lavori/sito/prova.php on line 8
    chi può aiutarmi per favore?
    5ym0

  3. #3
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    che versione del php usi?

  4. #4
    uso la 4....devo usare la 5 scomemtto..?
    5ym0

  5. #5
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    bingo.

    oppure riscrivi tutto in modo da non utilizzare costanti di classe, che in php4 non esistevano. Mi pare che nel php4 PDO::QUALCOSA erano definite come PDO_QUALCOSA (quindi PDO::FETCH_ASSOC era PDO_FETCH_ASSOC).

    ma e' meglio comunque passare al php5

  6. #6
    E lo so purtroppo non dipende da me...cmq grazie adesso vedo di riscrivere le cose per php4 ciao e grazie ancora
    5ym0

  7. #7
    Allora, son riuscito a trovare una versione 5 dove testare il codice, adesso ''funziona'' per mi da quest'errore

    Fatal error: Class 'PDO' not found in D:\inetpub\test\connectionpdo\connection\Connectio n.class.php on line 48

    che dovrebbe essere giusto se non avessi incluso la class pdo per la connessione che sit rova su internet...puoi darmi uan mano per favore?
    5ym0

  8. #8
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    quello vuol dire che l'estensione PDO non e' installata/abilitata nel tuo php. Guarda nel file php.ini se ci sono righe tipo
    ;extension=php_pdo.dll
    ;extension=php_pdo_mysql.dll

    scommentale e riavvia apache.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.