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ć?