Hello,
Hallo Tom
<?php
error_reporting(E_ALL) ### zum Testen immer (meistens) alles einschalten! ^ E_NOTICE);
Habe ich weggelassen da ich es jetzt nicht für wichtig gehalten habe error_reporting(E_ALL ^ E_NOTICE);
include("global.inc.php");
was ist mit get_magic_quotes_gpc() ?
sind die Magic Quotes bei Dir ausgeschaltet?
für was brauche ich die?
$GBname = trim( $_POST["GBname"] );
$GBemail = trim( $_POST["GBemail"] );
$GBwebadresse = trim( $_POST["GBwebadresse"] );
$GBtext = trim( $_POST["GBtext"] );$dblink = mysql_connect($datahost,$datauser,$datapass);
mysql_select_db($database, $dblink);$query = 'INSERT INTO gastbuch
(
name,
email,
www,
text
)
VALUES
(
"'.mysql_real_escape_string ($GBname).'",
"'.mysql_real_escape_string ($GBemail).'",
"'.mysql_real_escape_string($GBwebadresse).'",
"'.mysql_real_escape_string ($GBtext).'"
)';Gut! Richtiges Escapen ist wichtig für das Überleben Deiner DB
ja aber wenn der Server zu streng eingestellt ist haut es damit auch nicht hin
Beispiel:
$stat="SELECT * FROM tabelle WHERE
nummer='".check_quotes($_REQUEST['nummer'])."'";
$result = mysql_query($stat);
$row=mysql_fetch_array($result);
Das sollte sicherer sein aber für diesen zweck reicht das.
mysql_query($query, $dblink);
$sql = "SELECT *
FROM
gastbuch
ORDER BY
zeitstempel DESC;";Wozu _alle_ Datensätze auslesen? reichen nicht z.B. 10 auf einmal ?
meinst du 10 auf einer Seite??
$result = mysql_query($sql) OR die(mysql_error());
echo mysql_error();
?>
*********************************
<form action="137.php" method="POST">was passiert denn wohl beim Erstaufruf des Scriptes, wenn das Formular noch nicht aufgebaut
war, also auch noch keine $_POST vorhanden waren? Der Fehler (Notice) tritt dann aber schon
oben auf
Ja wenn ich ihn nicht auschalte!
<input name="GBname" value="<?php echo $GBname; ?>"
<input type="text" name="GBemail" value="<?php echo $GBemail; ?>"
<input type="text" name="GBwebadresse" value="<?php echo $GBwebadresse; ?>" size="40">
<textarea name="GBtext" value="<?php echo $GBtext; ?>" cols="39" rows="5"></textarea>
<input type="submit" value="Senden!"> <input type="reset" value="Zurücksetzen"></form>
*******************************
<?phpecho "<h2>EINTRÄGE IM GÄSTEBUCH</h2><br />\n";
while($row = mysql_fetch_assoc($result)) {
echo '<table width="350" align="center" border="1"><tr><td bgcolor="#898989">';
echo $row['name']. " schrieb am ". $row['zeitstempel']." ".$row['www']."</td></tr><tr><td>".$row['text']."</td></tr></table><br>\n";}
?>
########################################Du hast bisher keine Fehlerkontrolle bei den SQL-Statements
doch - aber nicht hier angegeben!
Du hast keine Steuerflußkontrolle
wie soll ich das machen?
Du lässt es auf Notices ankommen (siehe $_POST)
Beim Erstaufruf des Scriptes (über die Adresszeile) wird ein leerer Datensatz eingetragenAbhilfe:
übertrag aus dem Formular einen Button oder ein Hidden-Field.
Deklariere ein Array mit allen erwarteten Datenfeldern$_data = array();
$_data['GBname']['value'] = '';
$_data['GBname']['regexp'] = '[0-9a-zA-Z]{2,}';
$_data['GBname']['required'] = 1; # 0 für optionale Eingabe,
# 1 für Pflichteingabe,
# 2 für Pflichteingabe nach Muster
$_data['GBname']['default'] = ''; # default z.B. für Radio, Select und Ckeckboxen$_data['GBemail']['value'] = '';
$_data['GBemail']['regexp'] = '[0-9a-zA-Z]{2,}@[0-9a-zA-Z]{3,}'; ## die musst Du natürlich
$_data['GBemail']['required'] = 1; ## selber aufbauen ;-)
$_data['GBemail']['default'] = '';...
Sollten ja keine Pflichtfelder sein
Harzliche Grüße vom Berg
Danke Tom für deine ausführliche Hilfe
gruß geri