Michy: Antretänderung

Hallo zusammen
Ich habe ein Problem, was ja wohl klar ist.
Ich habe ein PHP-Script geschrieben, womit man eine Datei ändern kann.
Ich bin mir bewusst, dass es bereits solche Programme gibt und diese Freeware sind. Ich möchte aber noch etwas provitieren.

Mein Problem:
Ich möchte Änderungen, die in einem Textfeld vorgenommen wurden in eine Datei speichern.
Es speichert aber vor jedem " ein . Wie kann ich das verhindern?.

Hier der Link des PHP-Scripts:
http://www.pfadi.ch/pfadinewa/geschuetzt/antreten.php

Und der Pfadi WA änderung:
http://www.pfadi.ch/pfadinewa/geschuetzt/APW.htm

Falls jemand noch den Quelltext will, ist er nach dem Beitrag angefügt.

Danke für euere Antworten.

Gruss Michy aus Winterthur

Der Quelltext:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
          "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title>Antretaenderung</title>
 </head>
 <body>
  <p><h1>Antret-Aenderung</h1></p>
  <p>Bitte wähle den gewünschten Trupp aus, den du ändern willst.</p>
  <p>Dieses Programm habe ich von 0% bis 100% selber geschrieben am 11.10.2003 von 13:51:85 bis  16:06:15 Uhr.</p>
  <p>Viel Spass damit und Allzeit bereit</p>
  <p>Hannibal</p>
  <p><a href="antreten.php?a=1">Pfadi Wartensee</a></p>
  <p><a href="antreten.php?a=2">Pfadisli Wartensee</a></p>
  <p><a href="antreten.php?a=3">Woebis Wartensee</a></p>
  <p><a href="antreten.php?a=4">Pfadi Neuburg</a></p>
  <p><a href="antreten.php?a=5">Pfadisli Neuburg</a></p>
  <p><a href="antreten.php?a=6">Woebis Neuburg</a></p>
