Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przy zapisie do pliku
Forum PHP.pl > Forum > PHP
glass
witam mam dziwny błąd, otóż chodzi o odczyt z pliku i zapis.. przy tej prostej operacji skrypt automatycznie generuje mi dodatkowe znaki... wykonuje akcję na dwa sposoby w obydwu przypadkach jest tak samo .. kod wygląda tak:

  1. <?php
  2. /*odczytuje plik*/
  3. $o=fopen("kursyonline.txt","r");
  4. $p=fread($o, filesize("kursyonline.txt"));
  5. $dane=explode(";", $p);
  6. $pp=$dane[0];
  7. fclose($o);
  8. ?>


  1. <?php
  2. /*przekazuje formularzem zmienne*/
  3. <form action=\"dostep.php\" method=\"post\">
  4. <textarea cols=\"100\" rows=\"25\" name=\"zawartosc\">$pp</textarea><br>
  5. <input type=\"hidden\" name=\"kursyonline\" value=\"<Dodaj>\">
  6. <input type=\"hidden\" name=\"zapis\" value=\"ok\">
  7. <input type=\"submit\" value=\"Zapis\">
  8. </form>
  9.  
  10. <form action=\"../../index01.php#kursyonline\" method=\"post\">
  11. <input type=\"hidden\" name=\"dostep\" value=\"myaccount\">
  12. <input type=\"submit\" value=\"Anuluj\">
  13. </form>
  14. ");
  15. ?>

i tu skrypt zapisuje wcześniejsze informacje z pola tekstowego do pliku, bardzo proste

  1. <?php
  2. $zawartosc=$_POST['zawartosc'];
  3.  
  4. $o=fopen("kursyonline.txt","w");
  5. fputs($o, $zawartosc);
  6. fclose($o);
  7. ?>


zawartość pliku wygląda tak:

  1. <a name="kursyonline"></a>
  2. <a href="#surferup" class="wpis">_Kursy on-line</a><br />


zawartość pliku po zapisie wygląda tak:

  1. <a name=\"kursyonline\"></a>
  2. <a href=\"#surferup\" class=\"wpis\">_Kursy on-line</a><br />


zapisuje drugi raz i wygląda tak:

  1. <a name=\\\"kursyonline\\\"></a>
  2. <a href=\\\"#surferup\\\" class=\\\"wpis\\\">_Kursy on-line</a><br />


no kto albo co na Odyna dodaje mi znaki gratis ... pless pomóżcie może ktoś wie questionmark.gif

Pozdrawiam!
wlamywacz
Magic quotes?
artega
Na początku skryptu dodaj
marcio
  1. <?php
  2. $zawartosc=$_POST['zawartosc'];
  3.  
  4. $o=fopen("kursyonline.txt","w");
  5. fputs($o, stripslashes($zawartosc));
  6. fclose($o);
  7. ?>

A przy edycji pliku tez musisz dac stripslashes bo sie dodaja stare + nowe \
glass
dobra dzięki już to mam, swoją drogą to dosłownie nie wiedziałem o co 'włamywaczowi' chodziło.. snitch.gif))

dowiedziałem się ze 'magic_quotes' to mechanizm obronny i jego konfiguracja jest ustawiona na on w php.ini, czyli będą wstawiane znaki ucieczki, ale zależ mi by było odwrotnie, próbowałem zastosować zdanie zaproponowane przez 'artega'


jednak to niczego nie zmienia..

dopiero użycie 'stripslashes' rozwiązuje problem mój problem..

może ktoś wyjaśni do czego jest wyżej cytowane zdanie i czy jest potrzebne ?
marcio
Nie wiem php.ini nie znam tak dobrze ale moze byc tak ze nie mozesz zmieniac ustawien twojego serva/strony www wiec musisz uzyc stripslasles
artega
Cytat
może ktoś wyjaśni do czego jest wyżej cytowane zdanie i czy jest potrzebne ?

W przypadku gdy domyślnie konfiguracja php magic_quotes_runtime jest ustawiona to funkcje, które zwracają wynik z zewnętrznych źródeł np. file_get_contents dodaje znak "ucieczki" przed apostrofem i cudzysłowem. Dla zobrazowania tego przykładu sprawdź jak działa poniższy kod:
  1. <?php
  2.  
  3.  
  4. $file = file_get_contents("test");
  5.  
  6. echo $file;
  7.  
  8. ?>

zakładając, że zawartością pliku test jest dosłownie: "foo" and 'bar'
Dodatkowo konfiguracja magic_quotes_gpc dodaje znaki ucieczki do zmiennych w tablicach $_GET, $_POST, $_COOKIE.
Pamiętaj, że stosowanie magic_quotes_runtime i magic_quotes_gpc jest uznawane za "złą" praktykę dlatego usunięto te opcje w PHP6.
Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.