Temos pavadinimas: WordPress, Shopify ir PHPFusion programuotojų bendruomenė :: Captcha Beta 2 - Test for advanced users

Parašė ozzWANTED· 2008 Sau. 21 15:01:41
#1

Taigi, kaip ir buvau žadėjęs, bei dev staff komandai neprieštaravus, papostinu pagal mano idėjas papildytos Captcha sistemos 2.0 beta versiją entuziastams, mėgėjams ar testuotojams. Kokybė sucks, bet ši Captcha modifikacija yra kur kas saugesnė už buvusią - nuo šiol tekstas bus:
1.skirtingų fontų
2.skirtingo pasukimo kampo
3.perbrauktu foreground.
4.Skirtingų dydžių.

Kokybė:


Instaliacija(visiems naujokams geriau nė nekišti nagų):
Replace'inate esamą Php-Fusion v6 "/includes/captcha_include.php" failą su šiuo:
<?php
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright © 2002 - 2007 Nick Jones
| http://www.php-fusion.co.uk/
+--------------------------------------------------------+
| Filename: captcha_include.php
| CVS Version: 1.00
| Author: Nick Jones (Digitanium)
| Co-Author: Robert Gaudyn (Wooya) / Amra (sumotoy.net)
| Revision: Max Toball (Matonor)
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
if (isset($_GET['captcha_code']) && preg_match("/^[0-9A-Za-z]+$/", $_GET['captcha_code'])) {

   function rgb_rand($min=0,$max=255) {
      $color['r'] = rand($min,$max);
      $color['g'] = rand($min,$max);
      $color['b'] = rand($min,$max);
      return $color;
   }
   function rgb_grayscale($rgb) {
      $color['r'] = 0.299 * $rgb['r'] + 0.587 * $rgb['g'] + 0.114 * $rgb['b'];
      $color['g'] = 0.299 * $rgb['r'] + 0.587 * $rgb['g'] + 0.114 * $rgb['b'];
      $color['b'] = 0.299 * $rgb['r'] + 0.587 * $rgb['g'] + 0.114 * $rgb['b'];
      return $color;
   }
   function is_similar($color, $target){
      $grey = rgb_grayscale($color);
      foreach($target as $used_color){
         $used_grey = rgb_grayscale($used_color);
         if(abs($used_grey['r'] - $grey['r']) > 50) {
            return false;
         } else {
            continue;
         }
      }
      return true;
   }
   require_once "../config.php";

   mysql_connect($db_host, $db_user, $db_pass);
   mysql_select_db($db_name);

   $cresult = mysql_query("SELECT * FROM ".DB_PREFIX."captcha WHERE captcha_encode='".$_GET['captcha_code']."'");   if

(mysql_num_rows($cresult)) {
      $cdata = mysql_fetch_assoc($cresult);
      $im_wdth = 100;
      $im_hght = 40;
      $im = imagecreate($im_wdth,$im_hght);
      $used_colors = array();
      //background
      $bg = rgb_rand(90,165);
      imagefill($im, $im_wdth, $im_hght, imagecolorallocate($im, $bg['r'], $bg['g'], $bg['b']));
      //perturbation
      $lines = mt_rand(10,20);
      $dots = mt_rand(10,50);
      imagesetthickness($im, 6);
      for($i=0; $i<=$lines; $i++){
         $color = rgb_rand(90,165);
         $used_colors[] = $color;
         $color = imagecolorallocate($im, $color['r'], $color['g'], $color['b']);
         imageline($im, 0, rand(0, $im_hght), $im_wdth, rand(0, $im_hght), $color);
      }
      for($i=0; $i<=$dots; $i++){
         $color = rgb_rand(90,165);
         $used_colors[] = $color;
         $color = imagecolorallocate($im, $color['r'], $color['g'], $color['b']);
         imagefilledellipse($im, mt_rand(0, $im_wdth), mt_rand(0, $im_hght), 1, 1, $color);
      }

      //chars
      $chars = str_split($cdata['captcha_string']);
      $chars_left = count($chars);
      $char_space = $im_wdth/$chars_left;
      $char_pos = array(0, 0);
      $char_colors = array();
      if(function_exists("imagettftext")){
         $fonts = array();
         $font_dir = opendir("fonts");
         while (false !== ($file = readdir($font_dir))) {
            if(substr($file, -3) == "ttf"){
               $fonts[] = $file;
            }
         }
      }
      foreach($chars as $char){
         do{
            if(mt_rand(0,1))
               $color = rgb_rand(0,100);
            else
               $color = rgb_rand(155,255);
         }while(is_similar($color, $used_colors));

         $char_colors[] = $color;

         $x = $im_wdth - ($chars_left * $char_space) + mt_rand(0, $char_space * 0.5);
         $y = round($im_hght/2) + mt_rand(-round($im_hght/6), round($im_hght/6)) -10;
         $char_color = imagecolorallocate($im, $color['r'], $color['g'], $color['b']);
         if(!function_exists("imagettftext")){
            imagechar($im, 9, $x+1, $y+1, $char, $char_color+10);
            imagechar($im, 9, $x, $y, $char, $char_color);
         }else{
            $font = $fonts[array_rand($fonts)];
            $size = rand(10,14);
            imagettftext($im, $size, rand(-30,30), $x, $size+$y, $char_color, "fonts/".$font, $char);
         }
         $char_pos[0] = $x;
         $char_pos[1] = $y;
         $chars_left--;
      }

      //foreground perturbation
      imagesetthickness($im, 1);
      $i = 0;
      foreach($char_colors as $color){
         $i++;
         if($i%2 == 0){
            $color = imagecolorallocate($im, $color['r'], $color['g'], $color['b']);
            imageline($im, 0, rand(0, $im_hght), $im_wdth, rand(0, $im_hght), $color);
            imagefilledellipse($im, mt_rand(0, $im_wdth), mt_rand(0, $im_hght), 1, 1, $color);
         }
      }
      $out = imagecreate($im_wdth*1.5,$im_hght*1.5);
      imagecopyresampled($out, $im, 0, 0, 0, 0, $im_wdth*1.5, $im_hght*1.5, $im_wdth, $im_hght);
      header('Content-type: image/jpeg');
      imagejpeg($out);
      imagedestroy($im);
      imagedestroy($out);
   }
   exit;
}
?>




