![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
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) |
|
|
![]()
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. |
|
|
![]()
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. |
|
|
![]()
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.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 11:38 |