Bettina Schneider: mit php in eine Datei schreiben ...

Hallo zusammen,

ich werd noch mal wahnsinnig, ...
mein php-script gaestebuch

(super einfach:)
  <script language="php">
  if(isset($meinung)) {
    $fp=fopen("gast.txt","a") or die("Fehler beim Oeffnen");
    flock($fp, LOCK_EX);
    fwrite($fp,nl2br($meinung)."<p>\n");
    fclose($fp);}
  }

will einfach keine Daten in die Datei gast.txt schreiben, obwohl alle Rechte auf dieser Date liegen und ein readFile("gast.txt") funktioniert. Kann mir bitte jemand helfen?

LG TINA

  1. Hello,

    <script language="php">

    *** steht das da drin im File? ***

    if(isset($meinung)) {
        $fp=fopen("gast.txt","a") or die("Fehler beim Oeffnen");
        flock($fp, LOCK_EX);
        fwrite($fp,nl2br($meinung)."<p>\n");
        fclose($fp);}
      }

    Gibt es denn Fehlermeldungen?
    Macht PHP sonst irgend etwas?

    Scheib mal ganz vorne rein in das Script:

    error_reporting(E_ALL);
    Echo $meinung;

    Und dann versuch es nochmal.

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    1. vielen Dank für die schnelle Antwort ...

      hab ich gemacht ... folgende Fehlermeldung kam vom Server:

      Notice: Undefined variable: meinung in /srv/www/htdocs/test-eingabe.php on line 12

      line 12 wäre dann dass -> Echo $meinung;

      äääh, das muss ich jetzt nicht verstehen oder? Heisst das, dass die Variable $meinung gar nicht belegt wird, oder wie?

      Hier noch mal das ganze Doc:

      <html>
      <head>
      </head>
      <body>
      <h1>ein kleines Gaestebuch</h1>
      <form action="<? echo $PHP_SELF?>" method="POST">
        <textarea cols=60 rows=5 name="meinung" wrap=virtual></textarea>
        <input type="submit" value=" Meinung senden ">
      </form>
      <script language="php">
      error_reporting(E_ALL);
      Echo $meinung;
      if(isset($meinung)) {
        $fp=fopen("gast.txt","a") or die("Fehler beim Oeffnen");
        flock($fp, LOCK_EX);
        fwrite($fp,nl2br($meinung)."<p>\n");
        fclose($fp);
      }
      </script>
      <p>Meinungen, die bereits geschrieben wurden: </p>
      <script language="php">
      readFile("gast.txt");
      </script>
      </body>
      </html>

      HILFE!!!!

      1. hi,

        Heisst das, dass die Variable $meinung gar nicht belegt wird, oder wie?

        lies dir http://www.php.net/manual/de/language.variables.predefined.php durch, da wird's erklärt.

        (englische version http://www.php.net/manual/en/language.variables.predefined.php benutzen, wenn deutsche unvollständig.)

        gruß,
        wahsaga

        1. Hi ihr Beiden noch mal,

          ihr seid so klasse .... werd alle Tipps und Hinweise von zu Hause noch mal ausprobieren ... muss jetzt nämlich Heim, ein kleiner Schreihals wartet auf seine Zitze :o)

          ich dank euch jedenfalls für eure super Unterstützung,

          meld mich noch mal falls es geklappt hat.

          GLG Tina

      2. Hello,

        Notice: Undefined variable: meinung in /srv/www/htdocs/test-eingabe.php on line 12

        line 12 wäre dann dass -> Echo $meinung;

        äääh, das muss ich jetzt nicht verstehen oder? Heisst das, dass die Variable $meinung gar nicht belegt wird, oder wie?

        Ja, richtig verstanden. Woran könnte das jetzt liegen?
        In welchen Scriptvariablen landen übermittelte Parameter?

        Wie könnte man in einem Script feststellen, welche Variablen gesetzt sind?

        --> http://de3.php.net/manual/de/function.get-defined-vars.php

        Und dann mal nach dem Wert von "meinung" suchen, wo denn der wohl geblieben ist.

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      3. Hello,

        <html>
        <head>
        </head>
        <body>
        <h1>ein kleines Gaestebuch</h1>
        <form action="<? echo $PHP_SELF?>" method="POST">
          <textarea cols=60 rows=5 name="meinung" wrap=virtual></textarea>
          <input type="submit" value=" Meinung senden ">
        </form>

        <script language="php">

        error_reporting(E_ALL);
        Echo $meinung;
        if(isset($meinung)) {
          $fp=fopen("gast.txt","a") or die("Fehler beim Oeffnen");
          flock($fp, LOCK_EX);
          fwrite($fp,nl2br($meinung)."<p>\n");
          fclose($fp);
        }

        </script>

        <p>Meinungen, die bereits geschrieben wurden: </p>

        <script language="php">

        readFile("gast.txt");

        </script>

        </body>
        </html>

        Jetzt muss ich mal ganz verdutzt nachfragen:
        Ist das eine für PHP-Parser erlaubte Methode, PHP einzuleiten und zu beenden? Ich lerne ja auch gerne mal wieder was dazu ;-))

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        1. hihi, bin in meiner verzweifelten Fehlersuche darauf gestossen, dass man das Skript, statt mit <? ...?> auch so einschachteln kann, damit umgeht man, dass der Browser den skript-Text mit ausgibt, falls kein php-Interpreter da ist. Und da ich irgendwie alles mögliche ausprobiert habe ... :o)

          Liebe Grüße aus http://www.braunschweig.de

          Tom

          1. Hello,

            hihi, bin in meiner verzweifelten Fehlersuche darauf gestossen, dass man das Skript, statt mit <? ...?> auch so einschachteln kann, damit umgeht man, dass der Browser den skript-Text mit ausgibt, falls kein php-Interpreter da ist. Und da ich irgendwie alles mögliche ausprobiert habe ... :o)

            Dann müsste man aber konsequenterweise auch noch HTML-Kommentarzeichen setzen, falls der Browser den <sript ...>-Tag noch nicht kennt.
            Was sagt denn wieder PHP dazu?

            <script language="php>
               <!--
                  ...
                  ...

            //-->
               </script>

            Wie kommst Du mit Deinem Problem voran? Hast Du es "geknackt"?

            Liebe Grüße aus http://www.braunschweig.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        2. hi,

          <script language="php">

          Jetzt muss ich mal ganz verdutzt nachfragen:
          Ist das eine für PHP-Parser erlaubte Methode, PHP einzuleiten und zu beenden?

          ja.

          Ich lerne ja auch gerne mal wieder was dazu ;-))

          fein, dann hab ich hier was für dich: http://www.php.net/manual/de/language.basic-syntax.php#language.basic-syntax.phpmode

          ;-)

          gruß,
          wahsaga

          1. Hello,

            danke, das war mal wieder sehr aufschlussreich. Aber nun fällt mir auch wieder ein, warum ich das ganz schnell "vergessen" habe.

            Wenn Sie weiters beabsichtigen, PHP Code in XML oder XHTML einzubinden, werden Sie die XML-konformen <?php. . .?> verwenden müssen.

            Liebe Grüße aus http://www.braunschweig.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            1. hi,

              Aber nun fällt mir auch wieder ein, warum ich das ganz schnell "vergessen" habe.

              na ja, nicht nur der von dir genannte grund lässt mich das schnell wieder vergessen, sondern auch die zusätzliche schreibarbeit.

              ausserdem ist die "verwechslungsgefahr" mit javascript-bereichen so geringer.

              gruß,
              wahsaga

      4. äääh, das muss ich jetzt nicht verstehen oder? Heisst das, dass die Variable $meinung gar nicht belegt wird, oder wie?

        Hi!
        Ich habe mal so die Vermutung, daß in der php.ini deines Providers der Eintrag register_globals=off zu finden ist... :D
        Wie übergibst Du deine Variable $meinung? Per POST oder an den URL angehängt?
        Ändere vielleicht mal $meinung in $_POST['meinung'] oder $_GET['meinung'] - je nachdem, wo deine Variable herkommt.

        Gruß, rob

        1. äääh, das muss ich jetzt nicht verstehen oder? Heisst das, dass die Variable $meinung gar nicht belegt wird, oder wie?
          Hi!
          Ich habe mal so die Vermutung, daß in der php.ini deines Providers der Eintrag register_globals=off zu finden ist... :D
          Wie übergibst Du deine Variable $meinung? Per POST oder an den URL angehängt?
          Ändere vielleicht mal $meinung in $_POST['meinung'] oder $_GET['meinung'] - je nachdem, wo deine Variable herkommt.

          Gruß, rob

          jup, da haste Recht, register_globals=off ist gesetzt. Wenn ich mal so doof fragen darf .... was is'n das für 'ne Belegung? Kann ich die nicht von Hand ändern auf ON ??? Funktioniert das denn?

          $meinung wird mit -> method="POST" übergeben.
          Mit echo $_POST['meinung'] bringt er mir keine Ausgabe mehr, statt die Fehlermeldung von echo $meinung .... hmmm

          1. Hello,

            jup, da haste Recht, register_globals=off ist gesetzt. Wenn ich mal so doof fragen darf .... was is'n das für 'ne Belegung? Kann ich die nicht von Hand ändern auf ON ??? Funktioniert das denn?

            Da sollest Du dir das Manual aus dem Link von wahsaga zu den predefined Variables durchlesen. Koste nur fünf Minuten und macht ne ganze Ecke schlauer ;-)

            Liebe Grüße aus http://www.braunschweig.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
        2. Hello rob,

          Ich habe mal so die Vermutung, daß in der php.ini deines Providers der Eintrag register_globals=off zu finden ist... :D

          musst Du gleich alles verraten? Wir waren doch schon dicht dran ;-))

          Wie übergibst Du deine Variable $meinung? Per POST oder an den URL angehängt?

          Wenn Du den Thread vollständig gelesen hättest, wüsstest Du das aber.

          Liebe Grüße aus http://www.braunschweig.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
        3. Hi!
          Ich habe mal so die Vermutung, daß in der php.ini deines Providers der Eintrag register_globals=off zu finden ist... :D
          Wie übergibst Du deine Variable $meinung? Per POST oder an den URL angehängt?
          Ändere vielleicht mal $meinung in $_POST['meinung'] oder $_GET['meinung'] - je nachdem, wo deine Variable herkommt.

          Gruß, rob

          Vielen Dank für den heißen Tip, mit register_globals=on funktioniert das Script jetzt.

          Gruß TINA

  2. hi,

    if(isset($meinung)) {

    erfüllt?

    gruß,
    wahsaga

    1. Hello,

      hi,

      if(isset($meinung)) {

      erfüllt?

      Nun rate mal, warum ich ihr den Tipp mit error_reporting geschrieben habe. DU bist doch sonst immer so ein "selberlernen macht schlau"-Freund ;-)

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen