Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework] Automatyczne filtrowanie danych
Forum PHP.pl > Forum > PHP > Frameworki
Master Pain
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
Witam

Chcesz dane przefiltrować w takim razie musisz dodać do pola które chcesz filtrować obiket filtrujący w takim razie musisz stworzyć klasę

  1. class magicQuotesFilter extends Zend_Filter {
  2. public function filter($value){
  3. if(get_magic_quotes_gcp){
  4. return stripMagicQuotes($value);
  5. }
  6. else return $value;
  7. }
  8. }


w w formulazu robisz

$pole->addFilter(new magicQuotesFilter());

oczywiście w klasie magicQuotesFilter metodę stripMagicQuotes($value); musisz napisać sobie sam
Master Pain
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
A nie łatwiej to do .htaccess dopisać? php_flag magic_quotes_gpc 0 czy jakoś tak.
Master Pain
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.
viking
Masz też w ini_set();
Master Pain
Hmm... w sumie, mało który dostawca uniemożliwia zmiany w ustawieniach PHP. Dzięki viking.
pc3t
Manual helpa też czasami daje ciekawe odpowiedzi:
http://www.php.net/manual/en/security.magi...s.disabling.php

w index.php (przed załadowaniem zenda wrzuć ten kod):

  1. <?php
  2. $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
  3. while (list($key, $val) = each($process)) {
  4. foreach ($val as $k => $v) {
  5. unset($process[$key][$k]);
  6. if (is_array($v)) {
  7. $process[$key][stripslashes($k)] = $v;
  8. $process[] = &$process[$key][stripslashes($k)];
  9. } else {
  10. $process[$key][stripslashes($k)] = stripslashes($v);
  11. }
  12. }
  13. }
  14. unset($process);
  15. }
  16. ?>
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.