[PHP] Jeden skrypt pobierający i wyświetlający dane z bazy

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
KosmO
Posty: 4
Rejestracja: sob kwie 03, 2004 6:05 pm
Lokalizacja: Filipowice

[PHP] Jeden skrypt pobierający i wyświetlający dane z bazy

Post autor: KosmO »

Czy jest możliwe wykonanie JEDNEGO skryptu który pobiera dane z bazy danych (np.MySQL) i wyświetla je. Niewiem czy umiejętnie wyjaśniłem o co mi chodzi wieć dołanczam ten schemat.


klikam na link artykół1 --> skrypt pobiera zawartość artykółu1 --> i wyświetla go
klikam na link artykół2 --> TEN SAM skrypt pobiera zawartość artykółu2 --> i wyświetla go

Jeżeli da się coś takiego napisać to prosiłbym o pomoc jak?
Przemysław Szymik
Nowy
Nowy
Posty: 61
Rejestracja: sob gru 28, 2002 1:06 pm

Re: [PHP] Jeden skrypt pobierający i wyświetlający dane z bazy

Post autor: Przemysław Szymik »

Oczywiscie ze mozna. Może to Ci coś podpowie:
plik1.htm

Kod: Zaznacz cały

<a href="index.php?id=1">ArtykUl nr 1</a>
<a href="index.php?id=2">ArtykUl nr 2</a>
index.php
[php]<?php
$id=$_GET['id'];
$q=mysql_query("SELECT * FROM artykuly WHERE id ='$id'");
...

?>[/php]

Proponuje zwrócić uwagę na zmienną 'id'.
(to tak w skrocie wszystko, ale mysle ze zakumasz :)
FastRed
Nowy
Nowy
Posty: 43
Rejestracja: pn sie 11, 2003 5:31 pm
Kontakt:

Re: [PHP] Jeden skrypt pobierający i wyświetlający dane z bazy

Post autor: FastRed »

Po co tworzyć niepotrzebną zmienną?
[php]
<?php
$q=mysql_query('SELECT * FROM artykuly WHERE id ="'.$_GET['id'].'"');
...

?>
[/php]
Przemysław Szymik
Nowy
Nowy
Posty: 61
Rejestracja: sob gru 28, 2002 1:06 pm

Re: [PHP] Jeden skrypt pobierający i wyświetlający dane z bazy

Post autor: Przemysław Szymik »

Np. po to zeby sprawdzac co jest w srodku... a nie na slepo pchac do zapytania...
FastRed
Nowy
Nowy
Posty: 43
Rejestracja: pn sie 11, 2003 5:31 pm
Kontakt:

Re: [PHP] Jeden skrypt pobierający i wyświetlający dane z bazy

Post autor: FastRed »

[php]<?php
$id=$_GET['id'];
$q=mysql_query("SELECT * FROM artykuly WHERE id ='$id'");
...


?>[/php]

Gdzie w tym kodzie sprawdzasz czy zmienna zawiera jakieś niebiezpieczne znaki?
przecież zmienna id przyjmuje wartość zmiennej id przesyłanej metodą get. Na jedno wychodzi. Jeśli byś chciał, zeby było bezpieczniej to możesz zrobić tak:
[php]<?php
$q=mysql_query('SELECT * FROM artykuly WHERE id ="'.mysql_escape_string($_GET['id']).'"');
...

?>[/php]
ewentualnie na początek dać jakiegoś "erega" sprawdzającego czy zawartość zmiennej to same litery, czy też cyfry.
Przemysław Szymik
Nowy
Nowy
Posty: 61
Rejestracja: sob gru 28, 2002 1:06 pm

Re: [PHP] Jeden skrypt pobierający i wyświetlający dane z bazy

Post autor: Przemysław Szymik »

Oczywiscie ze w tym kodzie nigdzie nie ma sprawdzania zawartosci zmiennej $id, i tez nie pisalem ze jest.

Chodzi o to zeby nie uczyc ludzi wstawiania bezposrednio z tablicy $_GET, $_POST (i reszty) danych, poniewaz beda takie wpadki jak ostatnio w phpBB.

To ze powstaly w PHP tablice typu $_GET nie zwalnia programisty z odpowiedzialnosci za sprawdzanie co przychodzi z nich.
KosmO
Posty: 4
Rejestracja: sob kwie 03, 2004 6:05 pm
Lokalizacja: Filipowice

Re: [PHP] Jeden skrypt pobierający i wyświetlający dane z bazy

Post autor: KosmO »

Dzięki jak coś to jeszcze spytam
FastRed
Nowy
Nowy
Posty: 43
Rejestracja: pn sie 11, 2003 5:31 pm
Kontakt:

Re: [PHP] Jeden skrypt pobierający i wyświetlający dane z bazy

Post autor: FastRed »

dcooper pisze:Oczywiscie ze w tym kodzie nigdzie nie ma sprawdzania zawartosci zmiennej $id, i tez nie pisalem ze jest.

Chodzi o to zeby nie uczyc ludzi wstawiania bezposrednio z tablicy $_GET, $_POST (i reszty) danych, poniewaz beda takie wpadki jak ostatnio w phpBB.

To ze powstaly w PHP tablice typu $_GET nie zwalnia programisty z odpowiedzialnosci za sprawdzanie co przychodzi z nich.
Hmm, bzdury.

Po co inicjować nową zmienną, kiedy można operować na tej z tablicy POST lub GET. Przecież to Ci tylko zajmuje dodatkowe KB pamięci :/.
Ewentualnym rozwiązaniem jest rekurencja, czyli:
[php]<?php
$id = &$_POST['nazwa']
?>[/php]
Przemysław Szymik
Nowy
Nowy
Posty: 61
Rejestracja: sob gru 28, 2002 1:06 pm

Re: [PHP] Jeden skrypt pobierający i wyświetlający dane z bazy

Post autor: Przemysław Szymik »

Hmm, bzdura?
zajmuje dodatkowe KB pamięci
Tak, napewno z 5KB pamięci i 3s wykonywania skryptu.
Chyba nie zrozumiales sensu mojego posta. Wiec powtorze: NIE WSTAWIAC BEZPOSREDNIO Z TABLIC TYPU $_POST, $_GET do ZAPYTANIA MYSQL. To ze uzylem tam dodatkowej zmiennej nie ma wiekszego znaczenia, za to bezposrednie uzycie danych z tablicy wejsciowej jest juz conajmniej grozne.
dzieciol4
Nowy
Nowy
Posty: 120
Rejestracja: pt sie 23, 2002 8:22 am
Lokalizacja: Szczecin

Re: [PHP] Jeden skrypt pobierający i wyświetlający dane z bazy

Post autor: dzieciol4 »

Możesz przedstawić na poparcie swojej tezy jakies argumenty dcooper? Np. może jaskiś artykuł lub post na forum? O ile się nie myle to ostatni błąd phpbb nie polegał na tym, że wstawili tablicę bezpośrednio ale na tym, że użyli niepotrzebnego znaku łączenia .= ?
KosmO
Posty: 4
Rejestracja: sob kwie 03, 2004 6:05 pm
Lokalizacja: Filipowice

Re: [PHP] Jeden skrypt pobierający i wyświetlający dane z bazy

Post autor: KosmO »

Jak ma wyglądać struktura bazy danych i jak napisać skrypt który dodaje artykóly do bazy
Krzysztof Aszkiełowicz
Zaczyna działać
Zaczyna działać
Posty: 458
Rejestracja: pn maja 26, 2003 9:29 pm
Lokalizacja: Warszawa
Kontakt:

Re: [PHP] Jeden skrypt pobierający i wyświetlający dane z bazy

Post autor: Krzysztof Aszkiełowicz »

Panowie dcooper'owi chodziło o sprawdzanie zawartosci zmiennej pochodzącejz formularza takimi funkcjami jak htmlspecialchars lub strip_tags, lub podobne. Przed dodaniem tego do SQL'a lepiej sprawdzic, co userek wpisał. Nie mamy tu rozmawiać o czasie wykonywania skryptu czy zużycia pamięci.

KosmQ my mamy za Ciebie ten skrypt napisać?
Wiesz, zacznij czytać artykuły na http://php.webinside.pl 8)
KosmO
Posty: 4
Rejestracja: sob kwie 03, 2004 6:05 pm
Lokalizacja: Filipowice

Re: [PHP] Jeden skrypt pobierający i wyświetlający dane z bazy

Post autor: KosmO »

KosmQ my mamy za Ciebie ten skrypt napisać?
Nie ucze się pisać takie skrypy
Przemysław Szymik
Nowy
Nowy
Posty: 61
Rejestracja: sob gru 28, 2002 1:06 pm

Re: [PHP] Jeden skrypt pobierający i wyświetlający dane z bazy

Post autor: Przemysław Szymik »

Krzysztof-> dzieki, bo jak przeczytalem wczesniejszeg posta, to rece rozlozylem. A tak wogole to Wesolego Jajka to all;)
ODPOWIEDZ