Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Niedozwolone znaki
unw
post
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 12.06.2008

Ostrzeżenie: (0%)
-----


Witam. mam pewien problem.

Posiadam formularz, który zapisuje wyniki do bazy danych. Problem pojawia się gdy są dodawane znaki specjalne typu: & ( ) < > itd.

chciałbym zabezpieczyć mój skrypt przed atakami.

Mam zrobione tak:


  1. $slowo=$_POST['slowo'];
  2.  
  3. $slowoz = strip_tags($slowo);
  4. ///$slowoz = mysql_real_escape_string($_POST['slowo']);
  5.  
  6. $ogonki = array("ę", "ó", "ą", "ś", "ł", "ż", "ź", "ć", "ń", "Ę", "Ó", "Ą", "Ś", "Ł", "Ż", "Ź", "Ć", "Ń", " ", "?");
  7. $bez_ogonkow = array("e", "o", "a", "s", "l", "z", "z", "c", "n", "E", "O", "A", "S", "L", "Z", "Z", "C", "N", "-","");
  8.  
  9. $nazwa_nopolish=str_replace($ogonki, $bez_ogonkow, $slowoz);
  10.  
  11. $nopolish_small = strtolower($nazwa_nopolish); //zmiana na małe litery
  12.  
  13. $zapytanie="SELECT * FROM `$baza` WHERE `tagi` = '$slowoz'" or die(mysql_error());
  14.  
  15. $wynikkoncowy = mysql_query($zapytanie);


w jaki sposób kontrolować niedozwolone znaki?
Chodzi o to, gdy ktoś wpisze: treść #(*@)#

to nie doda tego do bazy tylko odrzuci

jak to zrobic?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
unw
post
Post #2





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 12.06.2008

Ostrzeżenie: (0%)
-----


ma nie dodawać znaków specjalnych - jeżeli będzie przykładowo ala ma kota #(&*#*(&@!)_!) itd to usuwa znaki specjalne i dodaje ala ma kota samo, a jeżeli ktoś wpisze same znaki specjalne to ma odrzucić.

A może tak od początku.

Napisałem ala wyszukiwarkę tagów.

  1. <?php
  2. $_POST['slowo']=trim($_POST['slowo']);
  3.  
  4.  
  5. if(empty($_POST['slowo']))
  6.  
  7.  
  8. // funkcja sprawdza długość znaków i minimum.
  9. if (strlen($_POST['slowo']) < 4 or strlen($_POST['slowo']) > 25)
  10. {
  11. echo "Wyszukiwane słowo musi mieć minimum 4 znaki oraz maxymalnie 25 znaków.";
  12. return $_POST['slowo'];
  13. } // koniec
  14.  
  15. if(empty($_POST['slowo']))
  16.  
  17. echo 'Wpisz co chcesz szukać!';
  18. // jeśli jednak dane są wpisane poprawnie
  19. else
  20. {
  21. require ('db.php'); // wstawiamy dane configuracyjne do polaczenia z baza
  22. $slowo = mysql_real_escape_string(htmlspecialchars($_POST['slowo'])); //// tutaj filtruje dane
  23.  
  24. //////////
  25. //$slowo=$_POST['slowo'];
  26.  
  27. $slowoz = strip_tags($slowo);
  28. ///$slowoz = mysql_real_escape_string($_POST['slowo']);
  29.  
  30.  
  31.  
  32. $ogonki = array("ę", "ó", "ą", "ś", "ł", "ż", "ź", "ć", "ń", "Ę", "Ó", "Ą", "Ś", "Ł", "Ż", "Ź", "Ć", "Ń", " ", "?");
  33. $bez_ogonkow = array("e", "o", "a", "s", "l", "z", "z", "c", "n", "E", "O", "A", "S", "L", "Z", "Z", "C", "N", "-","");
  34.  
  35. $nazwa_nopolish=str_replace($ogonki, $bez_ogonkow, $slowoz);
  36.  
  37. $nopolish_small = strtolower($nazwa_nopolish); //zmiana na małe litery
  38.  
  39. $zapytanie="SELECT * FROM `$baza` WHERE `tagi` = '$slowoz'" or die(mysql_error());
  40.  
  41. $wynikkoncowy = mysql_query($zapytanie);
  42.  
  43. if(mysql_num_rows($wynikkoncowy)==0) // jezeli nie istnieje to dodajemy:
  44.  
  45. {// tutaj dodajemy jezeli nie ma w bazie:
  46.  
  47. $dodaje = "INSERT INTO $baza (tagi) VALUES ('$slowoz')" or die(mysql_error());
  48.  
  49. $wynik = mysql_query($dodaje);
  50.  
  51. }



problem pojawia się gdy np wpisuję w wyszukiwarce <script> to skrypt zaczyna szaleć. Tak samo dodają się znaki html typu
  1. <a href="http://">dddd</a>


Po prostu nie filtruje danych - co zrobić aby właśnie to zadziałało? gdzie błąd zrobiłem ?

Wiem, że w kodzie mam masło maślane, ale to moje początki w php.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 06:45