Loading:


    Zabespieczenie formularza tokenem [PHP]

    Token ma zabezpieczyć przed spamowaniem formularzy przez spamerów, oraz botami panoszącymi się w Internecie. Istnieje możliwość rozwiązania tego problemu poprzez dołączenie do formularza mechanizmów CAPTACHA -  tokena - obrazka z kodem, który należy przepisać do pola formularza obok obrazka z kodem.

     



    Napisz Artyku³

    Listing

    Tworzymy plik process.php



    <?php
    session_start();     // start sesji
    $session = $_SESSION['captcha'];   // zdefiniowanie sesji
    $image = $_POST['image'];
    $image = md5($image);   // szyfrowanie MD5
    if ($session == $image){
    // dalsze instrukcje, jeśli token jest poprawny
    echo "KOD POPRAWNY";
    }
    // dalsze instrukcje, jeśli token jest błędny tutaj możesz ustawić czy chcesz mieć tylko informację o błędnym kodzie lub usuń // przed header i powrócisz do formularza
    else{
    //header("Location: form.php");
    echo "<div style=\"width: 100px\">";
    echo "<div style=\"border: 2px solid blue; text-align: center\">";
    echo "<font style=\"color: red; font-family: verdana; font-size: 12px; font-weight: bold\">BŁĘDNY KOD</font></div>";
    echo "<div style=\"text-align:center\">";
    echo "<input type=\"button\" value=\"Wróć\" onClick=\"history.back()\"></div></div>";
    }
    ?>



    Następnie tworzymy plik image.php



    <?php
    session_start();
    // wysłanie nagłówków do przeglądarki
    header ("(anti-spam-content-type:) image/jpg");

    // generowanie liczb losowych do wykorzystania w naszym szyfrowaniu
    $enc_num = rand(0, 9999); // numer ten jest szyfrowany
    $key_num = rand(0, 24); // używany ciąg znaków wykorzystany na obrazku

    // użyj losowy ciąg cyfr i liter przy użyciu Md5
    // ilość wyświetlanych znaków w naszym przypadku 5
    $hash_string = substr(md5($enc_num), $key_num, 5);
    $hash_md5 = md5($hash_string);

    // przypisanie do sesji
    $_SESSION['captcha'] = $hash_md5;

    // tworzą zestaw obrazów jako tło pod tokenem
    $bgs = array("imag/back1.jpg", "imag/back2.jpg", "imag/back3.jpg");

    // wybiera obraz tła przy użyciu funkcji podręcznej array_rand
    $background = array_rand($bgs, 1);

    // ustawia jako tło losowo wybrany gif
    $img_handle = imagecreatefromjpeg($bgs[$background]);

    // kolor czcionki, tekstu
    $text_colour = imagecolorallocate($img_handle, 0, 0, 0);

    // wielkosc czcionki, tekstu
    $font_size = 5;

    // pobierz wymiary poziome i pionowe obrazu tla
    $size_array = getimagesize($bgs[$background]);
    $img_w = $size_array[0];
    $img_h = $size_array[1];

    // pozycja pozioma
    $horiz = round(($img_w/2)-((strlen($hash_string)*imagefontwidth(5))/2), 1);

    // pozycja pionowa
    $vert = round(($img_h/2)-(imagefontheight($font_size)/2));

    // umieść wygenerowany tekst na tle
    imagestring($img_handle, $font_size, $horiz, $vert, $hash_string, $text_colour);

    // tworzenie obrazu
    imagejpeg($img_handle);

    // usuwanie obrazu
    imagedestroy($img_handle);
    ?>



    Na koniec tworzymy plik form.php



    <form method="post" action="process.php">
    <img src="image.php" border="0"><br/>
    <input type="text" name="image"><br/>
    <input type="submit" value="Wyślij">
    <input type="button" value="Odśwież" onClick="window.location.reload()">
    </form>




    Dodano przez: adam2811 Ranga: 0 Punktów: 0
    Komentarze użytkowników
      • Tre¶æ komentarza
        Kod do komentarza (opcjonalnie)
        PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
        Autor
        Token
        token

         

         








    funkcje.net
    Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2025 v.1.5 | design: diviXdesign & rainbowcolors