| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

02-03-2009, 17:29
|
|
kjhofmann
Registrierter Benutzer
|
|
Registriert seit: Mar 2006
Beiträge: 61
|
|
Gästebuch in PHP
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?
__________________
Gruß Hoffi aus Radeberg
|

02-03-2009, 17:30
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.308
|
|
code?
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

02-03-2009, 18:39
|
|
ArSeN
Registrierter Benutzer
|
|
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
|
|
Re: Gästebuch in PHP
Zitat:
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?
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
|

03-03-2009, 09:36
|
|
kjhofmann
Registrierter Benutzer
|
|
Registriert seit: Mar 2006
Beiträge: 61
|
|
Sorry,
natürlich $_POST.
Hier der Code der Auswertung
DAS WAR DER FALSCHE CODE, Sorry
__________________
Gruß Hoffi aus Radeberg
Geändert von kjhofmann (03-03-2009 um 16:05 Uhr)
|

03-03-2009, 10:17
|
|
ezkimo
Registrierter Benutzer
|
|
Registriert seit: Apr 2005
Ort: Beckum / Westf.
Beiträge: 211
|
|
*lachwech*
Joa ich würde mal behaupten, dass das Thema gestorben ist, wenn der Code nicht ganz schnell umgebrochen wird. ^^
|

03-03-2009, 12:07
|
|
kjhofmann
Registrierter Benutzer
|
|
Registriert seit: Mar 2006
Beiträge: 61
|
|
Gibt es einen Trick, wie man es umbricht, bevor man es in dem Forum einfügt?
Ich habe es so gut es ging umgebrochen.
__________________
Gruß Hoffi aus Radeberg
|

03-03-2009, 12:18
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.308
|
|
indem man auf den "ändern"-buton klickt und dann die zeilenumbrüche setzt.
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

03-03-2009, 12:19
|
|
Lavingstar
Member
|
|
Registriert seit: Oct 2004
Beiträge: 208
|
|
Zitat:
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-Code:
<?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 ...?
|

03-03-2009, 16:04
|
|
kjhofmann
Registrierter Benutzer
|
|
Registriert seit: Mar 2006
Beiträge: 61
|
|
Nochmal Sorry, ich habe den falschen Code eingebracht, es ist die Auswertung von Kontakt.
Hier der richtige Code:
PHP-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-Code:
<?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ü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.
__________________
Gruß Hoffi aus Radeberg
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|