Captcha script

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Mir

Mir

05/10/2008 14:41:00
Quote Anchor link
Hai,
Ik ben nog een beetje een loser in php, maar zit met het grote probleem dat de reacties op mijn website compleet volgespamt worden. Heel irri want mn site word super langzaam.. Nu heb ik een aantal van die scripts geprobeerd, maar ik krijg t niet aan de praat. Zou iemand me kunnen helpen met het includen van een captcha op mijn eigen website?

Alvast heel erg bedankt!

(voorbeeld pagina http://www.noukster.com/dynamic/index.php?viewstate=newsitem&newsitem_id=236 )
 
PHP hulp

PHP hulp

27/11/2024 20:20:11
 
--

--

05/10/2008 14:45:00
Quote Anchor link
Wat lukt er dan niet?
 
Steven Hack

Steven Hack

05/10/2008 14:52:00
Quote Anchor link
Zo te zien zijn het geen bots,

en captcha werkt wss alleen tegen bots, het zal mensen gewoon hooguit een beetje langzamer laten spammen.

Dus je kunt het best een maximaal aantal posts per minuut/uur/dag laten doen, of gewoon ip's gaan blokkeren.
 
Mir

Mir

05/10/2008 19:41:00
Quote Anchor link
Geen bots?
Het zijn 100derden berichten per dag..
Met max aantal berichten los ik t niet op, word het hooguit wat minder.

Wat er niet lukt? Ik krijg geen enkele captcha goed werkend, of een kruisje, of helemaal niks, of overal errors :p

T moet natuurlijk op pas gaan checken als mensen de reactie versturen.
 
--

--

05/10/2008 19:43:00
Quote Anchor link
Probeer Akismet eens.
 

05/10/2008 19:49:00
Quote Anchor link
aapjuh schreef op 05.10.2008 14:52:
Zo te zien zijn het geen bots

En waaraan kan jij dat zien?
 
Wouter De Schuyter

Wouter De Schuyter

05/10/2008 20:02:00
Quote Anchor link
Deze captcha werkt uitstekend

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?php

$aant
       = "4";//this varable can be 2-40
$height     = "22";
$SQUARE     = "0";//this varable can be 1 = ON, 0 = OFF
$possible   = 'ABCDEFGHIJKLMNPQRSTUVWXYZ123456';//Characters used in code
$Background = "WHITE"; // this varible can be AUTO, WHITE, RED, GREEN, BLUE
$LINES      = "1";//Draw lines?  this varable can be 1 = ON, 0 = OFF
$LINES_OVER = "0";//Draw lines Over text? this varable can be 1 = ON, 0 = OFF

//Start de sessie

session_start();

  function
generateCode($characters,$possible) {
      
      $code = '';
      $i = 0;
      while ($i < $characters) {
         $code[] = substr($possible, mt_rand(0, strlen($possible)-1), 1);
         $codestr.=substr($possible, mt_rand(0, strlen($possible)-1), 1);
         $i++;
      }

      return $code;
   }


// Maak 't plaatje
$width= $aant * 25;
$im = imagecreate($width, $height);

//Achtergrond kleur
$Background = strtoupper ($Background);
if ($Background=="AUTO"){
$bg = imagecolorallocate($im, rand(190,255), rand(190,255), rand(190,255));
}
elseif($Background=="WHITE"){
$bg = imagecolorallocate($im, 254, 254, 254);
}
elseif($Background=="RED"){
$bg = imagecolorallocate($im, 255 , 0, 0);
}
elseif($Background=="GREEN"){
$bg = imagecolorallocate($im, 0, 255, 0);
}
elseif($Background=="BLUE"){
$bg = imagecolorallocate($im, 0, 0, 255);
}
else{
$bg = imagecolorallocate($im, 255, 255, 255);
}


// Genereer de code
$code= generateCode($aant,$possible);

if($LINES=="1" ){
// Teken variabele lijnen
$i=0;
while( $i<($width*$height)/150) {
    $noise_color = imagecolorallocate($im, 230, 230, 230);
    imageline($im, rand(0,$width), rand(0,$height), rand(0,$width), rand(0,$height), $noise_color);
          $i++;
}
}


if($SQUARE=="1" ){
// Teken een vierkand van 2 punten
$vierkand = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255));
imageline($im, 0, 0, $width, 0, $vierkand);
imageline($im, 0, 1, $width, 1, $vierkand);
imageline($im, $width-1, 0, $width-1, $height, $vierkand);
imageline($im, $width-2, 0, $width-2, $height, $vierkand);
imageline($im, $width-1, $height-1, 0, $height-1, $vierkand);
imageline($im, $width-1, $height-2, 0, $height-2, $vierkand);
imageline($im, 0, $height, 0, 0, $vierkand);
imageline($im, 1, $height, 1, 0, $vierkand);
}


