Simple Captchta

Simple Captchta

 

Przy tworzeniu nowego projektu postanowiłem ułatwić sobie pracę przy zabezpieczeniu formularza captchtą.

Zrobiłem klasę obsługującą popularną captchte, która znajduje się pod adresem http://www.captcha.net/.

Przeprowadzamy rejestracje i pobieramy odpowiednie kody potrzebne do prawidłowego działania.

Importujemy pobraną bibliotekę do klasy

Klasa ułatwia wdrożenie owej captchty plus dodatkowe zabezpieczenie dla wścibskich.

Prościutkie wdrożenie dla wielu formularzy jak i jednego.

Efekt mojej pracy chciałem wam przedstawić.




class_simple_captcha.php

  /*
 *  @version class_simple_captchta v1.0
 *  @autor Adam Berger$ 
 *  Copyright 2014 Simple Captchta
 *  <ber34#o2.pl-->
 *  Licensed under the Apache License v2.0
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License. 
 */
 
 require_once('recaptchalib.php');  // biblioteka recaptchalib
 
class class_simple_captcha{
 
   const PUBLIC_KEY  ="6L"; // klucz otrzymany podczas rejestracji
   const PRIVATE_KEY ="6L-z"; // klucz otrzymany podczas rejestracji
 
   private $post;
   private $post1;
   private $ip;
 
    public function __construct(){ 
 
      }
        // show
    public function wyswietl_captcha_public(){
 
          return recaptcha_get_html(self::PUBLIC_KEY); 
    }
 
    protected function ip(){
                   if(@$_SERVER['HTTP_X_FORWARDED_FOR']){ 
                         $this->ip = htmlspecialchars($_SERVER["REMOTE_ADDR"]); 
               }else{
                         $this->ip  = htmlspecialchars($_SERVER['REMOTE_ADDR']);
                    }
                    return $this->ip;
       }
 
    protected function validate_post($post){
                       /* czyścimy $_POST[] */
              $this->post = $post;
                          $this->post = trim($this->post);
                          $this->post = strip_tags($this->post);
                          $this->post = htmlspecialchars($this->post, ENT_QUOTES, 'UTF-8');
                          $this->post = htmlentities($this->post, ENT_QUOTES, 'UTF-8');
                          $this->post = stripslashes($this->post); 
            if(preg_match('/^[a-zA-Z0-9\@\_\-\.\ \/]+$/', $this->post, $this->post1) ){
                         return $this->post1['0'];
                        }else{
                         return null;   
                        }
            }
            // show
   public function wyswietl_captcha_private(){
 
       $r = recaptcha_check_answer(self::PRIVATE_KEY,
          $this->ip(),
          $this->validate_post($_POST["recaptcha_challenge_field"]),
          $this->validate_post($_POST["recaptcha_response_field"]));
 
  if (empty($r->is_valid)) {
     return false;
  } else {
    return true; 
  }
 }
}
 




index.php
formularz

/* Pobranie odpowiednich bibliotek */
 
include_once (dirname(__FILE__) . '/'.basename('class_captcha.php')); // Klasa Simple Captchta
                /* Implementacja klasy */
     $captcha = new class_simple_captcha();
 
 
if(!empty($_POST['user_kontakt'])){
        if($captcha->wyswietl_captcha_private()){  /// 
                  /* Sukcesfuul */
               echo "Wiadomość wysłana.";
        }else{
                  /* error */      
               echo "Podaj prawidłowy kod capchta.";
             }
}else{    
    $html='';
    $html.='';
    $html.='
'; $html.='
'; $html.='Kontakt:'; $html.='
'; $html.=''; $html.='
'; $html.=''; $html.='
'; $html.='
'; $html.=''; $html.='
'; $html.=''; $html.='
'; $html.='
'; $html.=''; $html.='
'; $html.='
'; $html.='
'; $html.=''; $html.='
'; $html.='
'; $html.='
'; $html.=''; echo $html; }

Używamy cookies i podobnych technologii m.in. w celach: świadczenia usług, reklamy, statystyk. Korzystanie z witryny bez zmiany ustawień Twojej przeglądarki oznacza, że będą one umieszczane w Twoim urządzeniu końcowym. Pamiętaj, że zawsze możesz zmienić te ustawienia. To find out more about the cookies we use and how to delete them, see our privacy policy.

I accept cookies from this site.

EU Cookie Directive Module Information