Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]edycja pliku txt online, Skrypt dodaje backslashe
madel
post 30.04.2007, 10:59:45
Post #1





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 20.08.2006

Ostrzeżenie: (0%)
-----


Mam skrypt php za pomocą którego mogę edytowac online wpisany wcześniej plik tekstowy (oczywiście z nadanymi odpowiednimi atrybutami).
Problem jest taki, że przy wpisaniu cudzysłowów do tekstu, po zapisie skrypt dodaje jeszcze backslashe.
Przykład: gdy wpiszę "cytat" powstanie po zapisie \"cytat\".
Jak to wyeliminować?
Oto kod:

  1. <?php
  2. $fileName="edytowany.txt";
  3. //zapisywanie
  4. $tresc=$_POST["tresc"];
  5. if(isset($tresc))
  6. {  
  7. $fout=fopen($fileName,"w");  
  8.  
  9.  if($fout!=FALSE)
  10.  {
  11. fputs($fout,$tresc);
  12. fclose($fout);
  13.  }  
  14. }
  15.  
  16. //wypisywanie
  17. if(file_exists($fileName))
  18. {
  19.  $fin=fopen($fileName,"rb");
  20.  
  21.  if($fin!=FALSE)
  22.  {
  23. while(!(feof($fin)))
  24. {
  25.  $x=fgets($fin,1024);
  26. $c.=$x;
  27. //$cc.=$x."<br>";
  28. }
  29. //print(htmlspecialchars($c));
  30. fclose($fin);
  31.  }
  32. }  
  33.  
  34.  //formularz  
  35.  $html11=
  36. '
  37.  
  38. <form method="POST" action="edit.php">
  39. <textarea name="tresc" cols="85" rows="20" maxlength="5">';
  40.  
  41. $html12=
  42. '</textarea>
  43. <input type="submit" value="Wyslij">
  44. </form>
  45. ';
  46.  echo "<hr>n";  
  47.  echo $html11;
  48.  echo $html12; 
  49.  echo "<hr>n";
  50. echo "<pre>";
  51. echo "</pre>";
  52. ?>


Dodałem
  1. <?php
  2. $tresc = stripslashes($tresc);
  3. ?>

po czwartej linii, backslashe już nie dodawało ale co jakiś czas kasowało mi zawartość edytowanego pliku.
A jak zastosować w tym skrypcie 'łamanie wierszy'? Aby odczytywany i wyświetlany tekst nie wyjeżdżał mi poza obręb ekranu?
Powinno się zastosować
  1. <?php
  2. $questionmark.gifquestionmark.gif= wordwrap($questionmark.gifquestionmark.gif, 100, "n", 1);
  3. ?>

tylko w którym miejscu? Chciałbym aby łamanie wierszy następowało tylko przy odczycie - przy oglądaniu zawartości (nie przy zapisywaniu).

Ten post edytował madel 1.05.2007, 15:31:24


--------------------
Pozdrawiam wszystkich chcących pomóc!
Go to the top of the page
+Quote Post
desavil
post 25.12.2009, 11:04:08
Post #2





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


Dołączam się do pytania.


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
Blame
post 25.12.2009, 11:14:35
Post #3





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

Ostrzeżenie: (0%)
-----


Po pierwsze slashe: nie usuwaj ich przy dodawaniu tylko przy wyświetlaniu tekstu, wtedy wszystko będzie ok.
A co do łamania linii to wordwrap nie jest dobrym pomysłem. Jeśli podasz textarea jaką ma mieć szerokość to on sam sobie będzie dodawał spacje.


--------------------
Go to the top of the page
+Quote Post
desavil
post 25.12.2009, 16:03:17
Post #4





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


A mógł by Pan to zmienić bo męczę się z tym już od godziny i dalej mam slashe.


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
Blame
post 25.12.2009, 17:02:28
Post #5





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

Ostrzeżenie: (0%)
-----


Z tego co widzę, to treść dajesz do zmiennej $c, więc przed wyświetleniem użyj na niej stripslashes a potem htmlspecialchars.
I jeszcze zamiast dawać wszystko do tagów <pre></pre> możesz użyć nl2br.


--------------------
Go to the top of the page
+Quote Post
desavil
post 25.12.2009, 19:15:53
Post #6





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


Już zamieniłem w ten sposób i działa:
Cytat
$tresc=stripslashes($_POST["tresc"]);


PS.
A da się jeszcze zrobić, aby edytować określony element z tekstu dajmy na to mam np taki teks to edycji:
ip = localhost
port = 8000

i user ma takie coś:
Twoje ip serwera to (input) localhost (input)
Twój port to (input)8000 (input)

i tylko widzi to localhost oraz port w osobnych inputach

I jeszcze jedno czy da się zrobić tak, że edytuję sobie bazę danych i to co edytuję to się zmienia/dodaje w pliku automatycznie.

Pozdrawiam

@Odświeżam

Ten post edytował desavil 25.12.2009, 17:08:23


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
cim
post 26.12.2009, 01:38:53
Post #7





Grupa: Zarejestrowani
Postów: 208
Pomógł: 28
Dołączył: 9.08.2004
Skąd: Stargard

Ostrzeżenie: (0%)
-----


Witam,

przeczytaj to: http://phpedia.pl/wiki/Jak_korzysta%C4%87_...tylu_php.ini%3F bo chyba o tym myślisz.

Żeby przy zapisie do danych bazy aktualizować plik to wystarczy po mysql_query zrobić zapis do pliku, tylko nie do końca rozumiem logike - to samo chcesz zapisywać do bazy danych i do pliku?

Pozdrawiam


--------------------
errare humanum est
Go to the top of the page
+Quote Post
desavil
post 26.12.2009, 11:10:06
Post #8





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


Nie, chciałem aby prościej było z bazą danych, że tam sobie edytuje wyciągam określone pola i potem jak zapisuje i coś zmieniam to automatycznie się zmienia w pliku tekstowym. Ponieważ znam się lepiej na operacjach związanych z bazą danych niż na plikach.


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
erix
post 28.12.2009, 12:19:56
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A czemu leczycie skutki zamiast przyczyn? Problemem jest magic_quotes.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 23.05.2025 - 05:11