php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Gästebuch in PHP


 
kjhofmann
02-03-2009, 18:29 
 
Hallo
ich habe ein Problem mit den Gästebüchern meiner Kunden:
Es erscheinen immer wieder leere Einträge, trotz Captcha usw.

Folgendermaßen ist das Gästebuch aufgebaut:
Eintragseite mit den Formularfeldern, dabei einige Pflichtfelder, deren Eintrag geprüft wird.
Dazu der Captcha.
Über GET_POST auf eine Auswertungsseite. Hier werden die Eintragungen samt Captcha geprüft und bei Fehler oder fehlenden Eintrag an die Fomularseite zurück gewiesen.
Bei fehlerfreien Eintrag gehen die Daten auf eine MySQL-Datenbank.
Gleichzeitig eine Mail an den Administrator, der den Eintrag nach Prüfung frei schaltet oder löscht.

Das Eintrags-Datum wird automatisch gesetzt.

Nun kommen aber immer wieder Einträge, manchmal auch mehrere am Tag, auf unterschiedliche Kundenseiten, wo nur ein Datum vorhanden ist, alles andere leer.

Wie ist das möglich?
Hat jemand ähnliche Erfahrungen gemacht und weiß, wie es abzustellen geht?

 
Kropff
02-03-2009, 18:30 
 
code?

peter

 
ArSeN
02-03-2009, 19:39 
 
Original geschrieben von kjhofmann
Über GET_POST ...Wie bitte? Was denn nun, über GET oder über POST?

Code wäre mal interessant wie gesagt, aber zusätzlich: Die Einträge sind leer, obwohl ein Administrator sie vorher freischalten muss? Sind die Einträge denn schon leer wenn sie freigeschaltet werden? Oder werden Sie erst später leer, z.b. beim Freischalten, oder aber noch später?

 
kjhofmann
03-03-2009, 10:36 
 
Sorry,
natürlich $_POST.

Hier der Code der Auswertung

DAS WAR DER FALSCHE CODE, Sorry

 
ezkimo
03-03-2009, 11:17 
 
*lachwech*
Joa ich würde mal behaupten, dass das Thema gestorben ist, wenn der Code nicht ganz schnell umgebrochen wird. ^^

 
kjhofmann
03-03-2009, 13:07 
 
Gibt es einen Trick, wie man es umbricht, bevor man es in dem Forum einfügt?

Ich habe es so gut es ging umgebrochen.

 
Kropff
03-03-2009, 13:18 
 
indem man auf den "ändern"-buton klickt und dann die zeilenumbrüche setzt.

peter

 
Lavingstar
03-03-2009, 13:19 
 
Original geschrieben von kjhofmann
Ich habe es so gut es ging umgebrochen.

aber anscheinend nicht den <body>-Teil ...der sähe dann in etwa so aus:

<?php
// Auswertung
if (empty($fehler)) {
$text = strip_tags($text);
$text = htmlentities($text);
$text = str_replace($nz,"<br>",$text);
echo "<p><span class='font2'>Ihre Nachricht wurde verschickt.<br>";
echo "<b>Wir danken für Ihre Nachricht.<br>";
echo "Sie erhalten umgehend Antwort von uns.</b></span></p>";
echo "<p>$text</p>";
unset($name,$email,$thema,$betreff,$nachricht,$mailing);
?>

</span></td>
</tr>
<tr>
<td align="center" valign="top" width="418">

<?
}
else {

echo "<p><span class='font2'><b>Ihre Nachricht konnte nicht versandt werden, weil</b></span>";
echo "<span class='font2'><ul>$fehler</ul></span>";
echo "<span class='font-rot-fett'>$sperre</span>";
echo "</p>";
echo "<hr width='75%'></td></tr><tr><td align='center' valign='middle' width='418'>";
echo "<form id='2' action='index.php' method='post'>";
echo "<input type='hidden' name='name' value='$name'>
<input type='hidden' name='thema' value='$thema_nr'>
<input type='hidden' name='email' value='$email'>
<input type='hidden' name='betreff' value='$betreff'>
<input type='hidden' name='nachricht' value='$nachricht'>
<input type='hidden' name='mailing' value='$mailing'>
<input type='submit' name='retour' value='Zurück'>
</form>
</td></tr>";

}
?>
</td>


Allerdings sehe ich hier in Zeile 11 ein </td> sowie eine Zeile drunter in 12 ein</tr> ohne das passende Gegenstück dazu entdecken zu können ...?

 
kjhofmann
03-03-2009, 17:04 
 
Nochmal Sorry, ich habe den falschen Code eingebracht, es ist die Auswertung von Kontakt.
Hier der richtige Code:


<?php
require_once("../includes/mysql.inc.php");
if(!$dz) die("Keine Verbindung zu MySQL - Serverproblem. Wird behoben!");
require_once("../includes/functions.inc.php");
require_once("../includes/datum.inc.php");

// Sperre zurück setzen
$sperre = "";
$sperr_code = "xxx";
$pr = 1;

//Code Auswerten
if(strtolower($_REQUEST['Code']) == strtolower($_REQUEST['EingegebenerCode']))
{
$CodeEingabe = "Der Code wurde richtig eingegeben!";
$Code = "Code ok";
} else {
$CodeEingabe = "Der Code wurde fehlerhaft eingegeben!";
$Code = "";
}

//Mailadresse
$mail_adress= "kjh@kjh-webdesign.de";
$absname = "Hofmann";
$nz = chr(13).chr(10);
$anzeigen = true;
if (empty($_POST)) $fehler = "";

