Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] $_GET - kilka pytań
d.stp
post 31.07.2012, 10:48:37
Post #1





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 19.04.2012

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


Mam kilka pytań odnośnie tablicy $_GET

1. Czy takie coś jest bezpieczne:
  1. switch($_GET['page']) {
  2. case 'rejestracja':
  3. include('./includes/register.php');
  4. break;
  5. default:
  6. include('./includes/default.php');
  7. break;
  8. }

2. Robię mini cmsa i mam w pliku index.php takie coś jak wyżej i w miejscu gdzie mam content ładuje pliki z $_GET - to dobre rozwiązanie?

3. Mam na stronie podstronę artykuły i każdy artykuł ma swoje id i po wejściu np. w index.php?page=articles&id=2 ładuję artykuł z bazy danych mysql, a zabezpieczam tak:

  1. if ($_GET['page'] == 'articles' and is_numeric($_GET['id'])) // wyswietl artykul

jeszcze sprawdzam w bazie czy artykuł o takim ID istnieje:
  1. if (mysql_num_rows($id) == 0) // nie istnieje

takie coś wystarczy?

Przed sql_injection jestem zabezpieczony, korzystam z pdo. Te kody wyżej to tylko przykłady
Go to the top of the page
+Quote Post
wNogachSpisz
post 31.07.2012, 11:04:11
Post #2





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Obczaj to:
http://pear.php.net/manual/en/package.netw...er.features.php

Ten post edytował wNogachSpisz 31.07.2012, 11:04:27
Go to the top of the page
+Quote Post
d.stp
post 31.07.2012, 11:44:59
Post #3





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 19.04.2012

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


nie ogarniam tego ;/
Go to the top of the page
+Quote Post
markonix
post 31.07.2012, 12:00:21
Post #4





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


1. Tak. Zwykły switch..
2. Istnieją lepsze.
3. Rzutuj na INT id i po sprawie.
4. $id - dziwna nazwa dla zmiennej przechowującej tablice/obiekt artykułu.


--------------------
Go to the top of the page
+Quote Post
Evinek
post 31.07.2012, 12:02:25
Post #5





Grupa: Zarejestrowani
Postów: 280
Pomógł: 46
Dołączył: 23.03.2010

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


1 - jest okej, ale oczywiście można zrobić to lepiej. Ogólnie do miniCMS będzie raczej okej.
2 - Źle. Oddziel logikę od prezentacji. Poczytaj o klasach szablonów. http://forum.php.pl/index.php?showtopic=201664 - tu możesz przejrzeć trochę mojego kodu, może zrozumiesz.
3 - $id = (int)$_GET['id'] - chyba lepiej będzie. Ogólnie idziesz w dobrą stronę z zabezpieczeniami.
4 - Dobre sprawdzanie.

@DOWN:
Teraz widzę jak mało wiem. ;p

Ten post edytował Evinek 31.07.2012, 12:15:38
Go to the top of the page
+Quote Post
redeemer
post 31.07.2012, 12:14:38
Post #6





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


Cytat(Evinek @ 31.07.2012, 13:02:25 ) *
3 - $id = (int)$_GET['id'] - chyba lepiej będzie.
Lepiej i szybciej. Rzutowanie jest szybsze niż funkcja is_numeric wink.gif


--------------------
Go to the top of the page
+Quote Post
Niktoś
post 31.07.2012, 12:15:49
Post #7





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

Ostrzeżenie: (10%)
X----


Cytat
Mam na stronie podstronę artykuły i każdy artykuł ma swoje id i po wejściu np. w index.php?page=articles&id=2 ładuję artykuł z bazy danych mysql, a zabezpieczam tak

Cytat
Przed sql_injection jestem zabezpieczony, korzystam z pdo.

To używasz mysql czy pdo?

Warto by było rozważyć bloki try-catch.Skorzystać z opcji bindowania parametrów:
Cytat
sth->bindParam(':value', $opinion, PDO::PARAM_INT);

Jeśli parametr nie będzie typu int kwerenda w bloku try sie nie wykona,spowoduje błąd i nastąpi przejście do bloku catch,gdzie będziesz mógł przekierować na inną stronę lub wyświetlić wiadomość o błędzie.

Ten post edytował Niktoś 31.07.2012, 12:17:33
Go to the top of the page
+Quote Post
d.stp
post 31.07.2012, 12:16:52
Post #8





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 19.04.2012

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


Evinek, korzystam z systemu szablonów Smarty

markonix, dlaczego $id to dziwna nazwa?
Go to the top of the page
+Quote Post
Evinek
post 31.07.2012, 12:24:28
Post #9





Grupa: Zarejestrowani
Postów: 280
Pomógł: 46
Dołączył: 23.03.2010

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


Powinno być coś takiego:
  1. $result = mysql_query($query) or die(mysql_error());
  2. if(mysql_num_rows($result) > 0){
  3. $row = mysql_fetch_assoc($result);
  4. }


Chodzi o nazewnictwo zmiennych. Musi być wiadomo o co chodzi.
ID to może być do strony, użytkownika itp.

Ten post edytował Evinek 31.07.2012, 12:24:51
Go to the top of the page
+Quote Post
d.stp
post 31.07.2012, 12:31:47
Post #10





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 19.04.2012

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


a ok, tak jak pisałem to tylko przykład, u siebie mam inne nazwy, a to było pisane na szybko.

Żeby nie zakładać nowego tematu zapytam tutaj - jak pisałem korzystam z systemu szablonów i chciałbym się dowiedzieć czy dobrze robię rozbijając kod html na kilka plików, np. coś takiego:

{include file="header.tpl")
{include file="menu.tpl")
{include file="$content.tpl")
{include file="stats.php")
{include file="footer.tpl")

czy dobrze jak tak robię? czy może lepiej dać wszystko do pliku index.tpl, a tylko content zmieniać?
Go to the top of the page
+Quote Post
Evinek
post 31.07.2012, 17:09:37
Post #11





Grupa: Zarejestrowani
Postów: 280
Pomógł: 46
Dołączył: 23.03.2010

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


Przeczytaj ten temat: http://forum.php.pl/index.php?showtopic=201664
Miałem ten sam problem. Lepiej zrobić "bloki" które po prostu będziesz podmieniał w głównym szablonie. Czyli można powiedzieć, że sposób drugi.

U mnie ja mam takie coś:
Ładuje(wyświetlam) w danym pliku dany szablon ($template->display('news')wink.gif, w newsie(template) mam tak zwane bloki. Gdy załaduje się news(blocki do zmiennych) to automatycznie dodaje się główny layout i dam wyświetla bloki. Jak przeczytasz mój temat to chyba zrozumiesz.
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: 26.07.2025 - 08:34