• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z funkcja validującą recaptcha od googla i obsłużeniem JSON'a w FLASK APP

HackNation - ogólnopolski hackathon
0 głosów
406 wizyt
pytanie zadane 12 października 2016 w Python przez Atomowy Nowicjusz (120 p.)

Pytanie odnośnie recaptcha / flask ( chciałem napisać własną funkcje validującą) 

Mam problem ze znalezieniem błędu w skrypcie jaki napisałem, całość działa tak że użytkownik uzupełnia formularz na stronie internetowej i przechodzi proces sprawdzenia rechaptcha. 

<form name="add_run" method="POST" >
                <input type="text" name="run_name" placeholder="Nazwa biegu"/><br/>
                [...]
                <input type="text" name="description" placeholder="Opis biegu"><br/><br>
                <div class="g-recaptcha" data-sitekey="SITE_KEY"></div>
                <button type="submit"> Dodaj bieg </button>

Dane z formularza są POSTowane do aplikacji (flask/python). 

@app.route('/add_run', methods=['GET', 'POST'])
[...]

    if request.method == "POST":
        # miejsce na mapowanie wartości
        run_name = request.form['run_name']
     [...]
        description = request.form['description']
        grecaptcharesponse = request.form['g-recaptcha-response']
        if verify_grecaptcha(grecaptcharesponse) == True: #coś się tutaj psuje - IF 

          # WPISANIE DANYCH DO BAZY DANYCH i przekierowanie na strone udalo sie
        else:
            # Przekierowanie na strone nie udało sie
    else: # obsłużenie Get'a [..]

    
Problem pojawia się w funkcji verify_grecaptcha która nie zwraca mi true w momencie kiedy dostanie od googla JSON'a który wygląda np tak :

 

jsonobj = {
        "success": "true",
       "challenge_ts": "2016-10-11T11:50:43Z",
       "hostname": "127.0.0.1"
   }
   
 FUNKCJA VALIDUJĄCA : 
 
 def verify_grecaptcha(response):

   secret_key = "SEKRET_KEY"
   response = "response"
   url = "https://www.google.com/recaptcha/api/siteverify" + '?secret=' + secret_key + '&response=' + response
   jsonobj = json.loads(urlopen(url).read().decode('utf-8'))
   if jsonobj["success"] == 'true' :
       return True
   else:
       return False

       
Wiem że połączenie z serwerem googla następuje i dostaje prawidłowe odpowiedzi - mam problem prawdopodobnie w rozpakowaniu json'a lub warunku i nie potrafię stwierdzić dlaczego.

W efekcie za każdym razem ląduje na stronie - nie udało się dodać biegu - nawet jeśli wszystko było po stronie formularza na WWW. 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 896 wizyt
0 głosów
2 odpowiedzi 899 wizyt
pytanie zadane 5 czerwca 2022 w PHP przez TlenekWodoru Użytkownik (520 p.)
0 głosów
1 odpowiedź 439 wizyt
pytanie zadane 18 sierpnia 2022 w Python przez Podlasianin Początkujący (400 p.)

93,627 zapytań

142,551 odpowiedzi

323,050 komentarzy

63,132 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 1694p. - dia-Chann
  2. 1676p. - DziarnowskiJ
  3. 1650p. - Łukasz Piwowar
  4. 1640p. - CC PL
  5. 1616p. - Maurycy W
  6. 1607p. - raydeal
  7. 1602p. - Adrian Wieprzkowicz
  8. 1588p. - Tomasz Bielak
  9. 1521p. - Michal Drewniak
  10. 1491p. - Rafał Trójniak
  11. 1471p. - rafalszastok
  12. 1444p. - robwarsz
  13. 1257p. - ssynowiec
  14. 1208p. - Mariusz Fornal
  15. 1116p. - rucin93
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...