<?php
$b=$_GET["a"];/*auslesen der URI*/
if($b!="0")/*ueberpruefen, ob abgeschickt*/
{
 if($b>"0"&&$b<"7")/*nur zum lesen*/
 {
/* START--Welcher Trupp?*/
  if($b=="1")
  {
   $file="APW.htm";
  }
  if($b=="2")
  {
   $file="APsW.htm";
  }
  if($b=="3")
  {
   $file="AWW.htm";
  }
  if($b=="4")
  {
   $file="APN.htm";
  }
  if($b=="5")
  {
   $file="APsN.htm";
  }
  if($b=="6")
  {
   $file="AWN.htm";
  }
/* ENDE--Welcher Trupp?*/
/* START--Datei lesen*/
  $lesen = fopen("$file","r");
  $lesen_g = filesize("$file");
  $lesen_r = fread($lesen,$lesen_g);
  fclose($lesen);
/* ENDE--Datei lesen*/
/* START--Datei in Textfeld ausgeben*/
  print
  ("
  <hr>
  <p>Aendere den Quelltext und klicke danach auf 'Aenderung speichern'.</p>
  <form action='antreten.php?a=1".$b."' method='post'>
  <textarea name='antretaenderung' cols='105' rows='20'>".$lesen_r."</textarea>
  <p><input type='submit' value='Aenderung speichern'</p>
  </form>
  ");
/* START--Datei in Textfeld ausgeben*/
 }

if($b>"10"&&$b<"18")/*nur zum schreiben*/
 {
/* START--Welcher Trupp?*/
  if($b=="11")
  {
   $file="APW.htm";
  }
  if($b=="12")
  {
   $file="APsW.htm";
  }
  if($b=="13")
  {
   $file="AWW.htm";
  }
  if($b=="14")
  {
   $file="APN.htm";
  }
  if($b=="15")
  {
   $file="APsN.htm";
  }
  if($b=="16")
  {
   $file="AWN.htm";
  }
/* ENDE--Welcher Trupp?*/
/* START--Datei lesen*/
  $Text=$_POST["antretaenderung"];/*Text auslesen*/
  $Text = ereg_replace("\ "," ",$Text);
  $schreiben = fopen("$file","w+");
  $schreiben_g = filesize("$file");
  $schreiben_w = fwrite($schreiben,$Text);
  fclose($schreiben);
  print("<hr>Speicherung erfolgreich");
/* ENDE--Datei lesen*/
 }
}
?>
  <hr>
  <p align="center">Antretaenderung-Script 1.0<br>powerd by <a href="http://www.mypage.bluewin.ch/michaelnydegger" target="_blank">Nymi-programms</a></p>
 </body>
</html>

  1. Moin!

    Mein Problem:
    Ich möchte Änderungen, die in einem Textfeld vorgenommen wurden in eine Datei speichern.
    Es speichert aber vor jedem " ein . Wie kann ich das verhindern?.

    Das Maskieren der Quotas erledigt genau genommen der Browser immer dann, wenn Daten aus einer Textarea zurückgeliefert werden.

    Lösung:

    $str=str_replace('"';'"';$str);

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
    1. Hallo fastix®

      Lösung:

      $str=str_replace('"';'"';$str);

      Vielen Dank
      Es funktionniert.

      Gruss Michy

    2. Hi,

      Ich möchte Änderungen, die in einem Textfeld vorgenommen wurden in eine Datei speichern.
      Es speichert aber vor jedem " ein . Wie kann ich das verhindern?.
      Das Maskieren der Quotas erledigt genau genommen der Browser immer dann, wenn Daten aus einer Textarea zurückgeliefert werden.

      Nein. Das ist schlicht und einfach falsch.
      Es ist PHP, daß die Quotes maskiert.

      $str=str_replace('"';'"';$str);

      stripslashes() bietet sich an...
      Oder aber - soweit möglich - eine Änderung von magic_quotes in der php.ini

      cu,
      Andreas

      --
      Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
      http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
      1. Moin!

        Nein. Das ist schlicht und einfach falsch.
        Es ist PHP, daß die Quotes maskiert.

        *Knurr* Stimmt. Das hätte ich nicht so schreiben dürfen, weil es eine (wie Du schreibst falsche) Annahme war. Ich hätte das irgendwann mal überprüfen müssen (ist ganz einfach... method in einem formular auf "get" setzen).

        Oder aber - soweit möglich - eine Änderung von magic_quotes in der php.ini

        Oder halt statt zu testen mal die PHP.ini gründlich lesen :)

        Danke!

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
        1. Hallo

          (ist ganz einfach... method in einem formular auf "get" setzen).

          Mit get hat man aber begrenzten Übermittlungsplatz.
          Aber da ich eine ganze Datei übermittle, mach ich das per post.

          Aber Hauptsache ist, Es funktionniert

          Noch eine Frage: kann man mit Hilfe von PHP etwas suchen und ersetzten nach der * methode? Also wenn ich 'Hallo' will, dass ich dann irgendwie *allo eingeben kann.
          Gibt es anstatt * ein anderes Zeichen?

          Gruss Michy

          1. Moin!

            Oh.

            Du musst Dich mit dem Thema Regular Expressions auseinandersetzen. Die funktionieren ähnlich wie in Perl.

            Das was Du brauchst könnte (auf das Beispiel bezogen) so aussehen:

            $text="Er sagte "hallo!"";
            $text = preg_replace("[Hh]allo", "Hallo", $text);
            echo $text;

            Er sagte "Hallo!"

            (ungetestet)

            Die Hilfe dazu findest Du unter:

            http://de2.php.net/manual/de/function.preg-replace.php

            MFFG (Mit freundlich- friedfertigem Grinsen)

            fastix®

            --
            Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
          2. Moin!

            Aber Hauptsache ist, Es funktionniert

            Naja... nicht ganz. Wenn ich schon helfe, dann sollte ich _richtig_ helfen und mich nicht zu Aussagen sehr spekulativen Charakters hinreisen lassen. Auch wenn es für Dich scheinbar kein Unterschied ist, ob der Browser oder PHP die " mit einem \ maskiert- für den nächsten ist es womöglich eines...

            MFFG (Mit freundlich- friedfertigem Grinsen)

            fastix®

            --
            Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
  2. Hallo Michy,

    Es speichert aber vor jedem " ein . Wie kann ich das verhindern?.

    in dem du die \ mit stripslashes() http://de.php.net/function.stripslashes vor dem Speicher wieder entfernst. Für den Backslash ('') vor den Anführungszeichen ist übrigends magic_quotes_gpc=1 in der php.ini schuld.

    http://www.pfadi.ch/pfadinewa/geschuetzt/antreten.php

    hier bekam ich erst eine Fehlermeldung, und jetzt eine Passwortabfrage

    http://www.pfadi.ch/pfadinewa/geschuetzt/APW.htm

    dito.

    <title>Antretaenderung</title>

    Sorry, mit dem Wort kann ich nichts anfangen

    <p><h1>Antret-Aenderung</h1></p>

    das ist nicht erlaubt - p darf kein hx enthalten (lass das <p> bzw. das </p> einfach weg)

    if($b!="0")/*ueberpruefen, ob abgeschickt*/
     if($b>"0"&&$b<"7")/*nur zum lesen*/

    warum überprüfst du auf den String "0" (bzw. "7") obwohl du eigentlich die Zahl 0 (bzw. 7) überprüfen willst? (bei den folgenden if-Abfragen natürlich genauso)

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|