Sugestie dotyczące forum, systemu WinduCMS 2 oraz inne tematy.

Moderator: Moderatorzy

[Pytanie] Captcha w formularzu

Postprzez pgraficzny » 26 Lut 2013, 20:33

Czy dało by się dodać captcha lub np. 2+2= czy inne cuś sprawdzającego do formularza komentarzy?
pgraficzny
Wyjadacz
 
Posty: 139
Rejestracja: 14 Gru 2011, 10:29
Miejscowość: Kłodzko
Podziękował: 60 razy
Pomagał(a): 6 razy

Re: [Pytanie] Captcha w formularzu

Postprzez Wojtas.fdsl » 26 Lut 2013, 22:36

Dałoby się, mechanizm captcha jest już wykorzystany w Windu, pojawia się przy logowaniu po trzech błędnych próbach.
Ale z drugiej strony dodawanie go do komentarzy, było by raczej irytujące dla użytkowników, a nawet zniechęcające
Wojtas.fdsl
Wyjadacz
 
Posty: 104
Rejestracja: 25 Sty 2013, 10:49
Miejscowość: Warszawa
Podziękował: 8 razy
Pomagał(a): 48 razy

Re: [Pytanie] Captcha w formularzu

Postprzez pgraficzny » 27 Lut 2013, 10:28

Właśnie chciałbym trochę "zniechęcić" ponieważ mam po kilkanaście nieczytelnych wpisów dziennie i nie wiem czy to robot czy nudzący się człowiek :D
pgraficzny
Wyjadacz
 
Posty: 139
Rejestracja: 14 Gru 2011, 10:29
Miejscowość: Kłodzko
Podziękował: 60 razy
Pomagał(a): 6 razy

Re: [Pytanie] Captcha w formularzu

Postprzez czajnik » 27 Lut 2013, 10:46

W formularzu czyli w widgecie w pliku PHP dodaj coś takiego

Kod: Zaznacz wszystko
$form->add('captcha', 'captcha',null,null,array("tooltip" => lang::read('admin.login.controller.autogener'),"class" => "input-medium","placeholder" => lang::read('admin.login.controller.password')));
      
czajnik
Administrator
 
Posty: 1108
Rejestracja: 26 Lut 2010, 02:56
Podziękował: 64 razy
Pomagał(a): 243 razy

Re: [Pytanie] Captcha w formularzu

Postprzez czajnik » 27 Lut 2013, 10:47

Oczywiście to $form powinno być taką zmienną dla jakiej generowany jest formularz, nie pamiętam jaka jest tam :P
czajnik
Administrator
 
Posty: 1108
Rejestracja: 26 Lut 2010, 02:56
Podziękował: 64 razy
Pomagał(a): 243 razy

Re: [Pytanie] Captcha w formularzu

Postprzez lolik » 10 Lis 2014, 21:44

Dodałem nową funkcjonalność do formularza, który daje użytkownikowi możliwość zmiany obrazku captcha na czytelny, czyli tzw. reload captcha. Myślę, że to może być przydatne.

W języku dodajemy nową linijkę, np. pod nazwą
Kod: Zaznacz wszystko
validator.captcha.re = Obrazek nieczytelny. Zmień na inny!


Zmienna validator.captcha.re będzie pobierana przez nasz system w wielu językach i nie będzie problemu z dostosowaniem do jednego języka, o ile wprowadzimy inne języki do formularza.

Dalej przechodzimy, np. do widgetu commentsNormal. W commentsNormalController.class.php wstawiamy naszą captcha, jeśli jej nie mamy przed takim zapisem
Kod: Zaznacz wszystko
$form->addRule('content', 'required', null,lang::read('comments.normal.givecontent'))
:

Kod: Zaznacz wszystko
 $form->add('captcha', 'captcha',null,null,array("tooltip" => lang::read('admin.login.controller.autogener'),"class" => "input-medium","placeholder" => lang::read('admin.login.controller.password')));


Powyżej tego kodu wstawiamy następujący kod, w którym jest już wspomniana wyżej zmienna językowa:

Kod: Zaznacz wszystko
$form->add('HTML',"<a href='javascript:reloadImg()'>".lang::read('validator.captcha.re')."</a>");


Zapisujemy klasę i przechodzimy do commentsNormalView.tpl i wstawiamy następujący kod skryptu poniżej zapisu {$data.form->toHtml()}:

Kod: Zaznacz wszystko
<script type="text/javascript">
  function reloadImg() {
document.getElementById("captcha").src="{{$HOME}}captcha/generate/image/";
}
</script>


Należy także pamiętać, że obrazek captcha powinien mieć id='captcha' w klasie formCaptchaElement.class.php , która się znajduje w folderze plugins (więcej na ten temat: http://pl.windu.org/struktura-pluginu

Kod: Zaznacz wszystko
$form .= "<img id='captcha' src='".HOME."captcha/generate/image/'><br>";


Tym sposobem nie musimy odświeżać całą stronę, a skrypt odświeży tylko captcha
lolik
 
Posty: 4
Rejestracja: 09 Lis 2014, 15:38
Podziękował: 0 raz(y)
Pomagał(a): 1 raz(y)

Re: [Pytanie] Captcha w formularzu

Postprzez burial » 17 Sie 2015, 13:52

świetnie to opisałeś...

mam jednak problem...
masz pomysł czemu mi to działa w Google Chrome a nie działa w Firefoxie i IE?
burial
Adept
 
Posty: 31
Rejestracja: 15 Lis 2014, 15:40
Podziękował: 4 razy
Pomagał(a): 3 razy

Re: [Pytanie] Captcha w formularzu

Postprzez Ryba » 18 Sie 2015, 09:57

co konkretnie nie dziala? Podeslij moze jakies screeny
Ryba
Stały bywalec
 
Posty: 56
Rejestracja: 04 Gru 2014, 10:12
Podziękował: 0 raz(y)
Pomagał(a): 9 razy

Re: [Pytanie] Captcha w formularzu

Postprzez burial » 24 Sie 2015, 16:43

Ryba napisał(a):co konkretnie nie dziala? Podeslij moze jakies screeny



Nie działa na IE i Firefox:
klikam na link "obrazek nieczytelny. zmien na inny" i nic się nie zmiania

Działa na Google Chrome.

Można zobaczyć na: <usunięto>
burial
Adept
 
Posty: 31
Rejestracja: 15 Lis 2014, 15:40
Podziękował: 4 razy
Pomagał(a): 3 razy

Re: [Pytanie] Captcha w formularzu

Postprzez burial » 09 Wrz 2015, 09:47

dziwnie jest odpowiadać samemu sobie, ale ze względu na brak jakiejkolwiek pomocy... cóż - może komuś się przyda, bo aż trudno mi uwierzyć, że problem dotyczył tylko mnie...

wygląda na to, że problem z Firefoxem i IE jest związany z obsługa cache'owania. Należy dokonać małej modyfikacji javascriptu

Kod: Zaznacz wszystko
<script type='text/javascript'>
function reloadImg() {
document.getElementById("captcha").src="{{$HOME}}captcha/generate/image/?"+Math.random();
}


Dodanie funkcji randomizującej link "omija" cache i wszystko zaczyna działać
burial
Adept
 
Posty: 31
Rejestracja: 15 Lis 2014, 15:40
Podziękował: 4 razy
Pomagał(a): 3 razy


Kto jest na forum

Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 1 gość

cron