Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Edycja styli CSS w panelu administracyjnym, Dodawające się znaki backslash \
Majewicz
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 8.10.2011

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


Witam, mam dziwny problem. Na serwerze lokalnym Apache wszystko jest w porządku ale gdy operację wykonuję już na serwerze w sieci to już jest źle.

Operacją tą jest edycja stylu css. Stworzyłem sobie pole textarea w którym z pliku wczytuję arkusz stylu. Edytuję sobie ten styl itp. Chcę zapisać zmiany - i te zmiany się zapisują - ale oprócz tego przed wszystkimi cudzysłowami i apostrofami w tym arkuszu dodaje mi się znak \ backslash. Mało tego za każdym razem jest ich coraz więcej. Najpierw są 3, przy drugiej edycji już jest ich 7, przy trzeciej - 14. Wygląda to tak:

Normalnie: background-image: url('../tlo.jpg');
Po edycji: background-image: url(\\\'../tlo.jpg\\\');
Po drugiej edycji: background-image: url(\\\\\\\'../tlo.jpg\\\\\\\');

Skąd to się bierze? Generalnie cały proces wygląda tak:
1. Wczytuję do zmiennej treść pliku: $tresc = file_get_contents($path); gdzie $path to ścieżka do tego pliku
2. Wartość zmiennej $tresc ląduje w textarea -> jest dobrze.
3. Textarea jest w formularzu <form> i po kliknięciu na przycisk "zapisz" wartość tego textarea idzie do zmiennej i dalej
4. Jest taki kod:
$tresc = $_POST['tresc']; <<<tresc to nazwa textarea
$file = fopen($path, 'w');
fputs($file, $tresc);
fclose($file);

Już w momencie przepuszczenia kodu z textarea przez $_POST do zmiennej dodają się te backslashe. Sprawdziłem to robiąc echo zamiast zapisywania do pliku.

Zrobiłem jeszcze jeden test i tak: zamiast kodu css ustawiłem, że wartość zmiennej $tresc jest równa dsafd"afsdf'. Po przepuszczeniu jej przez $_POST już ten ciąg znakowy wygląda tak: dsafd\\\"afsdf\\\'.
Co robić?

Ten post edytował Majewicz 2.12.2011, 19:55:40
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
wujek2009
post
Post #2





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

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


Może gdzieś dla tablic superglobalnych (post, get, cookie) masz automatycznie dodawany slash bezpieczeństwa.
Ogólnie usuń na razie ręcznie te wszystkie slashe (/) a później dla zmiennej treść dodaj stripslashes (http://php.net/manual/en/function.stripslashes.php)
Go to the top of the page
+Quote Post
Majewicz
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 8.10.2011

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


O których dokładnie slash'ach (/) mowa?
Z tym stripslashes właśnie przed chwileczką próbowałem i niestety rezultatów nie ma.
Go to the top of the page
+Quote Post
gargamel
post
Post #4





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

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


Masz włączone na serwerze Magic Quotes. Slashe dodają się w momencie wysyłki danych z formularza.
Na serwerze powinieneś mieć możliwość wyłączenia tego.
Jeśli nie, to użyj stripslashes przed zapisem do pliku.
Go to the top of the page
+Quote Post
Majewicz
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 8.10.2011

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


Udało mi się rozwiązać problem. Pomogła jednak ta funkcja stripslashes z tym, że zmienną $tresc musiałem przez nią przepuścić dwukrotnie. Dzięki za pomoc.
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 Aktualny czas: 21.08.2025 - 11:38