Jeg har nu forsøgt mig med captcha, men formularen kan sendes uanset om det felt er udfyldt eller ej, så min integrering er ikke lykkedes særlig godt. Den kommer dog med fejlbesked om at formularen ikke er udfyldt korrekt.... det manglende felt.
http://www.nicolin.dk/testside.phpMens jeg sad og "legede" blev der smidt 8 links på til udenlandske sider... de er dælme hurtige!
Captcha jeg bruger er Killbot:
http://www.notonebit.com/projects/killbot/---------------------------------------------------------------
Kode før header:
<?
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO links (linkname, linkweb, beskrivelse, catg) VALUES (%s, %s, %s, %s)",
GetSQLValueString($_POST['linkname'], "text"),
GetSQLValueString($_POST['linkweb'], "text"),
GetSQLValueString($_POST['beskrivelse'], "text"),
GetSQLValueString($_POST['catg'], "text"));
mysql_select_db($nicolin_dk);
$Result1 = mysql_query($insertSQL) or die(mysql_error());
}
mysql_select_db($nicolin_dk);
$query_rsLinkcatg = "SELECT * FROM linkcategories";
$rsLinkcatg = mysql_query($query_rsLinkcatg) or die(mysql_error());
$row_rsLinkcatg = mysql_fetch_assoc($rsLinkcatg);
$totalRows_rsLinkcatg = mysql_num_rows($rsLinkcatg);
?>
---------------------------------------------------------------
Formularen:
<div class="headlines">Tilføj dit link her:</div><br>
<form action="<?=$PHP_SELF?>" method="POST">
<table width="100%" align="left">
<tr valign="baseline">
<td width="93" align="right" nowrap>Sidens navn::</td>
<td width="510"><span id="sprylinkname">
<input name="linkname" type="text" id="linkname" size="32" maxlength="25">
<span class="textfieldRequiredMsg">Du skal skrive navnet på siden!</span></span></td>
</tr>
<tr valign="baseline">
<td nowrap align="right">Sidens URL::</td>
<td><span id="sprylinkweb">
<input name="linkweb" type="text" id="linkweb" value="
http://" size="32" maxlength="100">
<span class="textfieldRequiredMsg">Du skal skrive adressen på siden - start med
http://</span><span class="textfieldInvalidFormatMsg">Forkert format!</span></span><br>
f.eks.
http://www.minside.dk</td> </tr>
<tr valign="baseline">
<td align="right" valign="baseline" nowrap>Kort beskrivelse:<br>
min. 100 tegn.</td>
<td valign="top"><span id="sprybeskrivelse">
<textarea name="beskrivelse" id="beskrivelse" cols="50" rows="8"></textarea><br>
<div class="spryposition"><span class="textareaRequiredMsg">Beskrivelse skal udfyldes!</span></div>
<div class="spryposition"><span class="textareaMinCharsMsg">Du skal skrive mindst 100 tegn!</span></div>
<br>
Du har skrevet <span id="countsprytextarea1"> </span> tegn.<br>
</span></td>
</tr>
<tr valign="baseline">
<td nowrap align="right">Vælg kategori::</td>
<td><span id="sprycatg">
<select name="catg" id="catg">
<option value=""></option>
<?php
do {
?>
<option value="<?php echo $row_rsLinkcatg['Linkcatg']?>"><?php echo $row_rsLinkcatg['Linkcatg']?></option>
<?php
} while ($row_rsLinkcatg = mysql_fetch_assoc($rsLinkcatg));
$rows = mysql_num_rows($rsLinkcatg);
if($rows > 0) {
mysql_data_seek($rsLinkcatg, 0);
$row_rsLinkcatg = mysql_fetch_assoc($rsLinkcatg);
}
?>
</select>
<span class="selectInvalidMsg">Du skal vælge en kategori!</span><span class="selectRequiredMsg">Du skal vælge en kategori!</span></span></td>
<tr valign="baseline">
<td colspan="2" align="right" nowrap> </td>
</tr>
<tr valign="baseline">
<td nowrap align="right"> </td>
<td><img border="2" src="/formscript/captcha.php?<?=$string?>"></td>
</tr>
<tr valign="baseline">
<td nowrap align="right"> </td>
<td>Skriv bogstaverne du ser i kassen her: <input type="text" size="10" name="guess"></td>
</tr>
<tr valign="baseline">
<td nowrap align="right"> </td>
<td><input name="submit" type="submit" id="submit" value="Tilføj link"></td>
</tr>
<tr valign="baseline">
<td nowrap align="right"> </td>
<td><strong>Useriøse links vil blive fjernet!</strong></td>
</tr>
<tr valign="baseline">
<td nowrap align="right"> </td>
<td> </td>
</tr>
<tr valign="baseline">
<td nowrap align="right"> </td>
<td>
<?
// The ONLY variable you should need to change is $svar which must match $svar in your captcha.php file
$svar = "MYSECRETKEY"; // IMPORTANT!!! Your unique key. Must match $svar in captcha.php
if ($_POST)
{
$user_input = $_POST['guess']; // The guess a user enters -- case sensitive
$newcode = $_POST['code'] . $svar; // Combine the hidden code field with $svar
$key = substr(base64_encode(md5($newcode)), 0, 5); // Encrypt it and take first five characters
if ($key == $user_input) // USER SUCCESSFULLY VALIDATED
{
echo "<hr /><h3>Dit link er blevet tilføjet!</h3>";
}
else // USER UNSUCCESSFULLY VALIDATED
{
echo "<hr /><h3>Formularen er ikke udfyldt rigtigt. Prøv venligst igen!</h3><hr />";
}
}
?>
<?
$rand_loop = rand(5, 10); // Pick length of random string
$string = ''; // Initialize string
for($i = 1; $i <= $rand_loop; $i++)
{
$rand1 = rand(48, 57); //0-9
$rand2 = rand(65, 90); //A-Z
$rand3 = rand(97, 122); //a-z
$rand_picker = rand(1, 3); // use rand 1, 2 or 3
switch ($rand_picker) {
case 1:
$string .= chr($rand1);
break;
case 2:
$string .= chr($rand2);
break;
case 3:
$string .= chr($rand3);
break;
}
}
?>
</td>
</tr>
</table>
<input type="hidden" name="MM_insert" value="form1">
</form>
---------------------------------------------------------------
Hvad gør jeg galt?
Bare test løs... Jeg sletter bare links når det virker...