Simple Captchta
- Szczegóły
- Kategoria: Class
- Opublikowano: piątek, 03, styczeń 2014 13:31
- Super User
- Odsłony: 55132
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.=''; echo $html; }