Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] zmienna GET a zapytanie do bazy mysql
!*!
post
Post #1





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


tak dla sprawdzenia jak to działa robię wyszukiwarkę, po wpisaniu do inputa przesyłam to getem do bazy, ale mam kilka pytań związanych z takimi zapytaniami.

  1. <?php
  2. //pobranie szukanego słowa ze zmiennej wysłanej inputem
  3.  
  4. $wynik = ucp(wds($_GET['wyszukaj']));
  5.  
  6. // dalej zapytanie do mysql odwołujące się do zmiennej $wynik
  7. ?>


fukncja ucp:

  1. <?php
  2. function ucp($zrodlo){
  3. $zrodlo = preg_replace("//",'',$zrodlo);
  4. $zrodlo = preg_replace("/\"/",'',$zrodlo);
  5. $zrodlo = preg_replace("/'/",'',$zrodlo);
  6. $zrodlo = preg_replace("/</",'',$zrodlo);
  7. $zrodlo = preg_replace("/>/",'',$zrodlo);
  8. $zrodlo = preg_replace("/=/",'',$zrodlo);
  9. $zrodlo = preg_replace("/%/",'',$zrodlo);
  10. $zrodlo = preg_replace("/--/",'',$zrodlo);
  11. $zrodlo = strtolower($zrodlo);
  12. $zrodlo = trim($zrodlo);
  13. return $zrodlo;
  14. }
  15. ?>


funkcja wds:

  1. <?php
  2. function wds($zrodlo){return htmlspecialchars(mysql_real_escape_string(trim($zrodlo)));}
  3. ?>


Może tak być, aby zapytanie do bazy było prawidłowe? Bez żadnych niespodzianek z wysłaniem spreprawowanego kodu

Idąc dalej chciałbym wyświetlić ten wyraz który podałem w inpucie jako echo, czyli

  1. <?php
  2. echo $wynik;
  3. ?>


ale tu mam zgryz bo, jeśli wpiszę taki wyraz:

Kod
coś"tam"\/\\\/'zczcx'


w adresie strony jest:

Kod
co%C5%9B%22ta%22%5C%2


to powinny zostać usuniętę wszytkie znaki, \ " i ' ale nie ma tak dobrze i zostaje sam cudzysłów, pomimo że fukncja powinna go usunąć...

Jak zbudować odpowiednie filtrny aby wyraz był wysyłany bezpiecznie do bazy a wywietlany czysty bez znaków " i ' ?

przy próbie odczu w takiej formie:

  1. <?php
  2. function ozs($zrodlo){return stripslashes(trim($zrodlo));}
  3.  
  4. echo ozs($wynik);
  5. ?>


Nadal nie ma czystego wyrazu...

Ten post edytował !*! 10.12.2008, 18:50:08


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Wystarzczy SAMO http://php.net/mysql_real_escape_string


--------------------
Go to the top of the page
+Quote Post
sowiq
post
Post #3





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


A na przyszłość do zamiany/wyrzucenia pojedynczego znaku ze stringa używaj str_replace()
Go to the top of the page
+Quote Post
!*!
post
Post #4





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Kod
function ucp($zrodlo){
$zakaz = array("\\","\"","<",">","'","%","=");
$zrodlo = str_replace($zakaz, "", $zrodlo);
$zrodlo = trim($zrodlo);
return $zrodlo;
}


I tak ma być jak chce usunąć sam \ to wpisuje \\? a nie jak w przypadku /\\\/ ? Poza tym dlaczego wymagany jest przy tym / a przy innych znakach już nie?

Poza tym nadal nie wiem dlaczego nie usuwa znaku cudzysłowia oraz < > ze stringu który chce wyświetlić


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Pilsener
post
Post #5





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


1. mysql_real_escape_string - zabezpieczy przed sql injection
2. urlencode - zakoduje znaki specjalne w adresie

Ja nie lubię przekazywać w adresie takich rzeczy - najczęściej wrzucam kryteria do bazy (bo i tak robię staty, co, kto i keidy szuka etc.), a w adresie wystarczy dać: kryteria=1234 - nowe szukanie to nowe id.

Ten post edytował Pilsener 11.12.2008, 19:50:17
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 08:57