Faint: Leerzeile...

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>&nbsp;</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">&nbsp;</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&auml;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">&nbsp;</p>
     </div>
     </div>
    <!-- end content -->
    <!-- start sidebar -->
    <div id="sidebar">
    <? include ("Navi.php"); ?>
     </div>
    <!-- end sidebar -->
    <div style="clear:both">&nbsp;</div>
   </div>
  </div>
 </div>
</div>
<div id="footer">
 <p>&copy;2008 Faint &nbsp;&bull; Content by Users and&nbsp; <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?

  1. 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.
    1. oO
      Wieso hab ich das da nur rein?...
      ach egal...
      Danke :D

  2. Hallo,

    fwrite($datei, "\n".$eintrag);

    fwrite($datei,$eintrag);

    Gruß aus Berlin!
    eddi

  3. 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!
  4. Sag mal, was passiert eigentlich, wenn der Besucher einen Betrag verfasst, in dem ein "|" vorkommt? ;)

    1. SCNR
      ich übrigens auch nicht

      liebe Grüße mbr

    2. 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

      1. 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

        1. Thank you, sir!

        2. Hab gestestet und da passeirt gar nix...der strich wird enfach nict angezeigt

          1. 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