Visualizzazione risultati 1 fino 25 di 25

Discussione: [PHP] Creazione captcha... come?

  1. #1
    Guest

    Post [PHP] Creazione captcha... come?

    Ciao a tutti, ho provato a fare una ricerca..ma non mi ha aiutato molto...vi spiego il mio problema: vorrei creare un captcha per il mio modulo di contatti..ma non so come muovermi..in sostanza vorrei che venisse fuori una cosa come questa:
    http://img443.imageshack.us/img443/8...aptcha1qg2.jpg
    Quella immagine è stata creata da una mod di sNews ed è la cosa che vorrei fare io: http://snewscms.com/forum/index.php?...35245#msg35245
    Sapete aiutarmi con guide o altro a creare un captcha per il mio modulo???
    Io proprio di immagini con php non ci capisco niente! :(
    Grazie 1000...Ciao Davide! :)

  2. #2
    Guest

    Predefinito

    Non è una cosa che si può spiegare e realizzare in un solo topic.
    In rete ci sono molti esempi e molte risorse a tal proposito; sarebbe opportuno che tu faccia almeno qualche base su cui lavorare, anzichè partire da zero.


    ciao!

  3. #3
    zulukwebsite non è connesso Utente attivo
    Data registrazione
    16-07-2006
    Messaggi
    290

    Predefinito

    guarda qui ---> http://php.html.it/articoli/leggi/2276/captcha-con-php/ ....nn l'ho ancfora letto ....quindi nn so com'è il tutorial.... me lo ero riservato per quando mi sarebbe servito :)

  4. #4
    Guest

    Predefinito

    Avevo visto quella guida..ma usa il database e a me non serve! :)
    Grazie 1000.Ciao!
    ================================================== ========
    Edit: io avevo provato con una guida su: http://www.phelpp.altervista.org/?p=11
    Ma ci sono diversi problemi...ci sono le righe sopra l'immagine, è troppo grande,ci sono numeri e testo quando io vorrei solo i numeri e dopo lo sfondo è bianco quando io voglio che sia ricavato da un immagine...
    Grazie 1000....
    Ri-Edit: Ci ho provato ma: Il risultato viene ossia l'immagine si crea come voglio (solo le dimensioni) dopo è tutta nera!
    Codice PHP:
    <?php
    session_start
    ();

    header("Content-type: image/png");
    $x = 100;

    $y = 25;

    $code = substr(md5(rand()),0,6);

    $_SESSION['code'] = $code;

    $space = $x / (strlen($code)+1);

    $img = imagecreatetruecolor($x,$y);

    $bg = imagecreatefrompng("background.png");/*imagecolorallocate($img,255,255,255);*/

    $border = imagecolorallocate($img,0,0,0);

    $colors = imagecolorallocate($img,255,255,255);

    /*$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,35+rand(0,10),$color,'cour.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)]);
    }
    imagepng($img);

    ?>
    Grazie 1000...Ciao Davide!
    Ultima modifica di sIM : 02-06-2008 alle ore 12.50.45

  5. #5
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    {Piacere} Senti a te interessa un captcha specie quello mostrato nella figura nel post #1 vero? Quindi se ti realizzo una cosa del genere facile e veloce cambia qualche cosa? Oppure vuoi che modifico proprio il tuo script?
    Apprezzi l'aiuto? Offrimi un caffè!

  6. #6
    Guest

    Predefinito

    No no..fai come vuoi...basta che il risultato sia quello e che io in qualche modo possa modificarlo se devo cambiare qualche cosa! :) (ossia alt,larg,bg,colori...)
    Grazie 1000...Ciao Davide! ^^

  7. #7
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Scusa il tempo ma giocando perdo un po' di tempo comunque eccoti lo script del tutto configurabile, naturalemente sono partito da una base di background e font scelti da te nei vari posts:
    Codice PHP:
    <?php
    /* Inizio Configurazione */
    $numero1 = rand(0,9);
    $numero2 = rand(0,9);
    $numero3 = rand(0,9);
    $numero4 = rand(0,9);

    $x = "7";
    $y = "20";

    // Sfondo Obbligatoriamente PNG
    $sfondo = "background.png";

    // Colore Sfondo diviso da "," in formato RGB (purtroppo diviso in 3 variabili)
    $rosso = "255";
    $giallo = "0";
    $blu = "0";

    $font = "cour.ttf";

    $grandezza_font = "15";
    $angolo = "0";
    /* Fine Configurazione */

    $bac = imagecreatefrompng($sfondo);
    $txt = "$numero1 $numero2 $numero3 $numero4";
    $col = imagecolorallocate($bac,$rosso,$giallo,$blu);
    imagefttext($bac,$grandezza_font,$angolo,$x,$y,$col,$font,$txt);
    Header("Content-type: image/png");
    imagepng($bac);
    imagedestroy($bac);
    ?>
    Apprezzi l'aiuto? Offrimi un caffè!

  8. #8
    Guest

    Predefinito

    Allora ho provato ed è OK, però...il bordo nero di 1px si può mettere? :)
    Il testo potrebbe essere centrato??..
    ...e come si fa a vedere se il codice inserito nel textarea è giusto...oppure non è stato messo..oppure a farlo visualizzare?
    Grazie 1000...ciao davide! :)
    Ultima modifica di sIM : 02-06-2008 alle ore 14.24.43

  9. #9
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Scusa mi sono proprio dimenticato di queste cose:
    Codice PHP:
    <?php
    /* Inizio Configurazione */
    $numero1 = rand(0,9);
    $numero2 = rand(0,9);
    $numero3 = rand(0,9);
    $numero4 = rand(0,9);

    $x = "7";
    $y = "20";

    // Sfondo Obbligatoriamente PNG
    $sfondo = "background.png";

    // Colore Sfondo diviso da "," in formato RGB (purtroppo diviso in 3 variabili)
    $rosso = "255";
    $giallo = "0";
    $blu = "0";

    $font = "cour.ttf";

    $grandezza_font = "15";
    $angolo = "0";
    /* Fine Configurazione */

    $bac = imagecreatefrompng($sfondo);
    $txt = "$numero1 $numero2 $numero3 $numero4";
    $col = imagecolorallocate($bac,$rosso,$giallo,$blu);
    imagefttext($bac,$grandezza_font,$angolo,$x,$y,$col,$font,$txt);

    /* Inizio memorizzazzione codice in una sessione */
    session_start();
    $_SESSION['nome_sessione'] = $txt;
    /* Fine memorizzazzione codice in una sessione */

    Header("Content-type: image/png");
    imagepng($bac);
    imagedestroy($bac);
    ?>
    Codice HTML:
    <form action="file.php" method="post">
    // Qui il tuo form
    <img src="captcha.php" style="border-width:1px" alt="" />
    <input type="text" name="captcha" value = "" />
    </form>
    file.php
    Codice PHP:
    <?php
    session_start
    ();
    $utente = $_POST['captcha'];
    $validato = $_SESSION['nome_sessione'];
    if(
    $utente == $validato){
    // Codice per inviare l'e-mail
    }else{
    echo
    "Codice Captcha Errato.";
    }
    ?>
    Ciò che devi modificare:
    Nel form HTML il nome file.php con il nome del file che invia l'e-mail, il nome captcha.php con il nome che contiene il codice che genera il file captcha.
    Nel form HTML e in quello PHP il nome della sessione.
    Ultima modifica di miki92 : 02-06-2008 alle ore 14.36.29
    Apprezzi l'aiuto? Offrimi un caffè!

  10. #10
    Guest

    Predefinito

    Non Funziona...è tutto bianko! :(

  11. #11
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    @sim Scusami tanto ho sbagliato io, ho editato il messaggio sopra non è start_session(); ma session_start(); ho corretto il codice nel post #9

    @lmht Non è il posto più adatto per postare il tuo problema, comunque la tabella chiamata "is_dynamic" esiste? Controlla e in caso negativo apri un nuovo post
    Ultima modifica di miki92 : 02-06-2008 alle ore 14.39.31
    Apprezzi l'aiuto? Offrimi un caffè!

  12. #12
    Guest

    Predefinito

    Scusa, ma session con cosa lo devo modificare?
    Inoltre a me non funziona la parte file.php ecco il codice che ho inserito:
    Codice PHP:
    <?php
    session_start
    ();
    $utente = $_POST['captcha'];
    $validato = $_SESSION['nome_sessione'];
    if(
    $utente == $validato){
    <?
    php

    // ************Inizio Configurazione***************

    //Indirizzo emai a cui inviare i msg

    $mailto = "universal.staff@tiscali.it";

    //Oggetto della mail

    $subject = "Messaggio da universal";

    //Pagina da mostrare dopo l'invio

    $redirect = "page.php?3";

    // ************Fine Configurazione****************





    foreach($HTTP_POST_VARS as $key => $value) {



    $message .= $key . ': ' . $value;

    $message .= "\n";



    }

    if (@
    mail($mailto, $subject, $message)) {



    header("Location: $redirect");

    } else {

    // Messaggio in caso di errore

    echo('



    Impossibile inviare. Torna nella pagina precedente e prova ancora, grazie.</p>'
    );

    }

    ?>
    }else{
    echo "Codice Captcha Errato.";
    } ?>
    P.s: Il codice per inviare l'email funziona, quindi è da escludere che l'errore sia là.

    Grazie anticipatamente.

  13. #13
    Guest

    Predefinito

    Sai usare il php??
    Codice PHP:
    <?php
    session_start
    ();
    $utente = $_POST['captcha'];
    $validato = $_SESSION['nome_sessione'];
    if(
    $utente == $validato){

    // ************Inizio Configurazione***************

    //Indirizzo emai a cui inviare i msg

    $mailto = "universal.staff@tiscali.it";

    //Oggetto della mail

    $subject = "Messaggio da universal";

    //Pagina da mostrare dopo l'invio

    $redirect = "page.php?3";

    // ************Fine Configurazione****************





    foreach($HTTP_POST_VARS as $key => $value) {



    $message .= $key . ': ' . $value;

    $message .= "\n";



    }

    if (@
    mail($mailto, $subject, $message)) {



    header("Location: $redirect");

    } else {

    // Messaggio in caso di errore

    echo('



    Impossibile inviare. Torna nella pagina precedente e prova ancora, grazie.</p>'
    );

    }

    }else{
    echo
    "Codice Captcha Errato.";
    }
    ?>
    Se tu usi ?> e <?php...dentro il codice esso dopo non funziona bene ;)...
    Ciao! :)

  14. #14
    Guest

    Predefinito

    Citazione Originalmente inviato da sIM Visualizza messaggio
    Sai usare il php??
    Decisamente poco, grazie comunque per il codice, ma potresti dirmi sessione con cosa lo devo sostituire, perchè mi da sempre codice scorretto.

  15. #15
    Guest

    Predefinito

    Copia l'errore che ti da...
    Ciao! :)

  16. #16
    Guest

    Predefinito

    Non è un errore ma anche se metto il codice esatto mi da Codice Captcha Errato.
    Probabilmente è legato a session.
    I codici che ho utilizzato sono:
    Codice PHP:
    <?
    session_start
    ();
    header("Content-type: image/png");
    $captchaImage = imagecreatefrompng("1.png") or die("Cannot Initialize new GD image stream");
    $captchaFont = imageloadfont("font.gdf");
    $captchaText = substr(md5(uniqid()),-3,6);
    $_SESSION[’abcd’] = $captchaText;
    $captchaColor = imagecolorallocate($captchaImage,200,200,200);
    imagestring($captchaImage,$captchaFont,15,5,$captchaText,$captchaColor);
    imagepng($captchaImage);
    imagedestroy($captchaImage);
    ?>
    e
    Codice PHP:
    <form action="email.php" method="post">


    <
    fieldset><legend>Dati Personali</legend>
    Il Tuo Nome: <br></p>

    <
    input type="text" name="nome" />
    </
    p>

    <
    br><br>


    La Tua Email: </p><br>



    <
    input type="text" name="email" />
    </
    p></fieldset>
    <
    br><br>
    <
    fieldset><legend>Oggetto</legend><br></p><label for="rb_subj0"><input type="radio" name="subject" id="rb_subj0" value="0" checked="checked" />Affiliazione</label><br><label for="rb_subj1"><input type="radio" name="subject" id="rb_subj1" value="1" />Problemi con il sito</label><br><label for="rb_subjother"><input type="radio" name="subject" value="other" id="rb_subjother" />Altro</label> <input type="text" class="bginput" name="other_subject" size="40" maxlength="85" /></p></fieldset>

    <
    br><br>
    <
    div class="fieldset">
    Messaggio:<br />
    <
    textarea name="message" rows="10" cols="50" wrap="virtual" style="width:540px">Allegare eventualmente il codice del banner, se volete chiedere un affiliazione.</textarea>
    </
    div>

    </
    p>

    <
    br>
    <
    img src="captcha.php" style="border-width:1px" alt="" />
    <
    input type="text" name="captcha" value = "" /><br>
    <
    input type="submit" class="button" value="Invia" accesskey="s" />
    <
    input type="reset" class="button" name="reset" value="Resetta campi" accesskey="r" />
    </
    p>
    </
    form>
    L'ultimo per il form.
    Grazie

  17. #17
    Guest

    Predefinito

    Sostituisci da qui:
    Codice PHP:
    <br>
    <
    img src="captcha.php" style="border-width:1px" alt="" />
    <
    input type="text" name="captcha" value = "" /><br>
    <
    input type="submit" class="button" value="Invia" accesskey="s" />
    <
    input type="reset" class="button" name="reset" value="Resetta campi" accesskey="r" />
    </
    p>
    </
    form>
    così:
    Codice PHP:
    <br>
    <?php

    session_start
    ();
    echo
    "<img src=\"captcha.php\" style=\"border-width:1px\" alt=\"captcha\" />";

    ?>
    <input type="text" name="captcha" value = "" /><br>
    <input type="submit" class="button" value="Invia" accesskey="s" />
    <input type="reset" class="button" name="reset" value="Resetta campi" accesskey="r" />
    </p>
    </form

  18. #18
    Guest

    Predefinito

    No, adesso mi manda alla pagina che deve essere visualizzata dopo l'operazione.


    P.s.= ho chiuso il tag finale, che hai lasciato aperto

  19. #19
    Guest

    Predefinito

    Quindi è giusto? Funziona?..
    Ciao! :)

  20. #20
    Guest

    Predefinito

    ehm veramente no perchè mi ci manda anche se non inserisco il codice.

  21. #21
    Guest

    Predefinito

    Codice PHP:
    <br>
    <?php

    session_start
    ();
    echo
    "<img src=\"captcha.php\" style=\"border-width:1px\" alt=\"captcha\" /> <input type=\"text\" name=\"captcha\" value=\"\" />";

    ?>
    <br>
    <input type="submit" class="button" value="Invia" accesskey="s" />
    <input type="reset" class="button" name="reset" value="Resetta campi" accesskey="r" />
    </p>
    </form>
    In tal caso posta il codice php del form..
    Ciao! :)

  22. #22
    Guest

    Predefinito

    Codice PHP:
    <form action="email.php" method="post">


    <fieldset><legend>Dati Personali</legend>
    Il Tuo Nome: <br></p>

    <input type="text" name="nome" />
    </p>

    <br><br>


    La Tua Email: </p><br>



    <input type="text" name="email" />
    </p></fieldset>
    <br><br>
    <fieldset><legend>Oggetto</legend><br></p><label for="rb_subj0"><input type="radio" name="subject" id="rb_subj0" value="0" checked="checked" />Affiliazione</label><br><label for="rb_subj1"><input type="radio" name="subject" id="rb_subj1" value="1" />Problemi con il sito</label><br><label for="rb_subjother"><input type="radio" name="subject" value="other" id="rb_subjother" />Altro</label> <input type="text" class="bginput" name="other_subject" size="40" maxlength="85" /></p></fieldset>

    <br><br>
    <div class="fieldset">
    Messaggio:<br />
    <textarea name="message" rows="10" cols="50" wrap="virtual" style="width:540px">Allegare eventualmente il codice del banner, se volete chiedere un affiliazione.</textarea>
    </div>

    </p>
    <br>
    <?php

    session_start
    ();
    echo
    "<img src=\"captcha.php\" style=\"border-width:1px\" alt=\"captcha\" />";

    ?>
    <input type="text" name="captcha" value = "" /><br>
    <input type="submit" class="button" value="Invia" accesskey="s" />
    <input type="reset" class="button" name="reset" value="Resetta campi" accesskey="r" />
    </p>
    </form>

  23. #23
    Guest

    Predefinito

    Quello PHP...ossia email.php..
    Ciao! :)

  24. #24
    Guest

    Predefinito

    Codice PHP:
    <?php
    session_start
    ();
    $utente = $_POST['captcha'];
    $validato = $_SESSION['nome_sessione'];
    if(
    $utente == $validato){

    // ************Inizio Configurazione***************

    //Indirizzo emai a cui inviare i msg

    $mailto = "universal.staff@tiscali.it";

    //Oggetto della mail

    $subject = "Messaggio da universal";

    //Pagina da mostrare dopo l'invio

    $redirect = "page.php?3";

    // ************Fine Configurazione****************





    foreach($HTTP_POST_VARS as $key => $value) {



    $message .= $key . ': ' . $value;

    $message .= "\n";



    }

    if (@
    mail($mailto, $subject, $message)) {



    header("Location: $redirect");

    } else {

    // Messaggio in caso di errore

    echo('



    Impossibile inviare. Torna nella pagina precedente e prova ancora, grazie.</p>'
    );

    }

    }else{
    echo
    "Codice Captcha Errato.";
    }
    ?>
    EDIT: Risolto il problema era nella sessione e negli apici, grazie tanto, arrivederci.
    Ultima modifica di universale : 16-06-2008 alle ore 21.02.21

  25. #25
    Guest

    Predefinito problemi chaptcha

    Ciao ragazzi ho provato a seguire la vostra discussione, ho creato una pagina chaptcha.php
    Codice PHP:
    <?
    /* Inizio Configurazione */
    $numero1 = rand(0,9);
    $numero2 = rand(0,9);
    $numero3 = rand(0,9);
    $numero4 = rand(0,9);

    $x = "7";
    $y = "20";

    // Sfondo Obbligatoriamente PNG
    $sfondo = "background.png";

    // Colore Sfondo diviso da "," in formato RGB (purtroppo diviso in 3 variabili)
    $rosso = "255";
    $giallo = "0";
    $blu = "0";

    $font = "cour.ttf";

    $grandezza_font = "15";
    $angolo = "0";
    /* Fine Configurazione */

    $bac = imagecreatefrompng($sfondo);
    $txt = "$numero1 $numero2 $numero3 $numero4";
    $col = imagecolorallocate($bac,$rosso,$giallo,$blu);
    imagefttext($bac,$grandezza_font,$angolo,$x,$y,$col,$font,$txt);

    /* Inizio memorizzazzione codice in una sessione */
    session_start();
    $_SESSION['nome_sessione'] = $txt;
    /* Fine memorizzazzione codice in una sessione */ ?>

    dopodiche io ho il form e il codice da eseguire nella stessa pagina, che si chiama guestbook.php
    Codice PHP:
    session_start();
    $utente = $_POST['captcha'];
    $validato = $_SESSION['nome_sessione'];
    ....
    collegamento db
    ...
    if(
    $utente == $validato){
    query...
    }else{
    echo
    "Codice Captcha Errato.";
    }
    ....
    ...
    ...
    <
    form name="info" id="info" action="guestbook.php" method="post" onsubmit="return controlla(this)">
    ....
    ...
    form
    ...
    <
    img src="captcha.php" style="border-width:1px" alt="" />
    <
    input type="text" name="captcha" value = "" />
    ...
    <
    input type="submit" value="Invia" />
    </
    form><br /><br />
    Il mio probelma è che al momento della visualizzazione del form non vedo nessuna immagine...dove sbaglio? grazie

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •