Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> escape_string, Automatyczne traktowanie danych przrz mysql_escape_strng
JohnySpot
post 20.09.2006, 08:23:44
Post #1





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 9.09.2003
Skąd: Włocławek

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


Chciałbym rozszerzyć sobie mysqli o swoje własne query - takie, które wszystkie dane potraktuje mi przez escape_string i przez htmlspecialchars ENT_QUOTES. Ale nie mam zielonego pojęcia jak to wykonać.


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
hwao
post 20.09.2006, 14:58:17
Post #2


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




Na szybko pisane:

  1. <?php
  2. /**
  3.  * Query
  4.  * 
  5.  * Pierwszy parametr to kod SQL, w ktorym kolejne znaki ? zostaja
  6.  * zastapione w kolejnosci podania parametrow. Dodatkowo parametry zastapiane pr
    zez ? sa potraktowane mysql_escape_string() i htmlspecialchars()
  7.  *
  8.  * @param string $sSql
  9.  * @return resource
  10.  */
  11. function query( $sSql ) {
  12. $aParams = func_get_args();
  13. $i=1;
  14.  
  15. $sSql = preg_replace( '@?@es', 'mysql_escape_string( htmlspecialchars( $aParams[$i++], ENT_QUOTES ) )', $sSql, count( $aParams ) );
  16.  
  17. return $sSql; //mysql_query( $sSql );
  18. }
  19.  
  20. echo query( 'Select * from ? where pole = ?', 'tabela', 1 );
  21. ?>
Go to the top of the page
+Quote Post
JohnySpot
post 20.09.2006, 15:04:45
Post #3





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 9.09.2003
Skąd: Włocławek

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


Dzięki, ale nie o to mi chodziło. Mi chodziło o napisanie czegoś co dawałoby sobie radę z normalnym zapytanie smile.gif takim już gotowym. Bez odatkowej tablicy parametrów.


--------------------
Go to the top of the page
+Quote Post
hwao
post 20.09.2006, 19:58:05
Post #4


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




Potencjalnie jest to możliwe, ale praktycznie bardzo ciezko i sie nie oplaca. Skrypt musial by parsowac INTELIGENTNIE sql do drzewka, nastepnie odpowiednie czesci prze filtrowac i na koncu zlozyc SQL. Samo napisanie kodu odpowiedzialnego za zamiene sql na drzewko to juz spore wyzwanie a co dopiero "system domyslania sie co jest co".

Te rozwiazanie co podałem jest najlepsze
Go to the top of the page
+Quote Post
JohnySpot
post 21.09.2006, 07:59:02
Post #5





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 9.09.2003
Skąd: Włocławek

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


a czy gdybym całe $query włażył w $query = mysql_escape_string($query); questionmark.gif


--------------------
Go to the top of the page
+Quote Post
nospor
post 21.09.2006, 08:03:19
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No to by bylo niepowazne winksmiley.jpg

  1. SELECT * FROM tabela WHERE pole='ala'

A po Twojej operacji by to wygladalo tak:
  1. SELECT * FROM tabela WHERE pole=\'ala'

Bład skladni sql. Filtruje i zamienia sie pola, a nie cale zapytanie


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
hwao
post 21.09.2006, 13:11:51
Post #7


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




mysql_escape_string" title="Zobacz w manualu php" target="_manual() jest po to zeby zamienic wszyskie znaki wystepujace w skladni SQL na "bezpieczne odpowiedniki" ktore nie sa interpretowane przez paser kodu SQL. Także jak dasz cały string, to zostanie on zamieniony na forme kompletnie "ingorowana"
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 Wersja Lo-Fi Aktualny czas: 18.07.2025 - 16:24