DejaVu |
» 2012-07-07 19:28:18 1. Losujesz kod, zapisujesz go w bazie
2. Zwracasz ID kodu
3. Generujesz PHP obrazek zawierający kod (kod generujesz w katalogu tmp).
4. Przy submicie wysyłasz ID kodu + kod wpisany przez użytkownika
5. Potem tylko robisz Update'a na bazie, że kod został właśnie użyty (aby nie dało się ponownego submita zrobić z innym numerkiem) no i zwracasz tym samym informację czy podany kod jest poprawny (i wprowadzony pierwszy raz) czy też nie. |
|
ison |
» 2012-07-07 20:52:45 jest dosyć prosty sposób na captchę
Po prostu utwórz sobie plik getCaptcha.php który wylosuje numerek, zapisze go w sesji użytkownika i zwróci obrazek z tym numerkiem. Za każdym razem kiedy użytkownik wywoła skrypt getCaptcha to dostanie nowy indywidualny numer, który musi przepisać. Przy submicie sprawdzsz czy przepisany kod zgadza się z kodem w jego sesji po czym oczywiście go czyścisz. |
|
akwes Temat założony przez niniejszego użytkownika |
» 2012-07-08 08:55:49 @DejaVu, czyli teoretycznie każde wyświetlenie wpisu/strony z captchą tworzyłoby wpis w bazie?
@ison, pliki sesji są trzymane na serwerze, czyli jak właduje tam kod z captchy to użytkownik go nie podglądnie?
|
|
Drraven |
» 2012-07-08 09:52:54 Chyba chodziło p. Piotrkowi, że jak kod dobry to komentarz w bazie się dodaje ;D
#m4tx: a widziałeś kiedyś takie coś? Na początku było już mówione, że skrypt pod daną stronę i tak to obejdzie :D |
|
m4tx |
» 2012-07-08 10:40:14 No to niech reCaptchę obejdzie :P A poza tym spamowe wiadomości, których jest pewien, i tak wywali z automatu. |
|
DejaVu |
» 2012-07-08 13:41:58 @akwes: true (każde wyświetlenie captchy), ale tylko kod, więc to był wpis rzędu 16bajtów więc baza by to przeżyła :) Poza tym zamiast oznaczać 'kod użyty' można go po prostu usuwać. |
|
ison |
» 2012-07-08 14:43:58 @ison, pliki sesji są trzymane na serwerze, czyli jak właduje tam kod z captchy to użytkownik go nie podglądnie? |
nie, użytkownik nie może podejrzeć co jest zapisane w sesji |
|
akwes Temat założony przez niniejszego użytkownika |
» 2012-07-08 15:37:23 <?php // getcaptcha.php $val1 = rand(1,9); $val2 = rand(1,9); $val3 = rand(1,9); // number result $result = $val1 * $val2 + $val3; session_start(); $_SESSION['cap'] = $result; // text result to draw $text = $val1." * ".$val2." + ".$val3." = "; // making image $image = imagecreate(120,30); $bg_color = ImageColorAllocate($image, 110,0,0); $text_color = imagecolorallocate($image, 124, 163, 255);
$font = "/usr/share/fonts/truetype/msttcorefonts/arial.ttf"; // drawing char by char for($x=0; $x <= strlen($text); $x++) { imagettftext($image, rand(12,14), rand(-15,15), 5+10*$x, 20, $text_color, $font, $text[$x]); } header("content-type: image/png"); imagepng($image); imagedestroy($image); ?>
<form action="SOME_URL" method="post"> <img src="getcaptcha.php"/><input type="text" name="cap" cols="100" rows="1" > <input type="submit" name="send" value="Publikuj" /> </form>
session_start(); if ( isset($_SESSION['cap']) && ($_SESSION['cap'] == $_POST['cap'])) { // action unset($_SESSION['cap']); } else { // wrong }
Jakby ktoś kiedyś szukał ;> Nie gwarantuje braku błędów ;> // pierwsze poprawki ;) |
|
1 2 « 3 » 4 |