Datei wird falsch erstellt
kollaps
- php
Hi,
nachdem ich mein Problem gelöst hatte, kommt nun ein neues Problem zum Vorschein.
Zur Aufklärung: Ich darf eine Homepage für ein Restaurant erstellen. Damit der Betreiber nicht immer die Tageskarte an alle seine Partnerlokale schicken muss, kann man die Tageskarte online abrufen. Mein Auftraggeber möchte die Karte natürlich auch immer online bearbeiten können.
Mit folgendem Skript bearbeite ich also immer die Tageskarte (die Variablen sind Post-Parameter) und schreibe sie automatisch in die Datei "tageskarte.html":
######################
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Tageskarte erneuert</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
body { font-family:Arial, Helvetica, sans-serif; }
small { font-size:14px; font-style:italic; }
</style>
</head>
<body>
<h2 style="text-align:center;">Tageskarte wurde erneuert</h2>
<a href="tageskarte.html">Hier können Sie sie ansehen</a>
<?php
$meal1=htmlentities($meal1);
for($i=1;$i<=5;$i++){
${'di_'.$i} = htmlentities(${'di_'.$i});
${'mi_'.$i} = htmlentities(${'mi_'.$i});
${'do_'.$i} = htmlentities(${'do_'.$i});
${'fr_'.$i} = htmlentities(${'fr_'.$i});
}
$dh = fopen("tageskarte.html","r+");
fwrite($dh,"");
fwrite($dh,"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<title>Tageskarte</title>
<style type="text/css">
body { font-family:Arial, Helvetica, sans-serif; background-image:url(IE0620.jpg); }
</style>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<h2 style="text-align:center;">Tageskarte</h2>
<table width="60%" align="center" border="0">
<tr>
<td width="70%" align="center">11:00 bis 14:00 Uhr</td>
<td width="30%" align="center"><br>".$price1."€</td>
</tr>
</table>
<table width="60%" align="center" border="0">
<tr>
<td width="70%" align="center">".$meal1."</td>
<td width="30%" align="center">".$price2."€</td>
</tr>
</table>
<br>
<table width="85%" align="center" border="0">
<tr><td width="20%">Dienstag:</td><td> </td></tr>
<tr><td> </td><td>".$di_nr_1.$di_1." - <small>".$di_1_bem."</small></td></tr>
<tr><td> </td><td>".$di_nr_2.$di_2." - <small>".$di_2_bem."</small></td></tr>
<tr><td> </td><td>".$di_nr_3.$di_3." - <small>".$di_3_bem."</small></td></tr>
<tr><td> </td><td>".$di_nr_4.$di_4." - <small>".$di_4_bem."</small></td></tr>
<tr><td> </td><td>".$di_nr_5.$di_5." - <small>".$di_5_bem."</small></td></tr>
</table>
<br><hr><br>
<table width="85%" align="center" border="0">
<tr><td width="20%">Mittwoch:</td><td> </td></tr>
<tr><td> </td><td>".$mi_nr_1.$mi_1." - <small>".$mi_1_bem."</small></td></tr>
<tr><td> </td><td>".$mi_nr_2.$mi_2." - <small>".$mi_2_bem."</small></td></tr>
<tr><td> </td><td>".$mi_nr_3.$mi_3." - <small>".$mi_3_bem."</small></td></tr>
<tr><td> </td><td>".$mi_nr_4.$mi_4." - <small>".$mi_4_bem."</small></td></tr>
<tr><td> </td><td>".$mi_nr_5.$mi_5." - <small>".$mi_5_bem."</small></td></tr>
</table>
<br><hr><br>
<table width="85%" align="center" border="0">
<tr><td width="20%">Donnerstag:</td><td> </td></tr>
<tr><td> </td><td>".$do_nr_1.$do_1." - <small>".$do_1_bem."</small></td></tr>
<tr><td> </td><td>".$do_nr_2.$do_2." - <small>".$do_2_bem."</small></td></tr>
<tr><td> </td><td>".$do_nr_3.$do_3." - <small>".$do_3_bem."</small></td></tr>
<tr><td> </td><td>".$do_nr_4.$do_4." - <small>".$do_4_bem."</small></td></tr>
<tr><td> </td><td>".$do_nr_5.$do_5." - <small>".$do_5_bem."</small></td></tr>
</table>
<br><hr><br>
<table width="85%" align="center" border="0">
<tr><td width="20%">Freitag:</td><td> </td></tr>
<tr><td> </td><td>".$fr_nr_1.$fr_1." - <small>".$fr_1_bem."</small></td></tr>
<tr><td> </td><td>".$fr_nr_2.$fr_2." - <small>".$fr_2_bem."</small></td></tr>
<tr><td> </td><td>".$fr_nr_3.$fr_3." - <small>".$fr_3_bem."</small></td></tr>
<tr><td> </td><td>".$fr_nr_4.$fr_4." - <small>".$fr_4_bem."</small></td></tr>
<tr><td> </td><td>".$fr_nr_5.$fr_5." - <small>".$fr_5_bem."</small></td></tr>
</table>
</body></html>
");
fclose($dh);
?>
</body>
</html>
######################
Wenn ich in keine Eingaben mache und so eine neue Karte erstelle, wird aber immer folgendes ausgegeben (montag bis donnerstag wird richtig erstellt, die habe ich einfach weggelassen):
#############
[..]
Freitag:
-
-
-
-
-
"; $fr_nr_3 $fr_3 - $fr_3_bem "; $fr_nr_4 $fr_4 - $fr_4_bem "; $fr_nr_5 $fr_5 - $fr_5_bem "; mall>"; ?> ",$do_5_bem,""; ?>
Freitag:
",$fr_1_bem,""; ?>
",$fr_2_bem,""; ?>
",$fr_3_bem,""; ?>
",$fr_4_bem,""; ?>
",$fr_5_bem,""; ?>
#############
Hat jemand eine Ahnung, warum das so ist?
euer kollaps
Hallo,
"; $fr_nr_3 $fr_3 - $fr_3_bem "; $fr_nr_4 $fr_4 - $fr_4_bem "; $fr_nr_5 $fr_5 - $fr_5_bem "; mall>"; ?> ",$do_5_bem,""; ?>
Freitag:
",$fr_1_bem,""; ?>
",$fr_2_bem,""; ?>
",$fr_3_bem,""; ?>
",$fr_4_bem,""; ?>
",$fr_5_bem,""; ?>
Das sieht sehr danach aus, dass du irgendwo in deinem unheimlich komplizierten Quelltext ein " vergessen hast zu escapen oder es falsch gesetzt hast. Verlange aber bitte nicht, dass wir wie Spießhunde danach suchen werden. (Schon gar nicht zu solch später Stund’.) ;-)
BTW: Warum dynamisierst du dein ganzes System nicht? (bspw. die Tabellenerstellung)?
Gruß
Lachgas
Das sieht sehr danach aus, dass du irgendwo in deinem unheimlich komplizierten Quelltext ein " vergessen hast zu escapen oder es falsch gesetzt hast.
Danach such ich schon seit gestern. Aber ich finde es nicht. Außerdem habe ich den PHP-Code von "Dienstag" (bei dem ja alles klappt) kopiert, also müsste es beim Freitag auch keine Probleme geben. Ich verstehe nicht warum es aber trotzdem Probleme gibt.
Verlange aber bitte nicht, dass wir wie Spießhunde danach suchen werden. (Schon gar nicht zu solch später Stund’.) ;-)
Insgeheim habe ich da ja gehofft, aber dann muss ich wohl weitersuchen...
Neue Erkenntnis:
Den von PHP generierten Quelltext habe ich überprüft. Und es wir auch alles so generiert wie ich es möchte, doch nach "</body></html>" geht es noch weiter mit folgendem:
############
/td><td> $fr_nr_4 $fr_4 - <small> $fr_4_bem </small>"; </td></tr>
<tr><td></td><td> $fr_nr_5 $fr_5 - <small> $fr_5_bem </small>"; </td></tr>
</table>mall>"; ?></td></tr>
<tr><td> </td><td><?php echo $do_nr_5," ",$do_5," - <small>",$do_5_bem,"</small>"; ?></td></tr>
</table>
<br><hr><br>
<table width="85%" align="center" border="0">
<tr><td width="20%">Freitag:</td><td> </td></tr>
<tr><td> </td><td><?php echo $fr_nr_1," ",$fr_1," - <small>",$fr_1_bem,"</small>"; ?></td></tr>
<tr><td> </td><td><?php echo $fr_nr_2," ",$fr_2," - <small>",$fr_2_bem,"</small>"; ?></td></tr>
<tr><td> </td><td><?php echo $fr_nr_3," ",$fr_3," - <small>",$fr_3_bem,"</small>"; ?></td></tr>
<tr><td> </td><td><?php echo $fr_nr_4," ",$fr_4," - <small>",$fr_4_bem,"</small>"; ?></td></tr>
<tr><td> </td><td><?php echo $fr_nr_5," ",$fr_5," - <small>",$fr_5_bem,"</small>"; ?></td></tr>
</table>
</body></html>
############
Kann sich das wer erklären?
Huhu
Neue Erkenntnis:
Fein.
Den von PHP generierten Quelltext habe ich überprüft. Und es wir auch alles so generiert wie ich es möchte, doch nach "</body></html>" geht es noch weiter mit folgendem:
Kann sich das wer erklären?
Ja.
Du benutzt 'r+' zum Zugriff, Deine Datei kann aber von variabler Länge sein.
Schau Dir die unterschiedlichen Modus nochmal im Manual an:
http://de.php.net/manual/en/function.fopen.php
Viele Grüße
lulu
Hi
Du benutzt 'r+' zum Zugriff, Deine Datei kann aber von variabler Länge sein.
Du bist die beste. Mit deiner Hilfe klappt das jetzt! Vielen Dank
Hi,
$meal1=htmlentities($meal1);
Und wenn Du htmlentities() immer mit dem optionalem Parameter ENT_NOQUOTES aufrufst? Denn wenn der Fehler nicht im Code liegt, liegt er wohl woanders, wenn ich das mal so ganz überspitz formulieren darf. Was hast Du noch an Variablen? Den Input, oder? Sind da Quotes drin?
Denn es fällt auf, das den Anfang ein Semikolon macht.
"; $fr_nr_3 $fr_3 - $fr_3_bem "; $fr_nr_4 $fr_4 - $fr_4_bem "; $fr_nr_5 $fr_5 - $fr_5_bem "; mall>"; ?> ",$do_5_bem,""; ?>
so short
Christoph Zurnieden