Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] reCaptcha
Forum PHP.pl > Forum > PHP > Frameworki
Foxx
Witajcie, chciałbym zainstalować plugin reCaptcha dla Symfony ale jest chyba jakiś problem z dokumentacją.
Tam gdzie powinno być README, czyli http://www.symfony-project.org/plugins/sfReCaptchaPlugin jest adres do traca a trac przekierowuje spowrotem na http://www.symfony-project.org/plugins/sfReCaptchaPlugin
Czy ktoś widział gdzieś tą dokumentację?
Crozin
Jeszcze nie tak dawno temu korzystałem z tego pluginu - sprawdź może w cacheu Googlea, albo na archive.org będzie. Ewentualnie mogę podrzucić "HowTo" o ile jeszcze pamiętam tongue.gif
Foxx
Niestety nie mogę znaleźć nigdzie starszych wersji tej strony. Trudno, po prostu zastosuję inne captcha a do reCaptcha wrócę jak będę miał więcej czasu albo jak się pojawi dokumentacja smile.gif Dzięki za pomoc.
athabus
Też napotkałem ten problem, już miałem spróbować innego captcha, ale postanowiłem sprawdzić jak się to instaluje bez pluginu.

ReCaptcha jest bardzo prosta w instalacji - w zasadzie to jeden plik, reszta opiera się na webservices. Wystarczy założyć u nich konto, pobrać paczkę dla php i wstawić kilka linijek kodu tak jak w instrukcji - na prawdę nie wiem co ten plugin ma robić, bo instalacja zajęła mi 5 minut (z czego 3 to zakładanie konta). Wszystko zrobiłem z 1 stronicowego tutoriala na ich stronie i zadziałało bezbłędnie za pierwszym razem - polecam to rozwiązanie. Żeby jeszcze tylko można było dać zestaw swoich słów po Polsku...
pauluZ
Symfony: 1.4.13
sfFormExtraPlugin
sfDoctrineGuardPlugin-5.0.0.tgz (VERSION: 1.0.4)


"portal" to mój frontend.

Ustawiam w apps\portal\config\app.yml :
Kod
all:
  recaptcha:
    active:     true
    publickey:  "key"
    privatekey: "key"

(kody kluczy oczywiście z : https://www.google.com/recaptcha/admin/create)

Rozszerzam formularz od rejestracji dla: sfDoctrineGuardPlugin
lib\form\doctrine\sfDoctrineGuardPlugin\sfGuardRegisterForm.class.php
  1. /**
  2.  * sfGuardRegisterForm for registering new users
  3.  *
  4.  * @package Symfony
  5.  * @subpackage form
  6.  * @author Paweł Szczepanek <pauluz@pauluz.pl>
  7.  * @version SVN: $Id: BasesfGuardChangeUserPasswordForm.class.php 23536 2009-11-02 21:41:21Z Kris.Wallsmith $
  8.  */
  9. class sfGuardRegisterForm extends BasesfGuardRegisterForm
  10. {
  11. /**
  12.   * @see sfForm
  13.   */
  14. public function configure()
  15. {
  16. if (sfConfig::get('app_recaptcha_active', false))
  17. {
  18. $this->setWidget('captcha', new sfWidgetFormReCaptcha(array(
  19. 'public_key' => sfConfig::get('app_recaptcha_publickey'),
  20. 'theme' => 'red\',
  21. custom_translations : {
  22. instructions_visual : "Wpisz oba słowa (ze spacją):",
  23. instructions_audio : "Wpisz to co usłyszysz:",
  24. play_again : "Odegraj dźwięk jeszcze raz",
  25. cant_hear_this : "Pobierz dźwięk jako MP3",
  26. visual_challenge : "Tryb wizualny",
  27. audio_challenge : "Tryb audio",
  28. refresh_btn : "Odśwież Captche",
  29. help_btn : "Okienko pomocy",
  30. incorrect_try_again : "Błąd. Spróbuj jeszcze raz"
  31. },
  32. nothing : \'null',
  33. 'culture' => 'pl',
  34. ), array('required'=> false)));
  35.  
  36. $this->setValidator('captcha', new sfValidatorReCaptcha(array(
  37. 'private_key' => sfConfig::get('app_recaptcha_privatekey')
  38. ), array(
  39. 'captcha' => 'Źle podana Captcha (%error%).',
  40. 'server_problem' => 'Problemy z połączeniem do serwera (%error%).',
  41. ))
  42. );
  43. }
  44. }
  45. }

Nieco w hardkorowy sposób dostawiam do javascript zmienną 'custom_translations' aby przetłumaczyć reCaptche.
Zwróć uwagę na odpowiednie powstawianie tam znaków maskujących cudzysłowia.

Tworze moduł z tylko jednym plikiem: actions.class.php
apps\portal\modules\sfGuardRegister\actions\actions.class.php
Który zawiera:
  1. class sfGuardRegisterActions extends sfActions
  2. {
  3. public function executeIndex(sfWebRequest $request)
  4. {
  5. if ($this->getUser()->isAuthenticated())
  6. {
  7. $this->getUser()->setFlash('notice', 'You are already registered and signed in!');
  8. $this->redirect('@homepage');
  9. }
  10.  
  11. $this->form = new sfGuardRegisterForm();
  12.  
  13. if ($request->isMethod('post'))
  14. {
  15. $captcha = array(
  16. 'recaptcha_challenge_field' => $request->getParameter('recaptcha_challenge_field'),
  17. 'recaptcha_response_field' => $request->getParameter('recaptcha_response_field'),
  18. );
  19. $this->form->bind(array_merge($request->getParameter($this->form->getName()), array('captcha' => $captcha)));
  20.  
  21. if ($this->form->isValid())
  22. {
  23. $this->form->offsetUnset('captcha');
  24. $user = $this->form->save();
  25. $this->getUser()->signIn($user);
  26.  
  27. $this->redirect('@homepage');
  28. }
  29. }
  30. }

Jest to skopiowany plik z :
plugins\sfDoctrineGuardPlugin\modules\sfGuardRegister\lib\BasesfGuardRegisterActions.class.php
- dopisałem do formularza 'captcha'.
(drobne wyjaśnienie tego myku jest w : plugins\sfFormExtraPlugin\lib\widget\sfWidgetFormReCaptcha.class.php)

Po wyczyszczeniu cache formularz od rejestracji powinien sprawdzać Captche.

U siebie miałem jeszcze ciekawie ostylowane formularze ale to już nie wpływa myślę na działanie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.