דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. התקנת recaptcha בphp

התקנת recaptcha בphp

מתוזמן נעוץ נעול הועבר תכנות
16 פוסטים 4 כותבים 664 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • chagoldC מנותק
    chagoldC מנותק
    chagold
    כתב ב נערך לאחרונה על ידי chagold
    #6

    @dovid איך שהבנתיך, אני אמור לפנות ל-https://www.google.com/recaptcha/api/siteverify מהצד שרת עם ערכים מהקליינט (שנוספו אליו ע"י הrecaptcha).
    בדקתי בצד השרת עם var_dump($_POST) אבל לא נוסף כל משתנה מעבר למה שמוגדר בטופס (למרות שדף הקליינט חתום ע"י הספריה של גוגל שהיא מוגנת)
    image.png

    dovidD תגובה 1 תגובה אחרונה
    0
    • dovidD מחובר
      dovidD מחובר
      dovid ניהול
      השיב לchagold ב נערך לאחרונה על ידי
      #7

      @chagold כתב בהתקנת recaptcha בphp:

      בדקתי בצד השרת עם var_dump($_POST) אבל לא נוסף כל משתנה מעבר למה שמוגדר בטופס (למרות שדף הקליינט חתום ע"י הספריה של גוגל שהיא מוגנת)

      @dovid כתב בהתקנת recaptcha בphp:

      בעת לחיצה על submit של טופס (בדרך כלל) אז לפני השליחה של הפרמטרים שלך (למשל מיל משתמש והודעה) הספריה של גוגל מבצעת תקשורת עם שרתי גוגל בקשר לאומדן האמינות של הפעילות, והיא מהם קוד זיהוי לצורך זיהוי עתידי של הפעולה שנבחנה.

      זה לא קורה לבד.
      אתה צריך ליזום את זה בJS, או להשתמש בattributes בלחצן Submit.
      למשל

      <form method="POST" action="sendMessage.php">
          <input type="text">
         <button class="g-recaptcha" 
              data-sitekey="reCAPTCHA_site_key" 
              data-callback='onSubmit' 
              data-action='submit'>שלח!</button>
      </form>
      

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      תגובה 1 תגובה אחרונה
      2
      • chagoldC מנותק
        chagoldC מנותק
        chagold
        כתב ב נערך לאחרונה על ידי chagold
        #8

        2 דברים שאני מסתבך.

        1. יש 2 מקומות שונים באתר של recaptcha שניתן לקבל מפתחות.
          א. בפאנל הראשי של recaptcha (משם הצילום מסך דלעיל), ושם יש מפתח אחד שמשמש גם עבור צד הקליינט (מול השרת) וגם עבור צד השרת (מול recaptcha).

          ב. בכתובת זו יש 2 מפתחות שונים, אחד לאתר והשני בין הצד שרת לrecaptcha.

          מה עלי להכניס?

        2. כל אחת מהמפתחות שאני שותל לקוד, הקריאה (מהצד שרת) לrecaptcha מחזירה

        {"success":false,"error-codes":["missing-input-secret"]}
        

        הקוד בצד שרת הוא

        
                $recaptcha_secret = "6LfnWHQpAAAAADKdo8pJsd3BBDXayhALFfbLqv0P";
                //$recaptcha_response = $_POST['g-recaptcha-response'];
                $recaptcha_response =$token ;
                $url = 'https://www.google.com/recaptcha/api/siteverify';
                $data = array(
                    'secret' => $recaptcha_secret,
                    'response' => $recaptcha_response
                    
                );
        
                $options = array(
                    'http' => array (
                        'header' => "Content-type: application/json",
                        'method' => 'POST',
                        'content' => http_build_query($data)
                    )
                );
        
                $context = stream_context_create($options);
                $verify = file_get_contents($url, false, $context);
                $captcha_success = json_decode($verify);
        
                echo json_encode($captcha_success);die;
        
        צדיק תמיםצ תגובה 1 תגובה אחרונה
        0
        • צדיק תמיםצ מנותק
          צדיק תמיםצ מנותק
          צדיק תמים
          השיב לchagold ב נערך לאחרונה על ידי צדיק תמים
          #9

          @chagold לא הבנתי מה זה הפאנל הראשי, אבל אתה צריך להשתמש במפתחות שבניהול (ב')
          לגבי השגיאת missing-input-secret, אני לא מכיר PHP אבל נראה שצריך לשלוח בapplication/x-www-form-urlencoded ולא בJSON
          יש לך דוגמה כאן: https://gist.github.com/jonathanstark/dfb30bdfb522318fc819

          Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
          טיפים

          תגובה 1 תגובה אחרונה
          1
          • dovidD מחובר
            dovidD מחובר
            dovid ניהול
            כתב ב נערך לאחרונה על ידי dovid
            #10

            @chagold אתה שולח עם http_build_query, אבל הצהרת סוג application/json.
            תשנה לapplication/x-www-form-urlencoded או שבמקום http_build_query תשמש עם מתודה שתעצב את $data לJSON.

            מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

            בכל נושא אפשר ליצור קשר dovid@tchumim.com

            צדיק תמיםצ תגובה 1 תגובה אחרונה
            2
            • צדיק תמיםצ מנותק
              צדיק תמיםצ מנותק
              צדיק תמים
              השיב לdovid ב נערך לאחרונה על ידי
              #11

              @dovid כתב בהתקנת recaptcha בphp:

              או שבמקום http_build_query תשמש עם מתודה שתעצב את $data לJSON

              הAPI הזה של גוגל לא מקבל JSON

              Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
              טיפים

              chagoldC תגובה 1 תגובה אחרונה
              2
              • chagoldC מנותק
                chagoldC מנותק
                chagold
                השיב לצדיק תמים ב נערך לאחרונה על ידי
                #12

                @צדיק-תמים
                מאידך

                'header' => "application/x-www-form-urlencoded",
                

                מחזיר שגיאה

                Notice: file_get_contents(): Content-type not specified assuming application/x-www-form-urlencoded in /path/to/file.php on line 40
                

                (הפתרון כאן,לא עזר).

                צדיק תמיםצ תגובה 1 תגובה אחרונה
                0
                • צדיק תמיםצ מנותק
                  צדיק תמיםצ מנותק
                  צדיק תמים
                  השיב לchagold ב נערך לאחרונה על ידי
                  #13

                  @chagold צריך לכתוב ככה, לא?

                  'header'  => 'Content-type: application/x-www-form-urlencoded'
                  

                  Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                  טיפים

                  chagoldC תגובה 1 תגובה אחרונה
                  2
                  • chagoldC מנותק
                    chagoldC מנותק
                    chagold
                    השיב לצדיק תמים ב נערך לאחרונה על ידי
                    #14

                    @צדיק-תמים כתב בהתקנת recaptcha בphp:

                    @chagold צריך לכתוב ככה, לא?

                    'header'  => 'Content-type: application/x-www-form-urlencoded'
                    

                    אכן. עשיתי והשגיאה הקודמת חזרה

                    {"success":false,"error-codes":["invalid-input-secret"]}
                    
                    צדיק תמיםצ תגובה 1 תגובה אחרונה
                    0
                    • צדיק תמיםצ מנותק
                      צדיק תמיםצ מנותק
                      צדיק תמים
                      השיב לchagold ב נערך לאחרונה על ידי
                      #15

                      @chagold קודם זה היה missing-input-secret
                      עכשיו זה invalid-input-secret
                      תוודא שאתה שולח את הkey הנכון של צד השרת (מכאן)

                      Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                      טיפים

                      תגובה 1 תגובה אחרונה
                      1
                      • chagoldC מנותק
                        chagoldC מנותק
                        chagold
                        כתב ב נערך לאחרונה על ידי chagold
                        #16

                        @צדיק-תמים הצליח. תודה רבה!

                        תגובה 1 תגובה אחרונה
                        2

                        בא תתחבר לדף היומי!
                        • התחברות

                        • אין לך חשבון עדיין? הרשמה

                        • התחברו או הירשמו כדי לחפש.
                        • פוסט ראשון
                          פוסט אחרון
                        0
                        • דף הבית
                        • קטגוריות
                        • פוסטים אחרונים
                        • משתמשים
                        • חיפוש
                        • חוקי הפורום