Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie wyników z bazy
Forum PHP.pl > Forum > Przedszkole
Jarod
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
kszychu
Drugi.
nospor
Przychylam się do opini Kszycha, Drugi sposób jest zdecydowanie lepszy. NIe ma sensu bez potrzeby przetwarzać wszystkich danych
Jarod
Dziękuje

Pozdrawiam
Gość_J4r0d
A jak coś takiego zrobić? Bo jakoś nie mogę sobie z tym poradzić..
ActivePlayer
wiec... to jest problem 'porcjowania' danych 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.
Jarod
Z tym LIMIT to czaje 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?
Peter Riley
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.
Jarod
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 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
Ociu
Cytat(J4r0d @ 2005-05-08 13:50:14)
Poprzez warunki sprawdzające? Czy może jakieś inne rozwiązanie?

Przeczytaj to.
Jarod
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 tongue.gif

Jeśli jestem w błędzie to proszę poprawcie mnie - projekt musi być bezpieczny
Gość_J4r0d
Proszę doradźcie sposób na zabezpieczenie przed takimi atakiami. COś nieskomplikowanego ale skutecznego
Jarod
Cytat(ActivePlayer @ 2005-05-08 02:06:48)
wiec... to jest problem 'porcjowania' danych 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
mario
zapoznaj się z tym Ilość odpowiedzi na stronie?, jak to zrobić? tam masz gotowe rozwiązanie
Jarod
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 smile.gif

Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.