Skocz do zawartości

Zabezpieczenie formularza obrazkiem -np. numerkami


artiko

Rekomendowane odpowiedzi

Witam. Pytanko raczej lamerskie ;) , ale nie jestem w stanie tego sam "przeskoczyć". Może przy okazji jeszcze komuś przyda się odpowiedź, którą (mam nadzieję) dostanę.

Chodzi o to, żeby żaden robocik nie mógł wysyłać maili poprzez taki formularz.

Z góry dzięki za pomoc.

Speedway blog

Łatwo dostępne karty kredytowe

Odnośnik do komentarza
Udostępnij na innych stronach

Hmm... nie wiem jak to jest robione gdzie indziej... ale ja wyobażam to sobie tak...

Losuje iles tam liczb z wybranego przedzialy tablicy znaków. IMG SRC dla kadej wylosowanej cyfry... jednoczesnie są one podstawą do spradzenia poprawnosci kodu... dosc banalne mnie sie to wydaje.

Funkcja CHR() powinna w tym pomoc (w zamianie wylosowanej liczby na znak z tablicy).

Odnośnik do komentarza
Udostępnij na innych stronach

Jak to zrobić ;)

- napisać w php skrypt który korzystając z funkcji graficznych wygeneruje obrazek z nałożonym kodem tekstowym np.: cyfry [lub skorzystać z gotowca]

- do formularza dodać ukryte pole [type=hidden] które będzie zawierał ten sam kod co obrazek dodatkowo kod może być "zakodowany" np. MD5()

- do formularza dodać pole tekstowe na wprowadzenie kodu autoryzacji widocznego na obrazku

- w skrypcie odbierającym porównać zgodność kodu przesłanego z ukrytego pola formularza z kodem wprowadzonym w dodatkowym polu tekstowym

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Do konkretów...

plik img.php - generator obrazkow

<?php

$IMGVER_IMAGE = imagecreate(110,40);
$IMGVER_COLOR_BLACK = imagecolorallocate ($IMGVER_IMAGE, 0, 0, 0);
$IMGVER_COLOR_WHITE = imagecolorallocate ($IMGVER_IMAGE, 255, 255, 255);

imagefill($IMGVER_IMAGE, 0, 0, $IMGVER_COLOR_BLACK);

session_start();
$IMGVER_RandomText = $HTTP_SESSION_VARS["IMGVER_RndText"];
imagechar($IMGVER_IMAGE, 4, 20, 13, $IMGVER_RandomText[0] ,$IMGVER_COLOR_WHITE);
imagechar($IMGVER_IMAGE, 5, 40, 13, $IMGVER_RandomText[1] ,$IMGVER_COLOR_WHITE);
imagechar($IMGVER_IMAGE, 3, 60, 13, $IMGVER_RandomText[2] ,$IMGVER_COLOR_WHITE);
imagechar($IMGVER_IMAGE, 4, 80, 13, $IMGVER_RandomText[3] ,$IMGVER_COLOR_WHITE);
imagechar($IMGVER_IMAGE, 5, 100, 13, $IMGVER_RandomText[4] ,$IMGVER_COLOR_WHITE);
imagechar($IMGVER_IMAGE, 3, 120, 13, $IMGVER_RandomText[5] ,$IMGVER_COLOR_WHITE);

header("Content-type: image/jpeg");
imagejpeg($IMGVER_IMAGE);
?>

formularz:


session_start();
//liczba znakow $i
 $IMGVER_TempString="";
 for ($i = 1; $i <= 4; $i++) {
       $IMGVER_TempString .= GetRandomChar();
 }
 $HTTP_SESSION_VARS["IMGVER_RndText"] = $IMGVER_TempString;

//tu generowane sa same cyfry, mozna kombinowac z literami ustawiajac inny zakres w drugim mt_rand
function GetRandomChar() {
 mt_srand((double)microtime()*1000000);
    $IMGVER_RandVal = mt_rand(48, 57);
 return chr($IMGVER_RandVal);
}

//W formularzu:
<form action="ver.php">
<img src="img.php?SID" />
<input name="Kod" type="text" id="Kod" size="20"  />
//itd

Weryfikacja - ver.php


            session_start();

if ($HTTP_POST_VARS["Kod"] == $HTTP_SESSION_VARS["IMGVER_RndText"])  
print "ok";

else 
print "sorry mama";

Pozdrawiam

k2

Odnośnik do komentarza
Udostępnij na innych stronach

A po co do takiego zastosowania zaprzęgać aż mechanizmy sesyjne. Można to wiele łatwiej rozwiązać...

Niestety nie mam teraz czasu wiec się tym nie zajmę :)

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Dziękuję panowie za to co jest (szczególnie za "konkrety"). Pozostaje mi tylko to przetestować. Jeżeli są jakieś prostsze rozwiązania - jak sugeruje kolega Mion - to w wolnej chwilce zawsze można w tym topicu dopisać konkretne "małe co nie co" :)

Jeszcze raz dzięki.

Speedway blog

Łatwo dostępne karty kredytowe

Odnośnik do komentarza
Udostępnij na innych stronach

Dziękuję panowie za to co jest (szczególnie za "konkrety").
Dla pewnosci dodaj jeszcze w formularzy okreslenie metody<form action="ver.php" method="post">

i najlepiej od razu pozamieniaj na obecny sposob odwoływania sie do zmiennych

$HTTP_POST_VARS["Kod"] na $_POST["Kod"]
$HTTP_SESSION_VARS["IMGVER_RndText"] na $_SESSION["IMGVER_RndText"]

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności