Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Źle przesyłane dane z edytora "ckeditor"
Forum PHP.pl > Forum > Przedszkole
bleeder
Witam
Mam problem z edytorem "ckeditor" (http://nightly.ckeditor.com/ wersja 4098 ). Zainstalowałem pod własnym prosty systemem cms edytor "ckeditor" którym wprowadzam i edytuję dane na stronie internetowej. Problem polega na tym żę przesyłane dane do wprowadzenia są modyfikowane - wszystko ładnie działa na localu (Wamp Server) ale gdy już zainstalowalem na hostingu w necie (hsting: nazwa.pl z php5 ) to sam edytor lub php modyfikuje mi wprowadzone dane sad.gif
W pliki strony wywołuję funkcję:
  1. <?php $zmienna = $_GET['zmienna']; $dane = $_POST['dane']; edytor_tresc($zmienna, 'index.php', $dane ); ?>

gdzie $dane to dana treść strony która jest przesyłana a $zmienna to zmianna która określa stan co ma się wyświetlać: czy edytor, podgląd czy zapis (sprawdza to case )

Wstawianie wygląda tak: w edytorze za pomocą funkcji "Obrazek" wpisuję ścieżkę do pliku i wstawiam obraz do edytora, poniżej wpisuję przykładowy tekst i klikam zapisz.
Edytor wysyła dane w postaci:
  1. <p> <img alt="" height="90" src="images/ofirmie.jpg" width="180" /><img alt="\" height="\" images="" src="\" width="\" /></p>
  2. <p> przykładowy teskt !</p>

do funkcji która wyświetla mi podgląd danej strony przed zapisem. Dane które trafiają do podglądu nie wyświetlają już danego obrazka tylko sam tekst a kod źródłowy strony wygląda tak:
  1. <img alt=\"\" height=\"90\" src=\"images/ofirmie.jpg\" width=\"180\" /><img alt=\"\\\" height=\"\\\" images=\"\" src=\"\\\" width=\"\\\" /></p>
  2. <p> przykładowy teskt !</p>

Po przesłaniu danych za pomocą zmiennej zostały wstawione znaki \" w ścieżce. Nie wiem w gdzie jest błąd? czy to wina edytora czy gdzieś w php. Na localu działa dobrze, oraz testowałem inną wersje edytora (stabilną - i to samo).
Dane przesyłam za pomocą kodu:
  1. function edytor_tresc($zmienna, $strona, $dane ){
  2.  
  3. global $_SESSION;
  4. if (isset($_SESSION['prawid_uzyt']))
  5. {
  6. switch($zmienna){
  7.  
  8. case'edycja_przed' :
  9. ?>
  10. <form action="<?php $strona ?>?zmienna=<?php echo 'podglad_po'; ?>&zmienna2=<?php echo 'podglad_po'; ?>" method="post">
  11.  
  12. <textarea class="ckeditor" id="editor1" name=dane>
  13. <?php strony_pobierz_dane_tresc($strona); ?>
  14. </textarea>
  15. </form>
  16.  
  17. <?php break;
  18.  
  19. case'edycja_po' :
  20. $dane = $_SESSION['dane'];
  21. ?>
  22. <form action="<?php $strona ?>?zmienna=<?php echo 'podglad_po'; ?>&zmienna2=<?php echo 'podglad_po'; ?>" method="post">
  23.  
  24. <textarea class="ckeditor" id="editor1" name=dane>
  25. <?php echo $dane; ?>
  26. </textarea>
  27.  
  28. </form>
  29. <?php break;
  30.  
  31. case'podglad_po' :
  32.  
  33. $_SESSION['dane'] = $dane;
  34. echo $dane;
  35.  
  36. break;
  37.  
  38. case'zapis' :
  39.  
  40. $dane = $_SESSION['dane'];
  41. echo $dane;
  42. strony_edytuj_dane_tresc($strona, $dane);
  43.  
  44. break;
  45.  
  46. case'podglad_przed' :
  47. strony_pobierz_dane_tresc($strona);
  48. break;
  49.  
  50. default:
  51.  
  52. strony_pobierz_dane_tresc($strona);
  53.  
  54. break;
  55. }
  56.  
  57. }else {
  58. strony_pobierz_dane_tresc($strona);
  59.  
  60. }
  61. }

zmienna "dane" przesyła dane do funkcji którą odbiera i je wyświetla lub edytuje w zależności który case jest wykonywany.
Funkcja case:
1 - case: "edycja_przed" to wyświetlanie danych w edytorze pobranych z bazy (przed edycją), - następuje po kliknięciu przyciski Zapisz w edytorze kiedy strona się przeładowuje a zmodyfikowane dane za pomocą $dane = $_POST['dane']; trafiają do zmiennej $dane i wywołuje się
2 - case: "podglad_po" gdzie zmienną $dane zapisuje się w sesji i wyświetla podgląd zmodyfikowanego tekstu. Dane są wpisywane do sesji gdyż użytkownik może wrócić i zmodyfikować to co zmienił przed chwilą - wtedy wywoła się case: "edycja_po" -> w takim przypadku po ponowny przesłaniu treści do edycji kod strony znowu się zmodyfikuję i wygląda tak:
  1. <p> <img alt="\" height="\" images="" src="\" width="\" /><img alt="\" height="\" images="\" src="\" width="\" /></p>
  2. <p> przykładowy teskt !</p>

ścieżka do pliku całkowicie zniknęła sad.gif
Case: "zapis" zapisuje dane w bazie a case: "podglad_przed" pokazuje ogólny podgląd strony po zapisaniu.
Dziwne jest też to że jeśli wstawię zdjęcie i one wyświetli mi się w edytorze, kliknę na Zapisz gdzie wyświetli mi się już podgląd na którym nie mam tego zdjęcia, następnie klikam na zapisz by zapisało mi się to w bazie danych i gdy wyświetlam stronę internetową która pobiera dane z bazy to obrazek się pojawia smile.gif

Tak naprawdę nie wiem gdzie jest błąd... prawdo dobnie php modyfikuje mi znaki jak je przesyłam.
Będę bardzo wdzięczny za wskazówkę lub pomoc jak rozwiązać ten problem.
ps. jak coś jest nie jasne to z góry przepraszam.. jak by co to mogę umieścić gdzieś przykład do testów.
erix
Cytat
Po przesłaniu danych za pomocą zmiennej zostały wstawione znaki \" w ścieżce. Nie wiem w gdzie jest błąd? czy to wina edytora czy gdzieś w php. Na localu działa dobrze, oraz testowałem inną wersje edytora (stabilną - i to samo).

Nie masz gdzieś magic_quotes włączone?
bleeder
Dzięki wielkie za podpowiedź - to było to!

Tak dla informacji sprawdziłem za pomocą skryptu:
  1. <?php
  2. ?>

czy mam włączone te funkcje - gdzie:
"magic_quotes_gpc dodaje nam backslashe w tablicach Get, Post oraz Cookie przed znakami cudzysłowów"
a "magic_quotes_runtime tak samo jak wyżej, ale dodaje backslashe w danych z zewnętrznych źródeł (baza mysql, otwierane pliki)"

Wynik skryptu pokazał mi 1 0 czyli pierwsza funkcja była włączona sad.gif
Próbowałem dokonać zmian za pomocą pliku ini.php i wpisu
  1. magic_quotes_gpc =Off

ale to nie zadziałało. Pomógł plik .htaccess i wpis:
  1. php_flag magic_quotes_gpc off
  2. php_flag magic_quotes_runtime off

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.