$widthpercar= 25;
//zorg er voor dat de text niet over elkaar gaat staan
$i = 0;
      while ($i < $aant) {
          $min=($widthpercar*$i) - 1;
          $max=$widthpercar*$i;
          $textcolor = imagecolorallocate($im, 65, 175, 210);
if ($i == 0){
imagestring($im, 28, rand(0,$widthpercar), rand(0,$height-14), $code[$i], $textcolor);
}
elseif ($i==$aant){
imagestring($im, 28, rand($min+8,$max), rand(0,$height-14), $code[$i], $textcolor);
}
else{
imagestring($im, 28, rand($min+8,$max), rand(0,$height-14), $code[$i], $textcolor);
}

$codestr = $codestr . $code[$i];
$i++;
}



if($LINES_OVER=="1" ){
// teken voor de zekerheid nog ff 2 lijnen OVER de text
$i=0;
while( $i<2) {
     $noise_color = imagecolorallocate($im, rand(230,255), rand(230,255), rand(230,255));
         imageline($im, rand(0,$width), rand(0,$height), rand(0,$width), rand(0,$height), $noise_color);
          $i++;
}
}


$_SESSION['security_code'] = md5($codestr);
// Print het plaatje
header("Content-type: image/png");
imagepng($im);
imagedestroy($im);

?>



edit: je kan deze hier in de scripts library van phphulp vinden, ik heb het wat verneukt omdat het anders niet bij mn design paste (het werkt wel hoor maar heb tekstkleur in blauw gdn ipv verschillende kleure)

zo ziet ie er uit http://beta.paradox-productions.net/inc/captcha.inc.php
Gewijzigd op 01/01/1970 01:00:00 door Wouter De Schuyter
 
Mir

Mir

05/10/2008 20:32:00
Quote Anchor link
Oke dus ik maak van die code een pagina (captcha.php)
En dan?
Kan ik dat gewoon includen in mijn eigen pagina?
 
Mir

Mir

05/10/2008 20:35:00
Quote Anchor link
Dit is het stuk code dat zorgt voor de reacties.
Hoe fiets ik m er goed in dan?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php en ?>
<?    
            f_header("");
        
        ?>

            <div class=newstitle>
                Voeg je reactie toe
            </div>
            <div class=newsbody>
            
            <table style="width:100%" cellpadding=0 cellspacing=0>
                
        <?
                    f_textbox($my_result, "Jouw naam","name","200px","/\b[A-Z0-9_-]+\b/i",true);
                    f_textbox($my_result, "Emailadres","email","200px","/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/i",true);
                    f_textarea($my_result, "Bericht","html","350px","80px","/\b[A-Z0-9_-]+\b/i",true);    
        ?>
    
            </table>
        <?
            f_footer();
        ?>

            </div>
        <?
            // if postback and no errors on form then we can save the values
            if (ispostback()) {
                if (!f_errors()) {
                    $my_mode = 'new';
                    $my_table = 'SITE_NEWS_REACTIONS';
                    $site_debug = false;
                    switch ($my_mode) {
                    case
"edit":
                        $my_update_sql = "update ".$my_table." set ";
                        $my_update_sql .= "question='".mysql_real_escape_string(f_value($my_result, "question"))."'".", ";
                        $my_update_sql .= "answer='".mysql_real_escape_string(f_value($my_result, "thisisaneditor_answer"))."'".", ";
                        $my_update_sql .= "order_=".mysql_real_escape_string(f_value($my_result, "order_")).", ";
                        $my_update_sql .= "locked=".mysql_real_escape_string(f_value_checkbox(f_value($my_result, "locked")))."";
                        $my_update_sql .= " where id=".$my_id;
                        if ($site_debug) print "my_update_sql = ".$my_update_sql;
                        if (!$site_debug) {
                            db_query ($my_db, $my_update_sql);
                            header ("location: faqs.php?mode=edit&id=".$my_site_faqs_id);
                        }

                        exit;
                        break;
                    case
"new":
                        //$site_debug = true;
                        $my_insert_sql = "insert into ".$my_table." (";
                        $my_insert_sql .= "name,email,site_news_id,html";
                        $my_insert_sql .= ") values (";
                        $my_insert_sql .= "'".mysql_real_escape_string(f_value($my_result, "name"))."'".", ";
                        $my_insert_sql .= "'".mysql_real_escape_string(f_value($my_result, "email"))."'".", ";
                        $my_insert_sql .= "".$my_newsitem_id."".", ";
                        $my_insert_sql .= "'".mysql_real_escape_string(f_value($my_result, "html"))."'"."";
                        $my_insert_sql .= ")";
                        if ($site_debug) print "my_insert_sql = ".$my_insert_sql;
                        if (!$site_debug) {
                            db_query ($my_db, $my_insert_sql);
                            header ("location: index.php?viewstate=newsitem&newsitem_id=".$my_newsitem_id);
                        }

                        exit;
                        break;
                    }
                }
else {
                    print $error_fields;
                }
            }

            
            ?>

            </div>
<?php en ?>
Gewijzigd op 01/01/1970 01:00:00 door Mir
 
- SanThe -

- SanThe -

05/10/2008 20:40:00
Quote Anchor link
Pas je post even aan en gebruik en tags om je code heen. Om php code zet je uiteraard dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php en ?>
Gebruik je Afbeelding knop om dit te doen.

