Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pobieranie wyników z bazy, co 10
Jarod
post
Post #1





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Przykład: Jakaś instrukcja SELECT, która pobiera dane i wyświetla na ekranie. Zastanawiam się w jaki sposób to zrobić. Do głowy przychodzą mi 2 sposoby.

1 sposób: Pobrać wszystkie dane i wyświetlać za pomocą pętli 10 wyników. Pod wynikami jest opcja Następne i Poprzednie

2 sposób: Pobierać z bazy tylko 10 wyników, a kiedy użytkownik kliknie np Następne to skrypt z bazy pobiera kolejne 10 wyników. Zastosowałbym tutaj ocję LIMIT.

Który sposób Waszym zdaniem jest lepszy?

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
kszychu
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Drugi.
Go to the top of the page
+Quote Post
nospor
post
Post #3





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




Przychylam się do opini Kszycha, Drugi sposób jest zdecydowanie lepszy. NIe ma sensu bez potrzeby przetwarzać wszystkich danych
Go to the top of the page
+Quote Post
Jarod
post
Post #4





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Dziękuje

Pozdrawiam
Go to the top of the page
+Quote Post
-Gość_J4r0d-
post
Post #5





Goście







A jak coś takiego zrobić? Bo jakoś nie mogę sobie z tym poradzić..
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


