Avatar billede juq Nybegynder
19. september 2008 - 13:47 Der er 4 kommentarer

captcha,, hjælp til kildekoderne

Jeg bruge en blog som har en captchafunktion, men de 4 tal som skal skrive fra gang til gang/skifter fra gang til gang, står i kildekode, så bloggen bliver spammet rigtigt meget.

Har forsøgt at ændre på det bla. efter Exp. artikel samt gentagende søgninger på google, men det går bare i fisk hele tiden.

Er der en som kunne være så rar at give mig nogle fif om hvad jeg skal gøre.

Enten via et billede som ligger under kode eller måske bare via f.eks. hvad er: 4+2+3 så man skal skrive 9

Er faktisk lidt desperat, har kæmpet med det rigtig længe.

/JUQ

***
Kildekode til addcomment.php

<script language="javaScript">
<!--

var message="No copy/paste on this page!";

///////////////////////////////////
function clickIE4(){
if (event.button==2){
alert(message);
return false;
}
}

function clickNS4(e){
if (document.layers||document.getElementById&&!document.all){
if (e.which==2||e.which==3){
alert(message);
return false;
}
}
}

if (document.layers){
document.captureEvents(Event.MOUSEDOWN);
document.onmousedown=clickNS4;
}
else if (document.all&&!document.getElementById){
document.onmousedown=clickIE4;
}

document.oncontextmenu=new Function("alert(message);return false")

// -->
</script>


<?
function GenVerif () {
  srand(time());
  $i=($QUERY_STRING)?($QUERY_STRING):"4";
  while($i--) {
    while(!ereg("[2-9]",$chr=sprintf("%c",rand(48,127))));
    $passw .= $chr;
  }
    return $passw;
}

$humanverif = GenVerif();
?>


<h3>TILFØJ KOMMENTAR:</h3>

<?
$sql = "SELECT * FROM localblog_blog WHERE id='$id'";
$result = mysql_query($sql);
while ($record = mysql_fetch_object($result)) {
?>

Tilføj en kommentar for <b><? echo "$record->title"; ?></b><p></p>

<?
}
?>
<form enctype="multipart/form-data" action="?q=addcomment2" method="post">
<input type="hidden" name="commentid" value="<? echo "$id"; ?>" />
<input type="hidden" name="humanverifcheck" value="<? echo "$humanverif"; ?>" />
<b>verifikation (for at undgå spamrobotter)<br>Indtast venligst: <? echo "$humanverif";?></b><br/>
<input type="text" name="humanverif" size="40" maxlength="100" /><br/>
<p></p>

<b>Navn:</b> <br/>
<input type="text" name="commentname" size="40" maxlength="100" value="<? echo "$_COOKIE[neuronblog1]"; ?>" /><br/>
<p></p>
<b>E-mail:</b> <font class="small">(vil ikke blive vist!)</font><br/>
<input type="text" name="commentmail" size="40" maxlength="100" value="<? echo "$_COOKIE[neuronblog2]"; ?>" />
<p></p>
<b>Hjemmeside:</b> <br/>
<input type="text" name="commentwebsite" size="40" maxlength="100" value="<? echo "$_COOKIE[neuronblog3]"; ?>" />
<p></p>
<b>Kommentar:</b><br/>
<textarea name="comment" rows="5" cols="40"></textarea>
<p></p>
<input type="submit" name="submit" value="skriv kommentar!" />
</form>

***

Kildekoden til addcomment2.php

<h3>INDTASTNINGSSTATUS!</h3>

<?

if ($humanverif == "$humanverifcheck"){


    if($comment == "" || $commentname == "")
    {
?>

    <div align="center"><b>Du glemte at udfylde navn og/eller kommentar</b><p>
<h2><center><a href="java script:history.back()">Tilbage</a></center>
</div>


<?

    }
    else
    {
    $comment = ereg_replace("<", "", $comment);
    $comment = ereg_replace(">", "", $comment);
    $commentwebsite = ereg_replace("http://", "", $commentwebsite);

    mysql_query ("INSERT INTO localblog_comments (postdate, posttime, commentid, commentname, commentmail,     commentwebsite, comment) VALUES ('$postdate',  '$posttime', '$commentid', '$commentname', '$commentmail', '$commentwebsite', '$comment')");

    $id = "$commentid";
    ?>
    <center><b>Din kommentar er indskrevet!</b><p></p>
    <a href="?q=detail&amp;id=<? echo "$id";?>">Se din kommentar!</a></center>
    <p></p>
   
    <?
    mail("$adminmail","new comment on: $sitetitle","$website?q=detail&id=$id\n\n$commentname     wrote:\n\n$comment", "FROM:$adminmail<$adminmail>\r\nReply-To:$adminmail<$adminmail>");

    }
}
else

{
?>

<div align="center">
<b>Verifikation ikke korrekt - husk at indtaste det rigtige tal!</b><p>
<h2><center><a href="java script:history.back()">Tilbage</a></center>
</div>

<?
}
?>
Avatar billede jakobdo Ekspert
19. september 2008 - 13:49 #1
Hvad med at bruge et modul til det: http://www.phpcaptcha.org/

Den du bruger nu, er jo nem at snyde.

<input type="hidden" name="humanverifcheck" value="<? echo "$humanverif"; ?>" />
<b>verifikation (for at undgå spamrobotter)<br>Indtast venligst: <? echo "$humanverif";?></b><br/>

Så man aflæser feltet: humanverifcheck og poster det videre...
Avatar billede juq Nybegynder
19. september 2008 - 13:56 #2
Jo den har jeg kigge på efter min søgen, da netop koden er nem at se, da den jo som sagt står i kildekoden.

Jeg kan bare ikke implemetere det i den nuværende kode :-/
Avatar billede yHec Novice
19. september 2008 - 15:36 #3
Du skal lave noget sessions, og rand()...

Måske.
Avatar billede jakobdo Ekspert
21. september 2008 - 18:07 #4
Eller bare gemme $humanverif i en session og ikke hidden input.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester