Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Tworzymy naszą stronę od A-Z
Forum PHP.pl > Forum > Przedszkole
casperii
Panowie chciałbym naszymi wspólnymi siłami bez zbędnych złych nawyków stworzyć jakąś prostą stronę tak by pokazać w jaki sposób poprawnie napisać naszą stronę.
Załóżmy że strona będzie miała nieograniczoną liczbę podstron oraz logowanie i rejestracje.

Zabieramy się za pisanie naszego index.php oraz poprawną konfigurację .htaccess

Tu mam kilka pytań:
- czy jest sens tworzyć templaty ? Czy oddzielacie php od html?
Proszę nie pisać to już zależy od ciebie, pytam się jak powinno i jak wy piszecie swoje strony?

- czy jest sens robić mod_rewrite ? Pomijając już to , że bez mod_rewirte w urlu będzie nieestetycznie wyglądać, czy poza tym, łatwiej jest intruzom zmanipulować coś? Tak rozumiem, pisać trzeba tak by uniemożliwić intruzom ingerencje w nasz skrypt.

- czy i w jaki sposób zabezpieczacie swój plik konfiguracyjny?

- czy nasze podstrony najlepiej trzymać w plikach i je includować , czy warto robić jak najwięcej na bazie mysql?

- jaki sposób macie na to, by się zabezpieczyć przed zmianą poszczególnych funkcji po aktualizacji wersji PHP wzwyż?
Czy po aktualizacji PHP analizujecie wszystkie wasze pliki php i jeśli zaszła taka potrzeba to je zmieniacie, czy najlepiej robić tak aby tworzyć jak największą liczbę funkcji i te funkcje używać w dalszej części kodu.


Jak coś mi przyjdzie jeszcze do głowy to dopiszę smile.gif
kapslokk
1. Tak, używam templatek, nie wyobrażam sobie bez nich życia tongue.gif
2. Teraz ładne url'e to podstawa, także rewrite dobra rzecz. Czy coś łatwo zmanipulować? Rewrite nie zrobi za Ciebie filtrowania zmiennych.
3. Trzymam go w php / yamlu i w konfiguracji serwera blokuje możliwość jego wyświetlenia jeśli to yaml. Jeśli php, to niech się wyświetla i tak nikt nic nie zobaczy.
4. Najlepiej robić wszystko na bazie. Poczytaj o MVC.
5. Używam funkcji z wersji na której programuje, po aktualizacji funkcje nie przestają nagle istnieć. Najpierw zaczynają wyrzucać deprecated, więc jest czas, żeby poprawić to co jest źle, zanim funkcja zniknie.
session
Cytat
czy jest sens tworzyć templaty ? Czy oddzielacie php od html?

To zależy od... Od tego co dokładnie tworzysz, jeśli będzie to aplikacja, która ma określone zadanie, i interesuje nas głównie jego wynik, a nie wygląd, gdzie ilość PHPa jest spora wtedy lepiej oddzielać, bo łatwiej się analizuje. Natomiast jeśli chcesz robić typowe strony to templaty są bardzo użyteczne, a dobrym przykładem ich tworzenia są themey WordPressa.
Cytat
czy jest sens robić mod_rewrite ?

Tak.
Cytat
czy poza tym, łatwiej jest intruzom zmanipulować coś?

Niby nie ma to znaczenia, chociaż odpowidnio użyty mod_rewrite może w pewien sposób ograniczać możliwość występowania niechcianych parametrów w GET.
Cytat
pisać trzeba tak by uniemożliwić intruzom ingerencje w nasz skrypt.

Tak byłoby najlepiej tongue.gif
Cytat
czy i w jaki sposób zabezpieczacie swój plik konfiguracyjny?

Jeśli jest to serwer linuxowy można ustawić odpowiednie prawa dostępu (chmody), do tego
Kod
<Files .htaccess>
order allow,deny
deny from all
</Files>
lub np. jakiś inny sposób.
Cytat
czy nasze podstrony najlepiej trzymać w plikach i je includować , czy warto robić jak najwięcej na bazie mysql?

Jeśli będzie to zrobine w bazie to łatwiej będzie stworzyć panel do edycji podstron. Ogólnie bazy danych są lepiej przystosowane do tego typu działań, zapewniają wiele przydatnych rzeczy, są bardziej elastyczne, czasami nawet szybsze.
Cytat
jaki sposób macie na to, by się zabezpieczyć przed zmianą poszczególnych funkcji po aktualizacji wersji PHP wzwyż?

Generalnie nie używam jakiś "podejrzanych" funkcji, w końcu nie bez powodu przy rozwoju PHP niektóre funkcje są deprecjonowane. Nikt też nie każe Ci natychmiast aktualizować PHPa, masz sporo czasu na odpalenie swoich kodów w środowisku ze zaktualizowaną wersją, przetestowanie wszystkiego, poprawienie czegoś i podjęcie decyzji czy aktualizujesz. Poza tym za każdą nową wersją idą informacje o zmianach względem poprzedniej. Na marginesie wykluczenie znacznika <marquee> z HTMLa było dla mnie ogromną i niezrozumiałą stratą sadsmiley02.gif sadsmiley02.gif tongue.gif tongue.gif
casperii
  1. <?php
  2. require_once("conf.php");
  3. require_once('libs/Smarty.class.php');
  4. $html = new Smarty();
  5. define('header','header.php');
  6. include(header);
  7. if(isset($_GET['o_page'])){
  8. if(file_exists('inc/'.$_GET['o_page'].'.inc.php')){
  9. $file = 'inc/'.$_GET['o_page'].'.inc.php';
  10.  
  11. switch (strtolower($_GET["o_page"])) {
  12. case "".$_GET['o_page']."": include('inc/'.$_GET['o_page'].'.inc.php');
  13. //$html->display($_GET[o_page].'.html');
  14. $html->assign('page', $_GET[o_page]);
  15. break;
  16. }
  17. else
  18. header("Location: ../index.html");
  19.  
  20. }
  21. }
  22. define('footer','footer.php');
  23. include(footer);
  24. ?>


@kapslokk jak ci się widzi wstęp? Nie bardzo wiem, jak wcisnąć $html do case i czy dobrze kombinuje. Pozostałe dane jakoś bardziej trzeba zabezpieczyć ?
kapslokk
Cytat(casperii @ 22.11.2015, 12:12:33 ) *
  1. <?php
  2. require_once("conf.php");
  3. require_once('libs/Smarty.class.php');
  4. $html = new Smarty();
  5. define('header','header.php');
  6. include(header);
  7. if(isset($_GET['o_page'])){
  8. if(file_exists('inc/'.$_GET['o_page'].'.inc.php')){
  9. $file = 'inc/'.$_GET['o_page'].'.inc.php';
  10.  
  11. switch (strtolower($_GET["o_page"])) {
  12. case "".$_GET['o_page']."": include('inc/'.$_GET['o_page'].'.inc.php');
  13. //$html->display($_GET[o_page].'.html');
  14. $html->assign('page', $_GET[o_page]);
  15. break;
  16. }
  17. else
  18. header("Location: ../index.html");
  19.  
  20. }
  21. }
  22. define('footer','footer.php');
  23. include(footer);
  24. ?>


@kapslokk jak ci się widzi wstęp? Nie bardzo wiem, jak wcisnąć $html do case i czy dobrze kombinuje. Pozostałe dane jakoś bardziej trzeba zabezpieczyć ?

Szczerze? Nie widzi mi się. Ogólnie to jeśli termin Cię nie goni to się nie spiesz ;P Sprawdź sobie jak np w najpopularniejszych frameworkach się to robi i na tej podstawie kombinuj.
Postaraj się programować obiektowo, użyć jakiegoś autoloadera. Smarty też są już dość stare.
Pierwsza rzecz, którą zauważyłem w Twoim kodzie to to, że na początku i końcu includujesz header i footer, a co jeśli nie będziesz chciał, żeby się one pojawiły? Mam na myśli np jakiegoś ajax'a, który będzie potrzebował odebrać json'a, a nie html z nagłówkiem i stopką ;P
viking
Moim zdaniem dobrym pomysłem jest iść teraz w psr - 7. Testowałem ostatnio kilka rozwiązań i mimo że jeszcze brakuje większego frameworka typu zf3 czy sf3 który zintegrowal by wszystko razem i wyznaczył jakiś standard, to widać ogromny luz w takim kodzie. Wymiana komponentów jest banalna, można praktycznie z każdego innego fw wstawić coś użytecznego.
Przykład podstaw https://github.com/wwwgo-pl/Slim3-Phptal
Obecnie zintegrowalem service locator z zf dzięki czemu dużo lepiej z całym zendem się pracuje.
Damonsson
Albo:
Cytat(casperii @ 22.11.2015, 11:35:13 ) *
poprawnie

Albo:
Cytat(casperii @ 22.11.2015, 11:35:13 ) *
.htaccess



Zdecydujcie się smile.gif
casperii
@kapslokk przecież można coś na styl tego:

  1. if(isset($_GET['o_page'])!='kontakt'){
  2. define('header','header.php');
  3. include(header);
  4. }



@viking obawiam się, że psr - 7 poznanie szkieletu trochę czasu zajmie (?)
kapslokk
Cytat(casperii @ 22.11.2015, 12:54:08 ) *
@kapslokk przecież można coś na styl tego:

  1. if(isset($_GET['o_page'])!='kontakt'){
  2. define('header','header.php');
  3. include(header);
  4. }

Można... Ale można zrobić to 'ładniej'
casperii
@kapslokk a możesz pokazać mi w jaki sposób ty tworzysz? Nie chodzi mi o wklejenie całości tylko o sam szkielet jak ty to masz?

@viking w twoim linku w index.php jest coś takiego:

require 'vendor/autoload.php';

tylko co ma być w tym autoload.php ? :-) czemu tego pliku nie ma w przykładowym...

Dobra już wygooglowałem o co chodzi z tym autoload.
Jeśli się mylę, to wyprowadź mnie z błędu, muszę na serwer wgrać composer? a co jeśli nie mam możliwości instalacji?
viking
Na serwerze produkcyjnym wrzucasz produkt finalny. Na localhost raczej nie masz z nim problemów. Tylko przed wgraniem trzeba wygenerować composer dumpautoload - o. Slim akurat jest bardzo łatwy a będzie i tak 100x lepszy od tego co przedstawiles. Bez większej wiedzy wystarczy ze sam kod będziesz wrzucać do get / post I podepniesz route. Obcujac z takim rozwiązaniem zaczniesz czegoś się uczyć. Oczywiście to tylko przykład i framework możesz wybrać dowolny.
kapslokk
Cytat(casperii @ 22.11.2015, 13:00:08 ) *
@kapslokk a możesz pokazać mi w jaki sposób ty tworzysz? Nie chodzi mi o wklejenie całości tylko o sam szkielet jak ty to masz?

Ściągnij sobie symfony i tam zobacz biggrin.gif aktualnie staram się robić wszystkie nowe rzeczy na sf2

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.