wiec... to jest problem 'porcjowania' danych (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
bylo poruszane na forum 100 razy ale podpowiem Ci conieco...

twoje zapytanie np:
  1. "SELECT costam
  2. FROM costam"

zamień na:
  1. "SELECT costam
  2. FROM costam LIMIT ".$porcja.",10";

  1. <?php
  2.  
  3. $porcja = (string)$_GET['porcja'];
  4.  
  5. ?>

wywołanie np:
Kod
http://www.twoja.strona.pl/pokaz.php?porcja=0
http://www.twoja.strona.pl/pokaz.php?porcja=10
http://www.twoja.strona.pl/pokaz.php?porcja=50


oczywiscie brakuje tu duzo, jest to bardzo niebezpieczne rozwiązanie, ale ilustruje zasadę dzialania.
Go to the top of the page
+Quote Post
Jarod
post
Post #7





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Z tym LIMIT to czaje (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Cytat
  1. <?php
  2.  
  3. $porcja = (string)$_GET['porcja'];
  4.  
  5. ?>

wywołanie np:
Kod
http://www.twoja.strona.pl/pokaz.php?porcja=0
http://www.twoja.strona.pl/pokaz.php?porcja=10
http://www.twoja.strona.pl/pokaz.php?porcja=50


oczywiscie brakuje tu duzo, jest to bardzo niebezpieczne rozwiązanie, ale ilustruje zasadę dzialania.

Ale dlaczego przez GET. Nie można zrobić w pętli? Tzn wypisuje 10 wyników i są dwa buttony (poprzednie, natępne). Wszystko oparte na formularzu..
I co miałeś na myśli pisząc, że jest niebezpieczne?
Go to the top of the page
+Quote Post
Peter Riley
post
Post #8





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 7.05.2005

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


Cytat(J4r0d @ 2005-05-08 11:07:49)
Ale dlaczego przez GET. Nie można zrobić w pętli? Tzn wypisuje 10 wyników i są dwa buttony (poprzednie, natępne). Wszystko oparte na formularzu..
I co miałeś na myśli pisząc, że jest niebezpieczne?

Proponuję pomyśleć czym się różni server-side od client-side.
Potencjalnie niebezpieczne, bo pole z query jest wklejane do zapytania SQL, ale latwo sie przed tym zabezpieczyc.
Go to the top of the page
+Quote Post
Jarod
post
Post #9





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(Peter Riley @ 2005-05-08 11:41:14)

Cytat
Proponuję pomyśleć czym się różni server-side od client-side.

Wiem czym się różni. Ale nie widzę powodu dla którego moje rozwiązanie nie byłoby poprawne (IMG:http://forum.php.pl/style_emoticons/default/dry.gif)
Cytat
Potencjalnie niebezpieczne, bo pole z query jest wklejane do zapytania SQL, ale latwo sie przed tym zabezpieczyc.

Poprzez warunki sprawdzające? Czy może jakieś inne rozwiązanie?

Pozdrawiam
Go to the top of the page
+Quote Post
Ociu
post
Post #10





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Cytat(J4r0d @ 2005-05-08 13:50:14)
Poprzez warunki sprawdzające? Czy może jakieś inne rozwiązanie?

Przeczytaj to.
Go to the top of the page
+Quote Post
Jarod
post
Post #11





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(Ociu @ 2005-05-08 11:59:27)
Cytat(J4r0d @ 2005-05-08 13:50:14)
Poprzez warunki sprawdzające? Czy może jakieś inne rozwiązanie?

Przeczytaj to.

Dziękuje. Przeczytałem bardzo uważnie. Kiedyś już czytałem o tych atakach, ale jeszcze nie pisałem żadnego poważnego projektu. W topicu do którego podałeś lika, każdy podaje swoje pomysły. Nie wiem któy jest najlepszy, bo nigdy nie sprawdzałem, ale chyba ostatni (szkoda że go nie kumam:P ).

Ja w formularzach stosuje strip_tags. Próbowałem w formularzu wpisać np. drop table users i zapisać taki formularz. Oczywiście nic złego się nie stało. Czyli rozuiem, żę ataki SQL Injection jest niebezpieczne przez odpowiednie zmodyfikowanie URLa? Prze formularze się nie da?
Ja korzystam z sesji i zmiennych przesyłanych przez $_POST, więc problem chyba mnie nie dotyczy (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Jeśli jestem w błędzie to proszę poprawcie mnie - projekt musi być bezpieczny
Go to the top of the page
+Quote Post
-Gość_J4r0d-
post
Post #12





Goście







Proszę doradźcie sposób na zabezpieczenie przed takimi atakiami. COś nieskomplikowanego ale skutecznego
Go to the top of the page
+Quote Post
Jarod
post
Post #13





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(ActivePlayer @ 2005-05-08 02:06:48)
wiec... to jest problem 'porcjowania' danych (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
bylo poruszane na forum 100 razy ale podpowiem Ci conieco...

Zmieniłem zapytanie na
  1. "SELECT costam
  2. FROM costam LIMIT ".$porcja.",10";


Linki mam następujące:
  1. <a href="przegladajlogi.php?porcja=$tyl?<?=SID?>" target="wiz"><< Poprzednie</a>
  2. <a href="przegladajlogi.php?porcja=$przod?<?=SID?>" target="wiz">Nastepne >></a>


a w kodzi php dopisałem coś takiego:
  1. <?php
  2.  
  3. $porcja = (string)$_GET['porcja'];
  4. if ( $porcja == &#092;"\" )
  5. {
  6. $porcja = &#092;"0\";
  7. }
  8.  
  9. ?>


I problem w tym, że nie wiem jak zrobić, że gdy użytkownik naciśnie link "Następne" to zwiększe $przod o 10, a jak "Poprzednie" to zmienię $tył o 10. Jednocześnie tego nie mogę zrobić? Jak sprawdzić które wybrał?
Skrypt wywołuje sam siebie
Go to the top of the page
+Quote Post
mario
post
Post #14





Grupa: Zarejestrowani
Postów: 186
Pomógł: 0
Dołączył: 23.09.2003
Skąd: Siemianowice Śląskie

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


zapoznaj się z tym Ilość odpowiedzi na stronie?, jak to zrobić? tam masz gotowe rozwiązanie
Go to the top of the page
+Quote Post
Jarod
post
Post #15





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(mario @ 2005-05-08 18:20:29)
zapoznaj się z tym Ilość odpowiedzi na stronie?, jak to zrobić? tam masz gotowe rozwiązanie

Wielkie dzięki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pozdrawiam
Go to the top of the page
+Quote Post

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: 14.10.2025 - 10:33