Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Skrypt nie zwraca wartości
Forum PHP.pl > Forum > Przedszkole
patryk9200
Cześć,
Zrobiłem sobie skrypt oczyszczajacy tablice z niechcianych kodów np. javascript html itp. i mam taki problem, że powinien mi w wypadku gdy usunie z ciągu typ danych zakazanych to powinien wyskoczyć komunikat jaki to typ itp. czyści natomiast bardzo skutecznie. Oto kod:
  1. <?php
  2. $security['java'] = 0;
  3. $security['html'] = 0;
  4. $security['style'] = 0;
  5. $security['cdata'] = 0;
  6. $security['mysql'] = 0;
  7. function CleanScript($tekst,$jv=TRUE,$htm=TRUE,$css=TRUE,$cd=TRUE,$mysql=TRUE){
  8. global $security;
  9. $java = array('@<script[^>]*?>.*?</script>@si'); // javascript
  10. $html = array('@<[\/\!]*?[^<>]*?>@si'); // html
  11. $style = array('@<style[^>]*?>.*?</style>@siU'); // css
  12. $cdata = array('@<![\s\S]*?--[ \t\n\r]*>@'); // CDATA
  13. $txt = $tekst;
  14. $e = $tekst;
  15. if ($htm == 1){$tekst = preg_replace($html, '', $tekst); $security['html'] = strcmp($e,$tekst);};
  16. $q = $tekst;
  17. if ($jv == 1){$tekst = preg_replace($java, '', $tekst); $security['java'] = strcmp($q,$tekst);};
  18. $w = $tekst;
  19. if ($css == 1){$tekst = preg_replace($style, '', $tekst); $security['style'] = strcmp($w,$tekst);};
  20. $r = $tekst;
  21. if ($cd == 1){$tekst = preg_replace($cdata, '', $tekst); $security['cdata'] = strcmp($r,$tekst);};
  22. $t = $tekst;
  23. if ($mysql == 1){$tekst = mysql_escape_string($tekst); $security['mysql'] = strcmp($t,$tekst);};
  24. global $security;
  25. $txt = $tekst;
  26. return $txt;
  27. }
  28. $security['_post'] = serialize($_POST);
  29. $security['_get'] = serialize($_GET);
  30. foreach($_GET as $klucz => $wartosc)
  31. {
  32. $z = 'UnSec';
  33. $a = explode('_', $klucz);
  34. foreach($a as $value){
  35. if(eregi($value, $z))
  36. {
  37. $_GET[$klucz] = CleanScript($_GET[$klucz],FALSE,FALSE,FALSE,FALSE);
  38. } else
  39. {
  40. $_GET[$klucz] = htmlspecialchars(strip_tags(CleanScript($_GET[$klucz])));
  41. }
  42. }
  43. }
  44.  
  45. foreach($_POST as $klucz => $wartosc)
  46. {
  47. $z = 'UnSec';
  48. $a = explode('_', $klucz);
  49. foreach($a as $value){
  50. if(eregi($value, $z))
  51. {
  52. $_POST[$klucz] = CleanScript($_POST[$klucz],FALSE,FALSE,FALSE,FALSE);
  53. } else
  54. {
  55. $_POST[$klucz] = htmlspecialchars(strip_tags(CleanScript($_POST[$klucz])));
  56. }
  57. }
  58. }
  59.  
  60. $security['post'] = serialize($_POST);
  61. $security['get'] = serialize($_GET);
  62.  
  63. foreach($security as $klucz => $wartosc)
  64. {
  65. if ($wartosc == 1)
  66. echo '<h1>Zmienna zawiera niedozwolone treści: security error type:'.$klucz.'</h1>';
  67. }
  68. ?>
marcio
Cytat
Zrobiłem sobie skrypt oczyszczajacy tablice z niechcianych kodów np. javascript html itp


Samo htmlspecialchars() i strip_tags() + trim() wystarcza nie potrzebnie robisz tyl zamieszania chyba ze potrzebujesz oczyscic ze wszystkiego do jakiejs tam czynnosci.

patryk9200
potrzebuję oczyścić z wszystkiego, jak można zauważyć skrypt filtruje tablicę i elementy traktuje zależnie od nazwy, jeśli mają przedrostek UnSec_ to nie filtruje ich











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.