![]() |
SELFHTML Forumsarchiv |
|
|
Die folgende Nachricht zum Thema stammt von: Faint, 31. 05. 2008, 23:28
Hallo,
Ich hab hier ein script von einem Gästebuch.
Das basiert auf einer TXT datei.
Mein Problem ist, dass da immer eine Leerzeile gemacht wird...
Und dann wird ein zweiter leerer Eintrag angezeigt.
Wieso das?
Hier ist das form in der gästebuch.php
----------
<html>
<head>
<title></title>
</head>
<body>
<hr>
<form action="neuerbeitrag.php" Method="post">
<p>Name:<br>
<input name="Name" size="40">
<br>
<br>
Inhalt:<br>
<textarea name="inhalt" cols="40" rows="12"
wrap="physical"></textarea>
</p>
<p><br>
<input type="submit" value="Absenden">
</p>
</form>
<p> </p>
<p>
<?
$beitrag = file("gaestebuch.txt");
krsort($beitrag);
foreach($beitrag as $ausgabe)
{
$ausgabe = stripslashes($ausgabe);
$zerlegen = explode("|", $ausgabe);
echo "
<table id=\"gb\" align=\"center\"
border=\"1\" cellspacing=\"0\"
cellpadding=\"5\"
width=\"100%\">
<tr>
<td>
Von $zerlegen[1] am $zerlegen[2]
</td>
</tr>
<tr>
<td>
$zerlegen[3]
</td>
</tr>
</table><br>
";
}
?>
</p>
<p>
<?
$beitrag = file("gaestebuch.txt");
?>
</p>
</body>
</html>
------------
Hier ist die neuerbeitrag.php:
------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title><? include ("Title.php"); ?> Link</title>
</head>
<link href="style.css" rel="stylesheet" type="text/css" media="screen" />
<body>
<!-- start header -->
<!-- end header -->
<div id="banner"> </div>
<!-- start page -->
<div id="wrapper">
<div id="page">
<div class="bgtop">
<div class="bgbtm">
<!-- start content -->
<div id="content">
<div class="post">
<h1 class="title">Gästebuch!</h1>
<div class="entry">
<p>
<?php
$user = $_POST["Name"];
$user = htmlentities($user);
$inhalt = $_POST["inhalt"];
$inhalt = htmlentities($inhalt);
$inhalt = str_replace("\n", "<br>", $inhalt);
$email = $_POST["EMail"];
$email = htmlentities($email);
if ($inhalt == "" or $user == "")
{
echo "Sie müssen das Feld \"Namen\"
und \"Inhalt\" ausfüllen";
}
else
{
$datum= date("d.m.Y H:i:s");
$eintrag="$email|$user|$datum|$inhalt";
$datei = fopen("gaestebuch.txt", "a");
fwrite($datei, "\n".$eintrag);
fclose($datei);
echo "Ihr Eintrag wurde erfolgreich gespeichert";
}
?>
<a href="guest.html"><h3>Zurück zum Gästebuch</h3></a>
</div>
<p class="meta"> </p>
</div>
</div>
<!-- end content -->
<!-- start sidebar -->
<div id="sidebar">
<? include ("Navi.php"); ?>
</div>
<!-- end sidebar -->
<div style="clear:both"> </div>
</div>
</div>
</div>
</div>
<div id="footer">
<p>©2008 Faint • Content by Users and <a href="http://www.subrosabrand.com/">SubrosaBrand</a>.</p>
</div>
</body>
</html>
---------------
und hier der Inhalt der gästebuch.txt mit einem Eintrag:
---------------
|Faint|31.05.2008 23:23:07|Test...Test...Test...Test...Test...Test...Test
---------------
Und genau die Leerzeile über dem eigentlichen eintrag in der TXT stört mich, da diese als zusätzlicher eintrag ohne angaben erkannt wird.
Wie bekomm ich die weg?
Die folgende Nachricht zum Thema stammt von: MudGuard, 31. 05. 2008, 23:46
Hi,
»» fwrite($datei, "\n".$eintrag);
»» Und genau die Leerzeile über dem eigentlichen eintrag in der TXT stört mich, da diese als zusätzlicher eintrag ohne angaben erkannt wird.
Warum schreibst Du vor dem Eintrag einen Zeilenumbruch, wenn Du den gar nicht haben willst?
cu,
Andreas
--
Warum nennt sich Andreas hier MudGuard?
O o ostern ...
Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
Die folgende Nachricht zum Thema stammt von: Faint, 31. 05. 2008, 23:55
oO
Wieso hab ich das da nur rein?...
ach egal...
Danke :D
Die folgende Nachricht zum Thema stammt von: Edgar Ehritt, 31. 05. 2008, 23:46
Hallo,
»» fwrite($datei, "\n".$eintrag);fwrite($datei,$eintrag);
Gruß aus Berlin!
eddi
Die folgende Nachricht zum Thema stammt von: Beat, 31. 05. 2008, 23:47
»» Wie bekomm ich die weg?
Indem du das tust, was du immer tun solltest:
Prüfen was in den Dingen drin ist, bevor du es verbaust.
mfg Beat
--
Selber klauen ist schöner!
Die folgende Nachricht zum Thema stammt von: Oh Tannenbaum, 01. 06. 2008, 00:16
Sag mal, was passiert eigentlich, wenn der Besucher einen Betrag verfasst, in dem ein "|" vorkommt? ;)
Die folgende Nachricht zum Thema stammt von: mbr, 01. 06. 2008, 09:43
SCNR
ich übrigens auch nicht
liebe Grüße mbr
Die folgende Nachricht zum Thema stammt von: Häschen, 01. 06. 2008, 10:37
»» Sag mal, was passiert eigentlich, wenn der Besucher einen Betrag verfasst, in dem ein "|" vorkommt? ;)
das verstehe ich nicht, wieso sollte das gefährlich sein? hat dieser senkrechte strich bei php eine bedeutung? hab gegoogelt und finde ihn nur bei perl als verkettungsoperator. also hat er auch bei php eine funktion? und wenn ja, was soll man dann in dem fall tun, um sich davor zu schützen?
danke
häschen
Die folgende Nachricht zum Thema stammt von: Vinzenz Mai, 01. 06. 2008, 10:54
Hallo,
»» »» Sag mal, was passiert eigentlich, wenn der Besucher einen Betrag verfasst, in dem ein "|" vorkommt? ;)
»» das verstehe ich nicht, wieso sollte das gefährlich sein?
schau' Dir bitte die Form an, in der der Ausgangsposter seine Einträge speichert (etwa viertletzte Zeile) und verarbeitet (relativ weit oben, es gibt da eine foreach-Anweisung).
»» hat dieser senkrechte strich bei php eine bedeutung?
Ja sicher, Operator für bitweises Oder.
»» hab gegoogelt und finde ihn nur bei perl als verkettungsoperator. also hat er auch bei php eine funktion? und wenn ja, was soll man dann in dem fall tun, um sich davor zu schützen?
Davor muss man sich nicht "schützen". Es hat auch nichts damit zu tun.
Freundliche Grüße
Vinzenz
Die folgende Nachricht zum Thema stammt von: Häschen, 01. 06. 2008, 11:18
Thank you, sir! 
Die folgende Nachricht zum Thema stammt von: Faint, 01. 06. 2008, 11:25
Hab gestestet und da passeirt gar nix...der strich wird enfach nict angezeigt
Die folgende Nachricht zum Thema stammt von: Jonathan, 01. 06. 2008, 11:33
Hallo Faint,
»» Hab gestestet und da passeirt gar nix...der strich wird enfach nict angezeigt
Sowie ich den Code verstehe dürfte auch nichts nach dem Strich angezeigt werden.
Viel schlimmer wird es aber sein, wenn ich in den Namen oder die Mail einen | einfüge. Also escape das Trennzeichen bitte, alternativ kannst du es auch in Namen und Mail verbieten (bzw. nur da escapen) und aus
$zerlegen = explode("|", $ausgabe);
folgendes machen:
$zerlegen = explode("|", $ausgabe,4);
Jonathan
--
Selfcode: ie:( fl:{ br:> va:) ls:& fo:) rl:? ss:} de:> js:| ch:? mo:} zu:)
© 1998-2006
Impressum, Software: Classic Forum