Gästebuch

Hallo!
Versuche gerade ein Gästebuch auf meiner Homepage zu erstellen und habe aber ein Problem und finde den Fehler nicht:

<?php if ($_POST[sent]==1)
{ $\_[name]=str\_replace('~','',strip\_tags(trim($\_POST[name]))); $\_[betreff]=str\_replace('~','',strip\_tags(trim($\_POST[name]))); $\_[entry]=str\_replace('~','',strip\_tags(trim($\_POST[name]))); If(!$\_POST[name]){$fehler='Bitte geben sie einen Namen an ';} If(!$\_POST[betreff]){$fehler.='Bitte geben sie einen Betreff an ';} If(!$\_POST[entry]){$fehler.='Bitte geben sie eine nachricht ein ';} if($fehler){$fehler=" ".$fehler." ";} if ($\_POST[name] AND $\_POST[betreff] AND $\_POST[entry]) { $\_POST[name]=nl2br($\_POST[name]); $\_POST[name]=nl2br($\_POST[betreff]); $\_POST[name]=nl2br($\_POST[entry]); if(file\_exists('gastbuch')){$ausgabe="\n";} $gastbuch=fopen(gastbuch,'r+'); $ausgabe.=$\_POST[name]."~".$\_POST[betreff]."~".$\_POST[entry]; fputs($gastbuch,$ausgabe); fclose($gastbuch); unset($\_POST[name]); unset($\_POST[betreff]); unset($\_POST[entry]); } ?\> Guestbook of Noldig Name  BetreffNachricht    Bekomme den Fehler: Unerwartetes $ in Line 49, also eine Zeile nach Ende des Skriptes. normalerweise war das für mich immer ein Zeichen von ; vergessen, aber diesnmal find ich den fehler nicht. Wer kann mir helfen? mfg Alexander H.

Hallo!

$_[name]=str_replace(’~’,’’,strip_tags(trim($_POST[name])));
$_[betreff]=str_replace(’~’,’’,strip_tags(trim($_POST[name])));
$_[entry]=str_replace(’~’,’’,strip_tags(trim($_POST[name])));

So ganz sehe ich hier nicht durch. Du setzt Werte in das Array $_,ohne es später noch mal zu verwenden. Du verarbeitest dreimal den geposteten Name und speicherst ihn in verschiedene Variablen. Un d du verwendest Konstanten statt Strings als Arrayindizes. Ich denke, es soll so heißen:

$_POST[‚name‘]=str_replace(’~’,’’,strip_tags(trim($_POST[‚name‘])));
$_POST[‚betreff‘]=str_replace(’~’,’’,strip_tags(trim($_POST[‚betreff‘])));
$_POST[‚entry‘]=str_replace(’~’,’’,strip_tags(trim($_POST[‚entry‘])));

Wenn du ähnliche Fehler im ganzen Script behebst, verschwindet der Fehler vieleicht.

Hi,

$_[name]=str_replace(’~’,’’,strip_tags(trim($_POST[name])));
$_[betreff]=str_replace(’~’,’’,strip_tags(trim($_POST[name])));
$_[entry]=str_replace(’~’,’’,strip_tags(trim($_POST[name])));

So ganz sehe ich hier nicht durch.

Da gabs auch nichts zum durchsehen, ich hab schlicht und einfach POST vergessen, hattest recht, funktioniert aber immer noch nicht.
Hier die Aktuelle Version des skriptes, fehler weg, er zeigt sobal der PHP-Code nicht uaskommentiert ist nichts mehr an :frowning:
mfg Alexander H.

<?php if ($_POST[sent]==1)
{ $\_POST[name]=str\_replace('~','',strip\_tags(trim($\_POST[name]))); $\_POST[betreff]=str\_replace('~','',strip\_tags(trim($\_POST[betreff]))); $\_POST[entry]=str\_replace('~','',strip\_tags(trim($\_POST[entry]))); if(!$\_POST[name]){$fehler='Bitte geben sie einen Namen an ';} if(!$\_POST[betreff]){$fehler.='Bitte geben sie einen Betreff an ';} if(!$\_POST[entry]){$fehler.='Bitte geben sie eine nachricht ein ';} if($fehler){$fehler=" ".$fehler." ";} if ($\_POST[name] AND $\_POST[betreff] AND $\_POST[entry]) { $\_POST[name]=nl2br($\_POST[name]); $\_POST[betreff]=nl2br($\_POST[betreff]); $\_POST[entry]=nl2br($\_POST[entry]); if(file\_exists('gastbuch.txt')){$ausgabe="\n";} $gastbuch=fopen('gastbuch.txt','a'); $ausgabe.=$\_POST[name]."~".$\_POST[betreff]."~".$\_POST[entry]; fputs($gastbuch,$ausgabe); fclose($gastbuch); $\_POST[name]=""; $\_POST[betreff]=""; $\_POST[entry]=""; } ?\> Guestbook of Noldig Name  BetreffNachricht   

…vielleicht…

if(!$_POST[name]){$fehler='Bitte geben sie einen Namen an

';}
if(!$_POST[betreff]){$fehler.='Bitte geben sie einen Betreff
an
';}
if(!$_POST[entry]){$fehler.='Bitte geben sie eine nachricht

if ($_POST[name] AND $_POST[betreff] AND $_POST[entry])

Wenn das geht, hab ich wieder was dazu gelernt (danke). Wusste nicht, daß
a) leere strings als false gelten
b) existierende strings wenn man sie so benutzt true zurück geben
…und löse das schon seit Ewigkeiten mit „isset()“ oder =="", je nachdem ob’s nur leer sein soll oder garnicht existieren.

Wenn es so elegant doch nicht geht… könnte da dein Fehler liegen. Der kann ja garnix tun, wenn er keine 3 True’s kriegt.

(Ich weiß es wirklich nicht, kann es im Moment nicht ausprobieren)

Hi,
meines Wissens geht das, hab PHP erst vor kurzem mit Hilfe eines buches gemacht und das hat immer funktioniert und die haben das dort so gemacht…
mfg Alexander H.

Wenn das geht, hab ich wieder was dazu gelernt (danke). Wusste
nicht, daß
a) leere strings als false gelten
b) existierende strings wenn man sie so benutzt true zurück
geben
…und löse das schon seit Ewigkeiten mit „isset()“ oder =="",
je nachdem ob’s nur leer sein soll oder garnicht existieren.

Wenn es so elegant doch nicht geht… könnte da dein Fehler
liegen. Der kann ja garnix tun, wenn er keine 3 True’s kriegt.

und mit empty() kriegst du ein true, wenn es nicht existiert oder leer ist.

Ich denke, dass man da $_POST[‚name‘] statt $_POST[name] schreiben muss.

Johannes Matschke

hi !

if ($_POST[name] AND $_POST[betreff] AND $_POST[entry])

nen tipp von mir: wenn du ne if-bedingung in deinem quelltext hast, und nicht ausgegeben wird, was eigentlich angezeigt werden sollte, geh in kleinen schritten vor…

mach erstma echo $_POST[name] usw.
dann siehst du womit die einzelnen bedingungselemente belegt sind.
ich denke dass alle 3 BOOL sein müssen damit man sie mit AND’s verknüpfen darf. aber wäre nachzuvollziehen dass die 3 TEXT bzw STRING sind.
entweder führst du 3 variablen ein, die überprüfen ob name,betreff und entry eingegeben wurden oder du schreibst „„if (empty($_POST[name] AND … blablubb)““