/* Nur, wenn $_POST nicht leer ist, sind die übrigen Abfragen und Zuweisungen ueberhaupt sinnvoll. */

else {
$grenzwert = 1000;
$FreiGabe = 0;
$Thema = trim($_POST['Thema']);
$EintragText = trim($_POST['EintragText']);
if (strlen($EintragText) > $grenzwert) $EintragText = substr($EintragText,0,$grenzwert);
if (!strpos($EintragText," ") || strpos($EintragText," " > 60))
$EintragText = wordwrap($EintragText, 60, " ", 1);
$Autor = trim($_POST['Autor']);
$Ort = trim($_POST['Ort']);
if (empty($Ort)) $Ort .= "(Ort nicht genannt)";
$Email = trim($_POST['Email']);
$MailOffen = trim($_POST['MailOffen']);
$WebAdress = trim($_POST['WebAdress']);
$lang = strlen($EintragText);

//Sperre und Fehlerbehandlung
$query = "SELECT * FROM sperr_daten ORDER BY id";
$result = mysql_query($query) or die($query.'<br>'.mysql_error());
while ($ds = mysql_fetch_object($result)) {
id = $ds->id;
$name_sperr = $ds->name;
$e_mailadr_sperr = $ds->e_mailadr; $betreff_sperr = $ds->betreff;
if($name_sperr == $autor)
{
$pr = 2; } if($betreff_sperr == $betreff){ $pr = 2;
}
if($e_mailadr_sperr == $email)
{
$pr = 2;
} }
switch($pr)
{
case 1:
if(strlen($autor) < 5) $autor = "";
if(strlen($betreff) < 4) $betreff = "";
if(check_email($email) == 0) $email = "";
break;
case 2:
$sperr_code = "";
$sperre = "Dieser Eintrag hat einen Sperrcode";
break;
default:
break;
}

//Daten für Mail
$from = "From: Gästebuch \<".$Email."\>";
$Datum = "Datum: ".date("j.n.Y").$nz;
$zeit = "Zeit:".date("H:i").$nz;
$linie ="-------------------".$nz;
$FreiSchaltung = 'Den Eintrag über ADMIN - "Gästebuch bearbeiten" frei schalten!';
$betreff = "Gästebuch - ".$absname.": "
.$Thema;
$ztext = "Autor: ".$Autor.$nz.
"Wohnort: ".$Ort.$nz.$linie.
"Mailadresse: ".$Email.$nz.$linie.
"Webadresse: ".$WebAdress.$nz.$linie.
"Betreff: ".$betreff.$nz.$linie.
"Eintrag: ".$EintragText.$nz.$linie.
$FreiSchaltung.$nz.$linie;
$text = "Gästebuch: HOFFIS KLEINE WELT"
.$nz.$linie.$Datum.$zeit.$linie.$ztext;
if (empty($Code)) $fehler .= "<li>der Code ist falsch</li>";
if (empty($Thema)) $fehler .= "<li>Bitte geben Sie ein Thema vor.</li>";
if (empty($EintragText)) $fehler .= "<li>Der Eintrag ist leer</li>";
if (empty($Autor)) $fehler .= "<li>Sie haben keinen Namen eingetragen</li>";
if (empty($Email)) $fehler .= "<li>Ihre Mailadresse fehlt oder ist falsch</li>";
if (empty($sperr_code)) $fehler .= "<li>Unerwünschter Kontakt</li>";
if (empty($fehler));
}
?>


Weiter Code in <body>


<?php
// Beginn Eintrag
if (!empty($fehler))
{
$anzeigen = false;
echo "<p><span class='font2'><b>Leider konnte Ihr Beitrag nicht angenommen werden:</b></span></p>";
echo "<span class='font2'><ul>$fehler</ul></span>";
echo "</span></div></td></tr><tr><td align='center' valign='middle' width='400'>";
echo "<form id='FormName' action='guestbook_formular.php' method='post' target='_top'>";
echo "<input type='hidden' name='Thema' value='$Thema'>
<input type='hidden' name='EintragText' value='$EintragText'>
<input type='hidden' name='Autor' value='$Autor'>
<input type='hidden' name='Ort' value='$Ort'>
<input type='hidden' name='Email' value='$Email'>
<input type='hidden' name='WebAdress' value='$WebAdress'>
<input type='hidden' name='MailOffen' value='$MailOffen'>
<input type='image' src='../images/button/z_eintragformular.gif' alt='zur&uuml;ck'>
</form>";
echo "</tr><tr><td>";
} else {
echo "<p><span class='font2'>Ihr Beitrag wurde angenommen und wird nach einer Prüfung frei geschaltet.</span></p>";
echo "<a href='guestbook_hoffi.php' target='_top'>
<img id='gastbuch_retur1' src=
'../images/button/guestbook_hoffi_retur.gif' alt='' name='gastbuch_retur1' border='0'>
</a> ";
$SQL = "INSERT INTO guestbook_hoffi (Datum, FreiGabe,Autor, Ort, EintragText,Thema,Email,MailOffen,WebAdress)
VALUES (NOW(''), '$FreiGabe','$Autor', '$Ort',
'$EintragText','$Thema', '$Email','$MailOffen','$WebAdress')";
mysql_query($SQL, $dz);

//Mail senden
mail($mail_adress,$betreff,$text,$from);
if(mysql_affected_rows($dz)==1)
unset($FreiGabe,$EintragText,$Thema, $Autor,$Ort,$Email,$MailOffen,$id);
}
?>


Das ist der richtige Code.


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:35 Uhr.