Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Edycja styli CSS w panelu administracyjnym
Forum PHP.pl > Forum > PHP
Majewicz
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ć?
wujek2009
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)
Majewicz
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.
gargamel
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.
Majewicz
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.
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.