Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Bład przy wysyłce $_POST w Kohanie ?
Forum PHP.pl > Forum > Przedszkole
haryb
Napotkałem taki problem.
W kohanie mam wrzucony CKeditor i poprzez ajaxa zapisuje dane z ckeditora.
W ajaxie mam zdefiniowane wysyłanie POST i wszystko chodzi ok jak wpisuje z palca kilkadziesiąt linijek.
Ale jak np juz zrobię kopy - wklej jakiś blok nawet nie duży z np. strony internetowej to po wrzuceniu do ckeditora - i kliknięciu zapisz - dostaje zwrotkę z błędem:


"Disallowed key characters in global data"

Nie wiem za bardzo gdzie tego błedu szukać i jak go obejść. Czy on jest związany bezpośrednio z KOHANA czy samym php?
A może js który wysyła mi ajaxowo coś knoci?


Przed chwilą znalazłem w samej kohanie w helperze jednym taki kod:
  1. /**
  2. * This is a helper method. It enforces W3C specifications for allowed
  3. * key name strings, to prevent malicious exploitation.
  4. *
  5. * @param string string to clean
  6. * @return string
  7. */
  8. public function clean_input_keys($str)
  9. {
  10. $chars = PCRE_UNICODE_PROPERTIES ? '\pL' : 'a-zA-Z';
  11.  
  12. if ( ! preg_match('#^['.$chars.'0-9:_.-]++$#uD', $str))
  13. {
  14. exit('Disallowed key characters in global data.');
  15. }
  16.  
  17. return $str;
  18. }

Wrzuciłem zeby wyświetlał mi razem z komunikatem zmienna $str i np wyszło takie coś:
"Disallowed key characters in global data.oacute;wi_Ryszard_Bugaj,_były_społeczny_doradca_prezydenta_Lecha_Kaczyńskie
go_</b></p>
<span_id"

Czy to chodzi o jakieś specjalne znaki - niedozwolone czy cos w tym stylu? czy można to w ogóle jakoś wyłaczyć by tego nie sprawdzał? Czy raczej nie?



Za wszelką pomoc będę wdzięczny.
ziqzaq
Rozszerz sobie klasę Input i przeładuj tą metodę. Kohana poprosu filtruje wszystkie klucze tablicy.
haryb
Stworzyłem klase w libraries :
MY_Input.php

  1. <?php defined('SYSPATH') or die('No direct script access.');
  2.  
  3. class Input extends Input_Core {
  4.  
  5. public function __construct()
  6. {
  7. parent::__construct();
  8. }
  9.  
  10. public function clean_input_keys($str){
  11. }
  12. }
  13. ?>


Tylko nie wiem co mam dokładnie zdefiniowac w tej metodzie - jak ja pusta zostawiłem tak jak teraz to nic sie nie zmieniło.
To znaczy wrzuciłem jakis tam kopiowany tekst z strony (np. jakis artykul na wp.pl) i to nawet nie super długi i ok - błedem już tym nie rzuca ale i tak ucina tekst na jakims znaku i zapisze jedna linijke lub dwie.
Może tutaj by trzeba bylo jakos kodowac ta wartosc z ckeditora co idzie postem? zeby jakies specjalne znaki, encje itd przesłał poprawnie?

Pozdro
Hary

ziqzaq
Ogólnie to dziwne, że to działa bo twoja metoda nie zwraca żadnego ciągu znaków.
  1. public function clean_input_keys($str){
  2. return $str; // <===
  3. }

Jeśli to problem z danymi z $_POST to może wyświetl sobie tą tablice przed uruchomieniem frameworka (w bootstrapie) i zobacz co ona zawiera.
Ewentualnie może ustaw $config['global_xss_filtering'] na FALSE?
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.