Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][sql] Apostrof w pasku adresu
banki
post 21.12.2013, 19:16:35
Post #1





Grupa: Zarejestrowani
Postów: 109
Pomógł: 1
Dołączył: 23.11.2007

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


Witam,

mam problem i dość długo się z nim męczę.

Mam adres strony adres.pl/1,1-Wydarzenia sa tam 2 zmienne, pierwsza z cyfr to numer kategorii a druga to cyfra do stronicowania, obie pobierane za pomocą GET

Jeśli zmienię adres na adres.pl/'1,1-Wydarzenia nic szczególnego sie nie dzieje, po prost nie wyświetlają się artykuły z tej kategorii

jeśli zaś do adresu dodam apostrof w innym miejscu, i tylko w tym adres.pl/1,'1-Wydarzenia wyświetla mi się błąd:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in D:\WebServ\httpd\adres.pl\kategoria_91.php on line 32

Nie chciałbym aby taki błąd się wyświetlał, co moge na to poradzić? Z góry dzięki za pomoc


Dodam jeszcze że tej zmiennej przy której wywala się błąd ($str) używam do takiego zapytania:

$limit = 18;
$limit2 = ($str*$limit-$limit);
$lista = mysql_query("SELECT * FROM artykul WHERE kategoria = '$kat' ORDER BY data_66 DESC LIMIT $limit2, $limit");

Ten post edytował banki 21.12.2013, 19:20:10
Go to the top of the page
+Quote Post
Turson
post 21.12.2013, 19:26:07
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


http://pl.wikipedia.org/wiki/SQL_injection...e_przed_atakiem
Go to the top of the page
+Quote Post
banki
post 21.12.2013, 19:40:55
Post #3





Grupa: Zarejestrowani
Postów: 109
Pomógł: 1
Dołączył: 23.11.2007

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


Próbowałem już użyć addslashes() ale nie działa to jeśli ktoś dopisze do paska adresu ten apostrof, no chyba że źle tej funkcji używałem. Gdzie jej użyć? Przy pobieranej zmiennej GET?
Go to the top of the page
+Quote Post
Turson
post 21.12.2013, 20:17:49
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Sprawdzaj czy zmienna z $_GET jest liczbą całkowitą, rzutuj a najlepiej zainteresuj się PDO
Go to the top of the page
+Quote Post
wujek2009
post 21.12.2013, 21:27:08
Post #5





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

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


  1. (....)
  2.  
  3. $kat = (Integer) $_GET['kategoria'];
  4. $strona = (Integer) $_GET['strona'];


Jeśli wiesz, że dane MUSZĄ być wartościami liczbowymi to zrób tzn. rzutowanie - ktoś kto wpiszę inną wartość niż cyfra to wówczas $kat/$strona zwróci Ci zero.
Poza tym już na etapie budowania regułek w .htaccess możesz zdefiniować jakie znaki mogą wejść na wejście - http://sf.jogger.pl/2007/05/02/mod-rewrite-w-przykladach/
Go to the top of the page
+Quote Post
sajegib
post 21.12.2013, 21:48:45
Post #6





Grupa: Zarejestrowani
Postów: 352
Pomógł: 59
Dołączył: 16.01.2013

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


a nie przypadkiem (int) ?
Go to the top of the page
+Quote Post
banki
post 22.12.2013, 01:33:35
Post #7





Grupa: Zarejestrowani
Postów: 109
Pomógł: 1
Dołączył: 23.11.2007

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


dzięki wujek, troche mi to pomogło, zrobiłem coś takiego i apostrofy w pasku adresu nie sa raczej straszne

$kat = mysql_escape_string($_GET["kat"]);
$str = (integer)($_GET["str"]);
if($str<="0") { $str="1"; }

gdy integer dawało wynik 0 to tez byl blad, ale if pomogło smile.gif

myślicie ze to dobre rozwiązanie? adresy plików php dalej są ukryte

Ten post edytował banki 22.12.2013, 01:49:22
Go to the top of the page
+Quote Post
Damonsson
post 22.12.2013, 09:01:52
Post #8





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Nie.

Używaj PDO lub MySQLi
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: 19.06.2025 - 06:37