En Niet Bumpen::
Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de Afbeelding knop om je tekst aan te passen.



SanThe.
 
Wouter De Schuyter

Wouter De Schuyter

05/10/2008 21:53:00
Quote Anchor link
normaal gezien gewoon zo

<img src="captcha.php" alt="Captcha code" />

en dan controleer je gewoon de sessie $_SESSION['security_code'] met je post gegevens zo iets md5($_POST['captcha'])

en ja het moet in de md5 functie aangezien ik op lijn 101 de secuirty code ook in een md5() steek.
 
--

--

05/10/2008 22:25:00
Quote Anchor link
Da's handig voor de bots, om ze alvast te vertellen in welk plaatje de captcha zit! Geen alt opgeven dus.
 
Mir

Mir

05/10/2008 22:33:00
Quote Anchor link
Kan iemand m op de juiste manier in t script zetten?
Waarschijnlijk gaat t daar namelijk steeds mis met wat ik doe :p
Ik zou er heel blij mee zijn :)
 
Wouter De Schuyter

Wouter De Schuyter

05/10/2008 22:40:00
Quote Anchor link
Evert schreef op 05.10.2008 22:25:
Da's handig voor de bots, om ze alvast te vertellen in welk plaatje de captcha zit! Geen alt opgeven dus.
dan is de pagina niet valid, doe dan gewoon <img src="lol.php" alt="lol" /> ofzo..


@mir;

ja dat kan maar waar is je controle structuur van je formulier?
Gewijzigd op 01/01/1970 01:00:00 door Wouter De Schuyter
 
Mir

Mir

05/10/2008 22:44:00
Quote Anchor link
Nou, dit is het hele script functions, en ik denk dat ie hierin zit?

Quote:
Alléén relevante code plaatsen. Niet een compleet script van bijna 800 regels. Sorry, maar het script is verwijderd.

SanThe.
Gewijzigd op 01/01/1970 01:00:00 door Mir
 
Ki ma

ki ma

05/10/2008 23:32:00
Quote Anchor link
*zucht*
 
Wouter De Schuyter

Wouter De Schuyter

06/10/2008 00:30:00
Quote Anchor link
Waarom verwijderd?
Ging wel gevonden hebben waar ik moest aanpassen hoor, SanThe xP
 
- SanThe -

- SanThe -

06/10/2008 00:38:00
Quote Anchor link
Paradox™ schreef op 06.10.2008 00:30:
Waarom verwijderd?
Ging wel gevonden hebben waar ik moest aanpassen hoor, SanThe xP


Uit de regels:

Quote:
Plaats geen hele scripts, maar snippets ter ondersteuning van je vraag. Ga er niet van uit dat leden scripts van meer dan 30 regels gaan lezen.


Ik weet dat dit niet altijd de oplossing geeft, maar dit waren bijna 800 regels en dat is echt heel erg veel om te posten. Ik doe mijn best om tolerant te zijn. Maar ik hoop dat je mij ook een beetje begrijpt.

SanThe.

Misschien dat de TS jou het complete script kan/mag toesturen? Uiteraard zie ik het probleem ook graag opgelost.
 
Mir

Mir

06/10/2008 11:07:00
Quote Anchor link
Paradox, zou je me per mail of pm willen helpen dan?
 
Mir

Mir

08/10/2008 10:19:00
Quote Anchor link
Iemand anders misschien?
Tis echt een groot probleem, en straks ligt mn site een beetje om zeep.. :(
 
/home/joost

/home/joost

08/10/2008 10:45:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
session_start();
header("content-type: image/png");
$image = ImageCreate(120, 30); //Plaatje aanmaken met X=75 en Y=50

//We maken een achtergrondkleur
//$achtergrond = ImageColorAllocate($image, 255, 255, 255); //255, 255, 255 = Wit

$achtergrond = ImageColorAllocate($image, 0, 0, 0); //255, 255, 255 = Zwart
//De grootte van ons lettertype

$grootte = 14;
//Tekst die we op ons plaatje willen.
$eerste=rand(1,15);
$tweede=rand(1,15);
$tekst=$eerste. ' + '.$tweede. ' =: ';
$antwoord=$eerste + $tweede;
$_SESSION["string"] = $antwoord;



//Tekstkleur
$kleur = ImageColorAllocate($image, 255, 0, 0); //255, 0, 0 = Rood
//De functie ImageString word onder het voorbeeld uitgelegd !

ImageString($image, $grootte, 4, 7, $tekst, $kleur);
//Het plaatje aanmaken.
ImagePng($image);
//Het plaatje verwijderen uit het geheugen
ImageDestroy($image);
?>


Het gaat hie rom het uitreken van een som (nooit eerder gezien, zelf bedacht :D)

voorbeeld:

http://www.corinja.com/index.php?page=gastenboek

mvg Joost.


Edit:

Ik dacht dat ik 'm met md5 had gecodeerd :P kan je zelf ntrlijk ook doen : SESSION["string"] = md5($antwoord);
Gewijzigd op 01/01/1970 01:00:00 door /home/joost
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.