Visualizzazione risultati 1 fino 6 di 6

Discussione: [guida]Creare chapta php

  1. #1
    Guest

    Predefinito [guida]Creare chapta php

    Seguire questa guida:
    Codice PHP:
    <?php
    session_start
    ();

    define("Niente", 0);
    define("facile", 30);
    define("medio", 50);
    define("difficile", 80);
    define("super_difficile", 100);

    define("punto", 1);
    define("linea", 2);

    /* dimensioni */
    $x = 200; //larghezza
    $y = 80; //altezza

    $image = imagecreatetruecolor($x, $y); //creo l'immagine

    $color = array();
    $color[] = imagecolorallocate($image, 255, 0, 0);
    $color[] = imagecolorallocate($image, 0, 255, 0);
    $color[] = imagecolorallocate($image, 0, 0, 255);
    $color[] = imagecolorallocate($image, 255, 255, 0);
    $color[] = imagecolorallocate($image, 255, 0, 255);
    $color[] = imagecolorallocate($image, 255, 255, 255);
    $color[] = imagecolorallocate($image, 0, 255, 255);

    $font = array();
    $font[] = "font/arial.ttf";
    $font[] = "font/abbeyroad_regular.ttf";
    $font[] = "font/roman_sd_regular.ttf";
    $font[] = "font/elephants_in_cherry_trees_normal.ttf";

    $black = imagecolorallocate($image, 0, 0, 0);
    imagefill($image, 0, 0, $black);
    add_noise($image, facile, punto, $x, $y); //aggiungo il disturbo

    $_SESSION['CAPTCHA'] = strtolower(getString()); //genero la nuova stringa

    for($i = 0;$i < strlen($_SESSION['CAPTCHA']); $i++) {
    /* per ogni lettera applico impostazioni diverse (dimensione, angolo, colore, font) */
    imagettftext(
    $image, //immagine
    20 + rand(0, 6), //dimensione carattere
    rand(-35, 35), //angolo di rotazione
    ($i+1)*26, //offset sulla x
    45+ rand(0, 4), //offset sulla y
    $color[rand(0, count($color)-1)], //colore
    $font[rand(0, count($font)-1)], //carattere
    $_SESSION['CAPTCHA'][$i] //lettera da stampare
    );
    }

    header("Content-type: image/png");

    imagepng($image);
    imagedestroy($image);


    function
    getString() {
    $str = base64_encode(time());
    $str = str_replace("=", "", $str); //elimino gli =
    $str = str_shuffle($str);
    return
    substr($str, 0, 6);
    }

    function
    add_noise($image, $difficoult, $figure, $x, $y) {
    if(
    $figure == 1)
    $difficoult *= 15; //i punti devono essere più delle linee per generare un disturbo significativo

    for($i = 0; $i < $difficoult; $i++) {
    $color = imagecolorallocate($image, rand(0,255), rand(0,255), rand(0,255));
    $p = rand(0, 10);
    $x1 = rand($p, rand($x - $p, $x-1));
    $x2 = rand($p, rand($x - $p, $x-1));
    $y1 = rand($p, rand($y - $p, $y-1));
    $y2 = rand($p, rand($y - $p, $y-1));

    switch(
    $figure) {
    case
    1:
    imageline($image, $x1, $y1, $x1, $y1, $color);
    break;
    default:
    imageline($image, $x1, $y1, $x2, $y2, $color);
    break;
    }
    }

    }
    ?>
    lo script non é complicato ed é (secondo me) di facile comprensione:
    per rendere il chapta piú difficile modificare la linea
    Codice PHP:
    add_noise($image, facile, punto, $x, $y); //aggiungo il disturbo
    con
    Codice PHP:
    add_noise($image, (livello di difficoltá voluto), linea, $x, $y); //aggiungo il disturbo
    per rendere il chapra piú facile modificare la linea
    Codice PHP:
    add_noise($image, facile, punto, $x, $y); //aggiungo il disturbo
    con
    Codice PHP:
    add_noise($image, niente, punto, $x, $y); //tolgo il disturbo
    per utilizzare lo script in un form html:

    Codice PHP:
    <? session_start(); ?>

    <form action="*.php" method="post">
    <img src="chapta.php" /><br/><br/>
    Inserisci il codice che vedi: <input type="text" name="cpt" /> <input type="submit" value="Check" />
    </form>

    <?php

    if(isset($_POST['cpt']) && !empty($_POST['cpt']))
    if(
    $_SESSION['CAPTCHA'] != strtolower($_POST['cpt']))
    echo
    "<strong><font color=red>Codice errato!</font></strong>";
    else
    echo
    "Ok";

    ?>
    modificare
    Codice HTML:
    <form action="*.php" method="post">
    con il nome del file nel quale lo utilizzate
    esempio:
    Codice HTML:
    <form action="esempio.php" method="post">

  2. #2
    Guest

    Predefinito

    grazie mille mi sei stato d aiuta ma ti volevo chiedere io ho creato captcha.php copiando esattamente il codice sopra e ho creato form.php copiando l altro codice e mettendo <form action="captcha.php" method="post" pero non funziona infatti l immagine non viene visualizzata e se premo check si apre captcha.php senza nessun numero/lettera dentro l immagine

  3. #3
    Guest

    Predefinito

    guarda questo link , l'ho provato su altervista è funziona perfettamente http://www.ebug.it/?p=54

    Fammi sapere se va bene, :)
    Ultima modifica di scacchirako : 02-04-2010 alle ore 13.58.04

  4. #4
    Guest

    Predefinito

    scusa... non avevo detto di mettere dei font nella cartella font



    $font = array();
    $font[] = "font/arial.ttf";
    $font[] = "font/abbeyroad_regular.ttf";
    $font[] = "font/roman_sd_regular.ttf";
    $font[] = "font/elephants_in_cherry_trees_normal.ttf";

  5. #5
    Guest

    Predefinito

    ciao...
    io ho creato il file

    http://punkrosteeny.altervista.org/chapta1.php
    Codice PHP:
    <? session_start(); ?>

    <form action="chapta.php" method="post">
    <img src="chapta.php" /><br/><br/>
    Inserisci il codice che vedi: <input type="text" name="cpt" /> <input type="submit" value="Check" />
    </form>

    <?php

    if(isset($_POST['cpt']) && !empty($_POST['cpt']))
    if(
    $_SESSION['CAPTCHA'] != strtolower($_POST['cpt']))
    echo
    "<strong><font color=red>Codice errato!</font></strong>";
    else
    echo
    "Ok";

    ?>
    e il file http://punkrosteeny.altervista.org/chapta.php

    Codice PHP:
    <?php
    session_start
    ();
    $font = array();
    $font[] = "font/comic.ttf";
    $font[] = "font/lucon.ttf";
    $font[] = "font/majalla.ttf";
    define("Niente", 0);
    define("facile", 30);
    define("medio", 50);
    define("difficile", 80);
    define("super_difficile", 100);

    define("punto", 1);
    define("linea", 2);

    /* dimensioni */
    $x = 200; //larghezza
    $y = 80; //altezza

    $image = imagecreatetruecolor($x, $y); //creo l'immagine

    $color = array();
    $color[] = imagecolorallocate($image, 255, 0, 0);
    $color[] = imagecolorallocate($image, 0, 255, 0);
    $color[] = imagecolorallocate($image, 0, 0, 255);
    $color[] = imagecolorallocate($image, 255, 255, 0);
    $color[] = imagecolorallocate($image, 255, 0, 255);
    $color[] = imagecolorallocate($image, 255, 255, 255);
    $color[] = imagecolorallocate($image, 0, 255, 255);

    /* $font = array();
    $font[] = "font/arial.ttf";
    $font[] = "font/abbeyroad_regular.ttf";
    $font[] = "font/roman_sd_regular.ttf";
    $font[] = "font/elephants_in_cherry_trees_normal.ttf"; */

    $black = imagecolorallocate($image, 0, 0, 0);
    imagefill($image, 0, 0, $black);
    add_noise($image, facile, linea, $x, $y); //aggiungo il disturbo

    $_SESSION['CAPTCHA'] = strtolower(getString()); //genero la nuova stringa

    for($i = 0;$i < strlen($_SESSION['CAPTCHA']); $i++) {
    /* per ogni lettera applico impostazioni diverse (dimensione, angolo, colore, font) */
    imagettftext(
    $image, //immagine
    20 + rand(0, 6), //dimensione carattere
    rand(-35, 35), //angolo di rotazione
    ($i+1)*26, //offset sulla x
    45+ rand(0, 4), //offset sulla y
    $color[rand(0, count($color)-1)], //colore
    $font[rand(0, count($font)-1)], //carattere
    $_SESSION['CAPTCHA'][$i] //lettera da stampare
    );
    }

    header("Content-type: image/png");

    imagepng($image);
    imagedestroy($image);


    function
    getString() {
    $str = base64_encode(time());
    $str = str_replace("=", "", $str); //elimino gli =
    $str = str_shuffle($str);
    return
    substr($str, 0, 6);
    }

    function
    add_noise($image, $difficoult, $figure, $x, $y) {
    if(
    $figure == 1)
    $difficoult *= 15; //i punti devono essere più delle linee per generare un disturbo significativo

    for($i = 0; $i < $difficoult; $i++) {
    $color = imagecolorallocate($image, rand(0,255), rand(0,255), rand(0,255));
    $p = rand(0, 10);
    $x1 = rand($p, rand($x - $p, $x-1));
    $x2 = rand($p, rand($x - $p, $x-1));
    $y1 = rand($p, rand($y - $p, $y-1));
    $y2 = rand($p, rand($y - $p, $y-1));

    switch(
    $figure) {
    case
    1:
    imageline($image, $x1, $y1, $x1, $y1, $color);
    break;
    default:
    imageline($image, $x1, $y1, $x2, $y2, $color);
    break;
    }
    }

    }
    ?>
    ma lo script non sembra andare... ps ho aggiunto una cartella con i font

  6. #6
    Guest

    Predefinito

    stai usando il file .php che crea l'immagine captcha come se dovessere ricevere i dati del form...
    sostituisci nel file chapta1
    la stringa
    Codice:
    <form action="chapta.php" method="post">
    con
    Codice:
    <form action="chapta1.php" method="post">
    che poi è il file che controlla il codice inserito..

    ps: si dice captcha

Regole di scrittura

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