Bei parsisiunčiate "Fontus" ir patalpinate "fonts" direktoriją į "/includes/" Php-Fusion turinio valdymo sistemos direktoriją:
Siųstis Fontus
Siųstis naująjį "captcha include.php"

Peržiūrėti naująjį "captcha include.php"

Kam ši sistema skirta manau aiškinti nereikia.

Redagavo ozzWANTED· 2008 Sau. 22 19:01:19

Parašė Enzo· 2008 Sau. 21 15:01:10
#2

Neblogas dalykelis, reiks atsinaujint;)

Parašė sniuff· 2008 Sau. 21 15:01:16
#3

Ačiū, ozz. Jei greitai neperkas šitos tai bus šaunu.

Parašė MAnjack· 2008 Sau. 21 15:01:21
#4

Būtų geresnis šriftas, atsinaujinčiau, bet dabar :|

Parašė ozzWANTED· 2008 Sau. 21 15:01:59
#5

Tai vat kad sucks. Todėl aš ir įdiegiau šiame straipsnyje mano nuomone kur kas geresnę, ir sudėtingesnė sistemą, bei raidės geriau įskaitomos.

Parašė mckenzie· 2008 Sau. 21 15:01:34
#6

Kokybe tai tikrai sux ;D is kokio 4 karto jauciu suvesciau teisingai jei pasisektu ir raides butu aiskesnes akiai ;]

Parašė ex-it· 2008 Sau. 21 16:01:35
#7

Nu wa matot as cia naujokas ir dar visko nzn tai gal pasakysit ka mtas saugos kodas rekalingas nes as nepagaunu (zalias). NU zinau kad kazkokia apsauga bet nuo ko?

Parašė ozzWANTED· 2008 Sau. 21 16:01:49
#8

Skaityk pirmąją eilutę iškart po image'o. Atsakyma skliausteliuose.

Parašė ex-it· 2008 Sau. 21 16:01:11
#9

Nebijok, skaiciau. Bet ar tu man gali paaiskinti kam visa tai reikalinga!!!?

Redagavo ex-it· 2008 Sau. 21 16:01:26

Parašė Enzo· 2008 Sau. 21 16:01:32
#10

exitas parašė:
Nebijok, skaiciau. Bet ar tu man gali paaiskinti kam visa tai reikalinga!!!?


Registracijos apsaugos kodas, kad botai nesiregintu ir nemestu linku i porno saitus:)

Parašė WantedBoy· 2008 Sau. 21 16:01:13
#11

Chia kad botai nesiregistruotu su savo skriptais. Pakeicia tavo register.php failo patvirtinimo koda.

Parašė ex-it· 2008 Sau. 21 16:01:50
#12

AH, supratau :) ;)

Parašė MAnjack· 2008 Sau. 21 16:01:46
#13

Vienas atsako, o paskui dar kitas :D

Parašė WantedBoy· 2008 Sau. 21 16:01:58
#14

Tai kai rašiau postą, nemačiau ankstesnio posto, nes jis buvo neparašytas.

Parašė Toonis· 2008 Sau. 22 17:01:04
#15

Nu jau su kokybė galėjo labiau pasistenkti, nes... :|
P.S. testutojams

Parašė Qrmiz· 2008 Sau. 22 20:01:01
#16

Aišku ozz nedės to gerojo ir gražiojo captcha, nes kaip visuomet nori užsidirbti iš jo... gaila :|

Parašė ozzWANTED· 2008 Sau. 22 20:01:45
#17

Nu dabar dar mane apkaltins už tai kad šio saito naujiems nariams padariau gerovę gauti kur kas padoresnę registraciją į šį saitą, vietoje tos beta bjaurasties naudojimo. O šiaip... Atsakymas visada prieš akis, tereikia pasukti galvą. Beje kai kurie saitai(pvz. egold.com - naudoja gif judančio paveikslėlio vertifikaciją), o kai kurie negana to dar ir patvirtinimą balsu yra padarę. Beje, net ir tą blogą stock php-fusion kodą galima apsaugoti - tiesiog reikia pridėti į char'ų dalį LT simbolius - ir visi švepliai botai iš užsienio su tomis savo viagromis liks it musę kandę.