Master Pain
17.03.2010, 15:58:14
Witam
Na serwerze może być (lub nie) włączone magic quotes gpc.
Chciałbym, jeżeli jest to możliwe, na poziomie każdego obiektu formularza dodawać filtr, w którym będę miał sprawdzanie, czy magic quotes są włączone, jeżeli tak, to stripuje slashe. Problem nie leży w zbudowaniu filtra (to wiem co i jak) tylko w dodaniu go do każdego pola formularza (wybranych typów pól - najlepiej) z automatu, żebym nie musiał się tym zajmować przy każdym polu w każdym formularzu, lub przy odbieraniu danych.
Czy da się takie coś zrobić?
Pozdrawiam!
UPDATE
Wpadłem na pomysł, żeby zrobić klasy (dla pól tekstowych i textarea), które dziedziczą po Zend_Form_Element_Text/Textarea i dodać im ten filtr. Czy takie rozwiązanie jest sensowne? Czy ZF ma w zanadrzu jakieś ustawienie, z którego można skorzystać?
fander
18.03.2010, 10:16:28
Witam
Chcesz dane przefiltrować w takim razie musisz dodać do pola które chcesz filtrować obiket filtrujący w takim razie musisz stworzyć klasę
class magicQuotesFilter extends Zend_Filter {
public function filter($value){
if(get_magic_quotes_gcp){
return stripMagicQuotes($value);
}
else return $value;
}
}
w w formulazu robisz
$pole->addFilter(new magicQuotesFilter());
oczywiście w klasie magicQuotesFilter metodę stripMagicQuotes($value); musisz napisać sobie sam
Master Pain
19.03.2010, 09:34:54
Witam
Dziękuję za pomoc, ale nie jest to do końca rozwiązanie o które mi chodzi, bo nadal muszę dodać filtr do pola formularza, a chciałbym określić to raz w aplikacji i nie zajmować się tym więcej.
Zadam pytanie raz jeszcze: czy dobrym rozwiązaniem jest utworzenie klas dla w/w pól które dziedziczą po klasach z ZF i w tych moich klasach automatycznie dodać filtr? Potem już tworzyć obiekty moich klas - wówczas filtr mam od razu zaaplikowany. Czy jest już jakieś rozwiązanie w ZF, z którego mogę skorzystać?
viking
19.03.2010, 09:49:41
A nie łatwiej to do .htaccess dopisać? php_flag magic_quotes_gpc 0 czy jakoś tak.
Master Pain
19.03.2010, 09:56:30
Hmm... a czy jest szansa, że nie będę mógł tego ustawić? Jeżeli tak, to nadal potrzebowałbym ustawić to w ZF, ale dzięki.
Master Pain
19.03.2010, 11:00:04
Hmm... w sumie, mało który dostawca uniemożliwia zmiany w ustawieniach PHP. Dzięki viking.
pc3t
23.03.2010, 20:13:56
Manual helpa też czasami daje ciekawe odpowiedzi:
http://www.php.net/manual/en/security.magi...s.disabling.phpw index.php (przed załadowaniem zenda wrzuć ten kod):
<?php
$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST); while (list
($key, $val) = each($process)) { foreach ($val as $k => $v) {
unset($process[$key][$k]); } else {
}
}
}
}
?>