webForumDet fria alternativet

Captcha till PHP-Gästbok

5 svar · 2 405 visningar · startad av mariefloden

marieflodenMedlem sedan maj 20093 inlägg
#1

Hej!

Skulle någon vilja hjälpa mig med att lägga till ett captcha-skript till PHP-Gästboken?

Har försökt med de här två men jag får det inte att fungera.

http://www.phpcaptcha.org/documentation/quickstart

http://www.white-hat-web-design.co.uk/articles/php

Tack på förhand
/Marie

<html>
<head>
<title>Gästbok</title>
<link rel="stylesheet" href="inc/settings.php" type="text/css">

<script src="inc/js.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>

<body>
<?require ("inc/settings.php");

$conn_gb = mysql_connect("$server", "$anvandare", "$losen");
$action  = $_GET['action'];

if ($action == "add"){

  $namn   = $_POST["namn"];
  $mail   = $_POST["mail"];
  $url    = $_POST["url"];

   If ($url){

     If (substr(strtolower($url),0,7) == "http://"){

        $url = $url;

     }else{

        $url = "http://".$url;

     }
   }

  $rubrik = $_POST["rubrik"];
  $msg    = $_POST["msg"];
  $msg    = str_replace('"', "&quot;", $msg);
  $msg    = nl2br($msg);

  $ip     = $HTTP_SERVER_VARS['REMOTE_ADDR'];

  $datum  = time();

  $sql = "Insert Into gastbok(namn,mail,url,rubrik,msg,ip,datum) Values('$namn','$mail','$url','$rubrik','$msg','$ip','$datum')";

  //echo "SQL: $sql <br>";

  mysql_db_query($databas,$sql) or die(mysql_error());?>

  <script>location.href='gastbok.php';</script>

<?}else{?>

<table border="0" width="400" align="center" cellpadding="3" cellspacing="0">

  <form method="post" action="gastbok.php?action=add" name="gastbok" onSubmit="return Gb()">

<tr> 
<td colspan="2" style="border-bottom: 1px solid #000000"><font size="2"><b>Gästbok</b></font></td></tr>

<tr> 
<td width="80"><b>Namn:</b><br>

        <input type="text" name="rubrik" size="30"></td>

      <td><b>Stad:</b><br>

        <input type="text" name="namn" size="30"></td>

  </tr> <tr> <td><b>E-post:</b> <br>

        <input type="text" name="mail" size="30"></td>

      <td><b>Hemsida:</b> <br><input type="text" name="url" size="30"></td></tr>

    <tr> <td colspan="2" valign="top"> <b>Meddelande:</b><br>

      <textarea name="msg" cols="62" rows="8"></textarea></td></tr>

    <tr> <td colspan="2"><input type="submit" name="posta" value="Posta inlägg"></td></tr>

  </form>
</table>

<br>

<?$antal = mysql_num_rows(mysql_db_query($databas,"Select * From gastbok"));

$show = $_GET["show"];

if ($show == ""){

  $start = 0;

}elseif ($show > $antal){

  $start = 0;

}else{

  $start = $show;

}

$foreg  = $start - $antalPS;

$nasta  = $start + $antalPS;

$gbinlagg = mysql_db_query($databas,"Select * From gastbok Order By id desc Limit $start, $antalPS");

if (mysql_affected_rows() == 0){?>

<table border="0" width="400" align="center" cellpadding="3" cellspacing="0"><tr>

    <td><i>Inget har skrivit i gästboken.</i></td>

 </tr>
</table>

<?}else{?>

<table border="0" width="400" align="center" cellpadding="3" cellspacing="0">

<tr>

<td align="left"><?if ($foreg >= 0){?><a href="gastbok.php<?if ($foreg != 0){?>?show=<?=$foreg?><?}?>">Föregående <?=$antalPS?></a><?}?></td>

<td align="right"><?if ($nasta < $antal){?><a href="<?=$sidan?>?show=<?=$nasta?>">Nästa <?=$antalPS?></a><?}?></td>

</tr>

</table>

<?while ($RS = mysql_fetch_array($gbinlagg)){

  $dat    = date("Y-m-d (H:i)", $RS["datum"])?>

    <table border="0" width="400" align="center" cellpadding="3" cellspacing="0" style="border: 1px solid #000000">

      <tr bgcolor="#98A9E4">

        <td width="300"><b><?=$RS["rubrik"]?></b> | <?=$RS["namn"]?></td>

        <td width="100" align="right"><img src="../images/klocka.gif" alt="<?=$dat?>" width="11" height="11" border="0"> <?If ($RS["url"]){?><a href="<?=$RS["url"]?>" target="_blank"><img src="../images/homepg.gif" alt="<?=$RS["url"]?>" width="15" height="11" border="0"></a><?}?> <?If ($RS["mail"]){?><a href="mailto:<?=$RS["mail"]?>"><img src="../images/email.gif" alt="<?=$RS["mail"]?>" width="14" height="10" border="0"></a><?}?></td>

      </tr>

      <tr bgcolor="#FFFFFF">

        <td colspan="2"><?=$RS["msg"]?></td></tr>

      <?if ($RS["svar"]){?>

      <tr bgcolor="#FFFFFF">

        <td colspan="2">&nbsp;</td>

      </tr>

      <tr bgcolor="#D5E0EC">

        <td colspan="2"><b>Svar:</b> <i><?=$RS["svar"]?></i></td></tr>

      <?}?>

</table>

    <br>

<?}}}

mysql_close($conn_gb);?>

</body>
</html>
MogMedlem sedan nov. 2003255 inlägg
#2

Detta funkar för mig.

marieflodenMedlem sedan maj 20093 inlägg
#3

Mog skrev:

Detta funkar för mig.

Tack för ditt svar Mog.

Men jag är nybörjare, på vilka rader i min kod ska jag lägga till captcha-koden?

MogMedlem sedan nov. 2003255 inlägg
#4

Ok, börjar från början.
Ladda ner filen i detta inlägg och packa upp den i roten på din webbserver. (Ska ligga två filer i en mapp som heter captcha)

Där du vill ha captcha-bilden klistrar du in detta;

<img src="/captcha/CaptchaSecurityImages.php?width=100&amp;height=40&amp;characters=5" alt="captcha">

width = Bildens bredd
height = Bildens höjd
characters = Antal tecken i captcha-bilden

Input-fältet

<input id="security_code" name="security_code" type="text">

Innan du skickar in inlägget i databasen kontrollerar du att koden är korrekt med

session_start();
if(!isset($_SESSION['security_code']) || $_SESSION['security_code'] != $_POST['security_code']) {
	echo '<SPAN STYLE="color: red;">Felaktig kod, prova igen.</SPAN>';
	echo '<p><a href="javascript:history.back()">Tillbaka</a></p>';
	exit;
}

exempelvis direkt efter "if ($action == "add"){"

marieflodenMedlem sedan maj 20093 inlägg
#5

Stort tack!

Funkar perfekt

TomasAMedlem sedan feb. 2003184 inlägg
#6

Hej
Jag kör med en mycket enkel version.
Ber avsändaren att skriva i 8 med bokstäver i ett kontrollfält.
Att någon robot eller icke svenskatalande skulle hitta åtta har
hittills inte hänt. Fungerar 100%-igt även om det är en enkel
lösning.

128 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
126 ms — hämta tråd, inlägg och bilagor (db)