Désolé de le dire, mais ce module, alors qu'il fonctionne très bien, est presque entièrement sans papier, et il est la mise en page est un peu déroutant pour les d'entre nous qui préfèrent utiliser ">> help (modulename)" après l'installation. Je vais donner un exemple en utilisant cherrypy, et faire quelques commentaires liés à cgi après.
captcha.py contient deux fonctions et une classe:
display_html: qui retourne le familier « boîte reCaptcha »
soumettre: qui soumet les valeurs saisies par l'utilisateur dans l'arrière-plan
RecapchaResponse: qui est une classe de conteneur qui contient la réponse de reCaptcha
Vous devez d'abord importer le chemin d'accès complet vers capcha.py, puis créer quelques fonctions gérant l'affichage et le traitement de la réponse.
from recaptcha.client import captcha
class Main(object):
@cherrypy.expose
def display_recaptcha(self, *args, **kwargs):
public = "public_key_string_you_got_from_recaptcha"
captcha_html = captcha.displayhtml(
public,
use_ssl=False,
error="Something broke!")
# You'll probably want to add error message handling here if you
# have been redirected from a failed attempt
return """
<form action="validate">
%s
<input type=submit value="Submit Captcha Text" \>
</form>
"""%captcha_html
# send the recaptcha fields for validation
@cherrypy.expose
def validate(self, *args, **kwargs):
# these should be here, in the real world, you'd display a nice error
# then redirect the user to something useful
if not "recaptcha_challenge_field" in kwargs:
return "no recaptcha_challenge_field"
if not "recaptcha_response_field" in kwargs:
return "no recaptcha_response_field"
recaptcha_challenge_field = kwargs["recaptcha_challenge_field"]
recaptcha_response_field = kwargs["recaptcha_response_field"]
# response is just the RecaptchaResponse container class. You'll need
# to check is_valid and error_code
response = captcha.submit(
recaptcha_challenge_field,
recaptcha_response_field,
"private_key_string_you_got_from_recaptcha",
cherrypy.request.headers["Remote-Addr"],)
if response.is_valid:
#redirect to where ever we want to go on success
raise cherrypy.HTTPRedirect("success_page")
if response.error_code:
# this tacks on the error to the redirect, so you can let the
# user knowwhy their submission failed (not handled above,
# but you are smart :-))
raise cherrypy.HTTPRedirect(
"display_recaptcha?error=%s"%response.error_code)
Ce sera à peu près le même en cas d'utilisation cgi, il suffit d'utiliser la variable d'environnement REMOTE_ADDR où je request.headers de cherrypy et de l'utilisation de stockage terrain pour faire vos chèques.
Il n'y a pas de magie, le module se contente de suivre les docs: https://developers.google.com/recaptcha/docs/display
erreurs de validation que vous pourriez avoir besoin pour gérer: https://developers.google.com/recaptcha/docs/verify
Salut abbé, Je suis nouveau à Python, pouvez-vous expliquer comment utiliser le paquet téléchargé en plus de détails? –
Vous devez l'installer en tant que paquet python standard. Je vous recommande de lire un cours d'introduction sur python si vous êtes nouveau à toutes ces choses. Vous pouvez essayer http://diveintopython.org/toc/index.html ou http://docs.python.org/tutorial/index.html comme un bon point de départ. – abbot