SiMpLy
Mitglied
Hallo, ich habe ein Problem.
Ich wollte bei meinem Gästebuch ein CAPTCHA rein tun, damit keine Bots mehr Spam einträge machen können. Nur leider will das irgendwie nicht so ganz funktionieren. Und nun geht überhaupt nichts mehr.
Ich finde nicht einmal mehr den fehler.
Kann mir jemand helfen? Ich wäre echt super froh und wenn das mit dem Captcha auch gehen würde, wäre ich auch noch froh.
guestbook.php
guestbook_erg.php
captcha.php
Und das weiss ich nicht, wo das hinkommt
Ich wollte bei meinem Gästebuch ein CAPTCHA rein tun, damit keine Bots mehr Spam einträge machen können. Nur leider will das irgendwie nicht so ganz funktionieren. Und nun geht überhaupt nichts mehr.
Ich finde nicht einmal mehr den fehler.
Kann mir jemand helfen? Ich wäre echt super froh und wenn das mit dem Captcha auch gehen würde, wäre ich auch noch froh.
guestbook.php
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<?PHP
function UF_ConvDate($ldDatum="",$lcFormat="D",$lcModus="R")
{
$ldRetVal = "";
if (!empty($ldDatum)) {
if ($lcModus == "R") {
// Lesen eines Feldwertes aus MySQL-Datums- oder Datums/Zeitfeld
if ($lcFormat == "D") {
// Datumsfeld
list ($lcJahr, $lcMonat, $lcTag) = explode("-", $ldDatum);
$ldRetVal = $lcTag . '.' . $lcMonat . '.' .$lcJahr;
}
if ($lcFormat == "DT") {
// Datums-Zeitfeld
$lcZeit = substr($ldDatum,strpos($ldDatum," "),10);
$ldDatum = substr($ldDatum,0,strpos($ldDatum," "));
list ($lcJahr, $lcMonat, $lcTag) = explode("-", $ldDatum);
$ldRetVal = $lcTag. '.' . $lcMonat . '.' . $lcJahr .$lcZeit;
}
}
if ($lcModus == "W") {
// Schreiben eines Feldwertes in MySQL-Datums- oder Datums/Zeitfeld
if ($lcFormat == "D") {
// Datumsfeld
list ($lcTag, $lcMonat, $lcJahr) = explode(".", $ldDatum);
$ldRetVal = "'".$lcJahr . '-' . $lcMonat . '-' .$lcTag."'";
}
if ($lcFormat == "DT") {
// Datums-Zeitfeld
$lcZeit = substr($ldDatum,strpos($ldDatum," "),10);
$ldDatum = substr($ldDatum,0,strpos($ldDatum," "));
list ($lcTag, $lcMonat, $lcJahr) = explode(".", $ldDatum);
$ldRetVal = "'".$lcJahr . '-' . $lcMonat . '-' .$lcTag.$lcZeit."'";
}
}
}
return $ldRetVal;
}
function UF_Hyperlink($lcString="",$llDoHyperlink=true,$llDoLinebreak=false,$lcTarget="_blank")
{
if ($llDoHyperlink) {
$lcSearch = array ("/([\w\.\/\&\=\?\-]+)@([\w\.\/\&\=\?\-]+)\b/i",
"/((ftp(7?):\/\/)|(ftp\.))([\w\.\/\&\~\=\?\-]+)\b/i",
"/((http(s?):\/\/)|(www\.))([\w\.\/\&\~\=\?\-]+)\b/i");
$lcReplace = array ("<a href='mailto:$1@$2'>$1@$2</a>",
"<a href='ftp$3://$4$5' target='$lcTarget'>$4$5</a>",
"<a href='http$3://$4$5' target='$lcTarget'>$4$5</a>");
$lcString = preg_replace ($lcSearch, $lcReplace, $lcString);
}
if ($llDoLinebreak) {
$lcString = str_replace("\r\n", "<br>", $lcString);
}
return $lcString;
}
$link = mysql_connect("localhost","BENUTZER","PWD");
mysql_select_db("DATENBANK",$link);
$page = $_GET['page'];
$maxItems = 5;
$page = (integer)$page;
if(!is_int($page))
$page = 0;
$countQuery = "SELECT COUNT(*) FROM guestbook;";
$countResult = mysql_query($countQuery,$link);
$elements = mysql_result($countResult,0);
mysql_free_result($countResult);
$startIndex = $page * $maxItems;
if($startIndex > $elements)
$startIndex = 0;
$query = "SELECT * FROM guestbook ORDER BY id DESC LIMIT $startIndex, $maxItems";
$result = mysql_query($query,$link);
$num = mysql_num_rows($result);
?>
<html>
<head>
<?PHP include '_meta/meta.html'; ?>
<link href="_style/markus_force.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor="#FFFFFF" style="margin: 0" onLoad="document.guestbook.name.focus();">
<table border="0" cellpadding="0" cellspacing="0" class="main_background">
<tr>
<td align="left" valign="top" class="navigation"> </td>
<td align="left" valign="top" class="content"><p class="title">Guestbook</p>
<form name="guestbook" method="post" action="guestbook_erg.php">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20%" valign="top">Name:</td>
<td><input type="text" name="name" id="textfield" size="30"></td>
</tr>
<tr>
<td valign="top">E-Mail:</td>
<td><input type="text" name="email" id="textfield" size="30"></td>
</tr>
<tr>
<td valign="top">Homepage:</td>
<td><input type="text" name="homepage" id="textfield" size="30"></td>
</tr>
<tr>
<td valign="top">Message:</td>
<td><textarea name="message" cols="25"></textarea></td>
</tr>
<tr>
<td valign="top"> </td>
<td> </td>
</tr>
<tr>
<td valign="top"><img src="_captcha/captcha.php" border="0" title="Sicherheitscode"></td>
<td><input type="text" name="sicherheitscode" size="5"></td>
</tr>
<tr>
<td valign="top"> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="button" id="button" value="Senden" /></td>
</tr>
</table>
</form>
<br><br>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<?PHP
for ($i=0;$i < $num;$i++) {
$row = mysql_fetch_array($result); {
?>
<tr>
<td>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="25" bgcolor="#666666" style="padding-left: 5px; color: #FFFFFF;"><strong>Von</strong> <?PHP echo $row['name']; ?></td>
<td width="30%" bgcolor="#666666"><strong>am</strong> <?PHP echo substr(UF_ConvDate($row['datum'],"D","R"),0,10); ?></td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="padding-left: 5px;"><?PHP echo (UF_Hyperlink(nl2br($row['message']))); ?></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td height="25" bgcolor="#666666" style="padding-left: 5px; color: #FFFFFF;"><strong>Comment:</strong><br><em><?PHP echo (UF_Hyperlink(nl2br($row['comment']))); ?></em></td>
</tr>
<?PHP }} ?>
</table>
<br><br>
<?PHP
$startIndex = (integer)$startIndex;
if($startIndex != 0)
{
$tmpPage = $page - 1;
echo "<a href=\"guestbook.php?page=0\"><</a>";
}
else
{
echo "< ";
}
$tmpPage = $page + 1;
echo "Seite $tmpPage";
if(($startIndex + $maxItems) >= $elements)
{
echo " >";
}
else
{
$mod = $elements % $maxItems;
$tmpElements = $elements - $mod;
$tmpPage = $tmpElements / $maxItems;
if($mod == 0)
$tmpPage--;
$nextPage = $page + 1;
if($nextPage > $tmpPage)
$nextPage = $tmpPage;
echo "<a href=\"guestbook.php?page=$nextPage\">></a>";
}
?>
</td>
</tr>
</table>
</body>
</html>
guestbook_erg.php
PHP:
<?PHP
extract($_POST);
extract($HTTP_SERVER_VARS);
$id = $_POST['id'];
$name = $_POST['name'];
$email = $_POST['email'];
$homepage = $_POST['homepage'];
$message = $_POST['message'];
$datum = $_POST['datum'];
$datum = date('Y-m-d');
if (empty($name)) {
$status .= 'Bitte <strong>Namen</strong> eingeben!<br><br>';
}
if (empty($email)) {
$status .= 'Bitte <strong>E-Mail</strong> eingeben!<br><br>';
}
if (empty($message)) {
$status .= 'Bitte <strong>Mitteilung</strong> eingeben!';
}
if(!empty($name) && !empty($email) && !empty($usertext))
{
function mysql_die() {
echo 'Fehler: ';
echo mysql_error();
exit;
}
$link = mysql_connect("localhost","BENUTZER","PWD");
mysql_select_db("DATENBANK",$link);
$query = "INSERT INTO guestbook (id,name,email,homepage,message,datum) values('$id','$name','$email','$homepage','$message','$datum')";
$result = mysql_query($query) or mysql_die();
echo "
<html>
<head>
<meta http-equiv='refresh' content='0; URL=guestbook.php'>
</head>
<body>
</body>
</html>
";
}
if(empty($name) || empty($email) || empty($message)) {
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<html>
<head>
<?PHP include '_meta/meta.html'; ?>
<link href='_style/markus_force.css' rel='stylesheet' type='text/css'>
</head>
<body bgcolor="#FFFFFF" style="margin: 0">
<table border="0" cellpadding="0" cellspacing="0" class="main_background">
<tr>
<td align="left" valign="top" class="navigation"> </td>
<td align="left" valign="top" class="content"><p class="title">Guestbook Fehler</p><?PHP echo $status ?><br><br><a href="javascript:history.back()";>zurück</a></td>
</tr>
</table>
</body>
</html>
<?PHP
}
?>
captcha.php
PHP:
<?php
session_start();
unset($_SESSION['captcha_spam']);
function randomString($len) {
function make_seed(){
list($usec , $sec) = explode (' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
srand(make_seed());
//Der String $possible enthält alle Zeichen, die verwendet werden sollen
$possible="ABCDEFGHJKLMNPRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789";
$str="";
while(strlen($str)<$len) {
$str.=substr($possible,(rand()%(strlen($possible))),1);
}
return($str);
}
$text = randomString(5); //Die Zahl bestimmt die Anzahl stellen
$_SESSION['captcha_spam'] = $text;
header('Content-type: image/png');
$img = ImageCreateFromPNG('captcha.PNG'); //Backgroundimage
$color = ImageColorAllocate($img, 0, 0, 0); //Farbe
$ttf = $_SERVER['DOCUMENT_ROOT']."/captcha/XFILESF"; //Schriftart
$ttfsize = 25; //Schriftgrösse
$angle = rand(0,5);
$t_x = rand(5,30);
$t_y = 35;
imagettftext($img, $ttfsize, $angle, $t_x, $t_y, $color, $ttf, $text);
imagepng($img);
imagedestroy($img);
?>
Und das weiss ich nicht, wo das hinkommt
PHP:
<?php
session_start();
if(isset($_SESSION['captcha_spam']) AND $_POST["sicherheitscode"] == $_SESSION['captcha_spam']){
unset($_SESSION['captcha_spam']);
}
else{
die ("Der Sicherheitscode ist falsch!");
}
?>
Zuletzt bearbeitet: