Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Struktura aplikacji
MadMan77
post 4.03.2018, 18:08:47
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 4.03.2018

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


Witam,

Na wstępie oświadczam iż jestem początkujący dlatego też prosiłbym o wyrozumiałość i w miarę prosty język w odpowiedziach.
W internetach nie znalazłem jednoznaczniej odpowiedzi na moje pytanie dlatego zwracam się do Was.
Wszystko co do tej pory zrobiłem działa dlatego też nie dodaję kodu. Pytanie jest bardziej natury metody wędrowania danych między stronami i etyką tworzenia właśnie takich akcji.

Próbuję stworzyć pewną aplikację internetową która będzie zapisywała do bazy dane, które później będzie można odczytywać.
Stworzyłem już formularz logowania. Zrobiłem także stronę główną na której działa dodawanie danych do bazy.
Ze strony głównej formularzem metodą POST wysyłam dane do innej strony, która to dodaje dane do bazy i wraca do strony głównej. Teraz właśnie rodzi się moje pytanie : Czy powinienem tworzyć nową stronę i wysyłać tam dane czy wykonywać tą operacje na stronie głównej? Strona główna będzie takim centrum dowodzenia i będzie znajdowało się tam sporo rubryk w których będę dodawać lub odczytywać dane. Dlatego też będzie to potężny plik jeżeli wszystko będę robić w jego trzewiach.

Staram się dzielić aplikację na bloki dlatego też jest już kilka stron np. connect.php (aby nie wpisywać tego w kodzie wszędzie) logout.php, zaloguj.php który loguje i sprawdza użytkowników czy ktoś jest zalogowany itp. Czy powinienem tak samo robić z dodawaniem danych do bazy. Tak aby to inny plik zajmował się wysyłaniem do bazy a strona główna będzie tylko to wyświetlać. Jeżeli tak to rodzi się kolejne pytanie odnośnie wyświetlenia komunikatu, że rekord dodał się do bazy. Aktualnie wyświetla mi się to na tej dodatkowej stronie. Ostatnio zrobiłem przekierowanie, żeby po dodaniu danych wracało do strony głównej jednak wtedy nie wiem jak dodać komunikat o poprawności dodania danych. Jeżeli jednak wykonywać to wszystko na stronie głównej wtedy będę umiał dodać taki komunikat. Tylko nie umiem wtedy zrobić aby wyświetlał się na chwilę a nie ciągle tam wisiał ale to już problem na inny temat.

Dziękuję z góry za przeczytanie mojego posta i ewentualne odpowiedzi.
Pozdrawiam MadMan




Go to the top of the page
+Quote Post
leonpro778
post 4.03.2018, 18:42:13
Post #2





Grupa: Zarejestrowani
Postów: 146
Pomógł: 19
Dołączył: 1.03.2012

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


Co do SAMEJ struktury plików to raczej nie ładuj wszystkiego w jeden plik (owszem, da się ale potem się w nim odnaleźć to tragedia). Chcesz porządku w kodzie? Zainteresuj się MVC (dokładnie tam będzie opis jak dane wędrują po stronie). Lepiej chyba abyś pokazał jednak ten działający kod aby było się do czego odnieść.
Go to the top of the page
+Quote Post
MadMan77
post 4.03.2018, 19:10:51
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 4.03.2018

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


To jest mój główny plik. Head wykasowałem bo nic nie wnosi do danej sprawy, nie chciałem zaśmiecać.
  1. <?php
  2. if(!isset($_SESSION['zalogowany']))
  3. {
  4. header('Location:index.php');
  5. exit();
  6. }
  7. ?>
  8. <!DOCTYPE HTML>
  9. <html lang="pl">
  10. <body>
  11. <?php
  12. echo "<p>Witaj ".$_SESSION['login'].'! [<a href="logout.php">Wyloguj</a>]</p>';
  13. ?>
  14.  
  15. <form action="nazwa.php" method="POST">
  16. inwestycja<br/>
  17. <input type="text" name="nazwa"><br/>
  18. <input type="submit" value="zapisz">
  19. </form>
  20.  


Tutaj (nazwa.php) ładuje to co dostałem w formularzu i dodaje do bazy

  1. <?php
  2.  
  3. if(isset($_SESSION['zalogowany']))
  4. {
  5. header('Location:index.php');
  6. exit();
  7. }
  8. require_once "connect.php";
  9.  
  10. $polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
  11.  
  12. $nazwa=$_POST['nazwa'];
  13.  
  14. if($nazwa)
  15. {
  16. $sql=mysqli_query($polaczenie, "INSERT INTO inwestycje (idinw, nazwa) values ('','$nazwa')");
  17. if($sql)
  18. {
  19. header('location: glowna.php');
  20. $polaczenie->close();
  21. }
  22. }
  23. ?>


Jest jeszcze strona zaloguj.php Jednak jej chyba tutaj dodawać nie muszę bo robi zupełnie co innego niż dotyczy ten problem. Chyba że się mylę.
Jest to sam początek dlatego też plik "glowna" rozrośnie się. Dlatego tak jak pisałeś, żeby się połapać dodałem plik nazwa.php który ma robić konkretną robotę.
Go to the top of the page
+Quote Post
viking
post 4.03.2018, 19:18:38
Post #4





Grupa: Zarejestrowani
Postów: 6 376
Pomógł: 1116
Dołączył: 30.08.2006

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


Taki kod to jedna wielka sieczka z którą praktycznie nic nie można potem zrobić. Zobacz jakiś prosty framework np slim, poczytaj może o systemach szablonów, poczytaj o prepared statements i bezpieczeństwie aplikacji.


--------------------
Go to the top of the page
+Quote Post
MadMan77
post 4.03.2018, 19:34:34
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 4.03.2018

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


Rozumiem.
Aktualnie bezpieczeństwo aplikacji nie jest na pierwszym miejscu ponieważ będzie stała ona na prywatnym serwerze w prywatnej sieci.
Chciałbym żebyś rozwinął myśl sieczki. Dlaczego z takim kodem później nie będę mógł nic zrobić?
Jestem początkujący. Uczę się php około tygodnia i staram się używać każdej nowej zdobytej wiedzy.
Na razie jest to bardziej nauka niż kodowanie. Jednak chciałbym napisać użyteczny program dlatego też każde rady bardziej doświadczonych wezmę do siebie. Nauka przychodzi powoli ponieważ muszę przyswoić sporo nowej wiedzy. Chciałbym najpierw opanować php na rozsądnym poziomie a dopiero później zabierać się za frameworki. Chyba ,że powinienem równolegle uczyć się np slim o którym wspomniałeś.

Go to the top of the page
+Quote Post
leonpro778
post 4.03.2018, 23:21:35
Post #6





Grupa: Zarejestrowani
Postów: 146
Pomógł: 19
Dołączył: 1.03.2012

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


Cytat(MadMan77 @ 4.03.2018, 19:34:34 ) *
Rozumiem.
Aktualnie bezpieczeństwo aplikacji nie jest na pierwszym miejscu ponieważ będzie stała ona na prywatnym serwerze w prywatnej sieci.

Błąd. Skoro zaczynasz z PHP od razu sobie "wbijaj" pewne standardy (mi to zajęło spoooro czasu). Później będziesz miał łatwiej.

Cytat(MadMan77 @ 4.03.2018, 19:34:34 ) *
Chciałbym żebyś rozwinął myśl sieczki. Dlaczego z takim kodem później nie będę mógł nic zrobić?

To co tutaj pokazałeś to taki bardzo prosty "prototyp" dodawania rekordu do bazy (jak słusznie zauważył viking - bez żadnych zabezpieczeń) smile.gif Za bardzo nie wiadomo co ta Twoja stronka ma robić bo jak na razie to widzimy, że dodaje rekord do bazy. Rozpatrz sobie przykład. Użytkownik wchodzi na Twoją stronę i dostaje okno logowania. Loguje się i następnie co... widzi tylko 'Witaj XXX' i pole input do wpisania jakiejś nazwy. Naciska on ZAPISZ i... co dalej widzi? Znowu IDENTYCZNĄ stronę jak po zalogowaniu.

Nie ma nawet szansy przejrzeć co dodał i ile tych rzeczy jest. Teraz jak Ty to robisz? Budujesz kolejną stronę przegladaj.php żeby można było sobie przejrzeć dotychczasowe wpisy. Efektem jest to, że masz już DWIE strony glowna.php oraz przegladaj.php. Na KAŻDEJ z nich musisz sprawdzić czy użytkownik jest zalogowany. Jeżeli jest to wyświetlasz mu ten komunikat:

  1. <?php
  2. echo "<p>Witaj ".$_SESSION['login'].'! [<a href="logout.php">Wyloguj</a>]</p>';
  3. ?>


I teraz pomyśl nad jedną rzeczą. Klient wymyślił aby napis witaj był czcionką czerwoną z dopiskiem 'Sz. P.'. Co Ty robisz? Otwierasz mozolnie KAŻDY plik zawierający ten zapis i zmieniasz. W przypadku DWÓCH plików to trudne nie jest ale jak masz tych plików 20? To taki najprostszy przykład czemu nie wolno trzymać wszystkiego w jednym pliku.

Jeżeli nie chcesz przesiadać się od razu na frameworka pisz przynajmniej w taki sposób aby ktoś, kto po tobie weźmie ten kod umiał się w nim odnaleźć smile.gif

P.s. W pliku nazwa.php

  1. if(isset($_SESSION['zalogowany']))
  2. {
  3. header('Location:index.php');
  4. exit();
  5. }


Powinno być chyba:
  1. if(!isset($_SESSION['zalogowany']))
  2. {
  3. header('Location:index.php');
  4. exit();
  5. }
smile.gif
Go to the top of the page
+Quote Post
nospor
post 5.03.2018, 11:14:36
Post #7





Grupa: Moderatorzy
Postów: 36 556
Pomógł: 6314
Dołączył: 27.12.2004




Ja tylko tak na marginesie odnosnie tej wypowiedzi
Cytat
Co do SAMEJ struktury plików to raczej nie ładuj wszystkiego w jeden plik (owszem, da się ale potem się w nim odnaleźć to tragedia

Nedzne odnalezienie sie w pojedynczym pliku to najmniejszy z problemow. Glownym jest to, ze jak ten jeden plik bedzie sobie tak rosl i rosl to w pewnym momencie strona zacznie sie ladowac kilka sekund.

Kiedys zrobilem test i machnalem jeden duuuuzy plik php po czym odpalilem stronke.... To bylo bolesne wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
alberthus
post 5.03.2018, 11:40:54
Post #8





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 16.01.2014

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


Takie pytanie do kolegów wyżej?

Dlaczego wciskacie autorowi frameworki, prepared statements, bezpieczeństwo i pewnie zaraz PDO skoro on podstaw php dobrych nie ma?
Go to the top of the page
+Quote Post
viking
post 5.03.2018, 11:50:01
Post #9





Grupa: Zarejestrowani
Postów: 6 376
Pomógł: 1116
Dołączył: 30.08.2006

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


A na czym ma pracować? A starym Mysql? Pisząc aplikację dowolną powinno się od razu robić wszystko zgodnie z dobrymi praktykami. Prepared statements to az jedna linia więcej. Mikroframework pozwoli mu zrozumieć jak można pisać inaczej oraz jak uporządkować swój kod.


--------------------
Go to the top of the page
+Quote Post
MadMan77
post 5.03.2018, 18:53:31
Post #10





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 4.03.2018

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


Miło mi, że już kilka osób włączyło się w temat. Pomoże mi to poszerzyć swoją wiedzę na temat php więc dzięki smile.gif

Teraz odniosę się do kilku spraw i zadam kila wynikłych z tego pytań :

Cytat(leonpro778 @ 4.03.2018, 23:21:35 ) *
Błąd. Skoro zaczynasz z PHP od razu sobie "wbijaj" pewne standardy (mi to zajęło spoooro czasu). Później będziesz miał łatwiej.

Zabezpieczenia, które zastosowałem odnoszą się do wstrzykiwania sql przez formularz. Jednak są one w pliku zaloguj.php, którego tutaj nie pokazałem. Fakt w tych kodach nie uwzględniłem tego. Co można dodać do zabezpieczeń oprócz walidacji danych od użytkownika? Proszę tylko o same hasła resztę będę starał się sam doszukać.

Cytat(leonpro778 @ 4.03.2018, 23:21:35 ) *
To co tutaj pokazałeś to taki bardzo prosty "prototyp" dodawania rekordu do bazy (jak słusznie zauważył viking - bez żadnych zabezpieczeń) smile.gif Za bardzo nie wiadomo co ta Twoja stronka ma robić bo jak na razie to widzimy, że dodaje rekord do bazy. Rozpatrz sobie przykład. Użytkownik wchodzi na Twoją stronę i dostaje okno logowania. Loguje się i następnie co... widzi tylko 'Witaj XXX' i pole input do wpisania jakiejś nazwy. Naciska on ZAPISZ i... co dalej widzi? Znowu IDENTYCZNĄ stronę jak po zalogowaniu.

Tak. Jest to prosty sposób dodawania danych do bazy. Jednak dla mnie był skomplikowany zanim tego nie rozgryzłem. Na razie tylko tak potrafię. Użytkownik po zalogowaniu będzie widział wiele pól w których będzie mógł dodawać dane. Idea tej aplikacji jest taka, że właśnie użytkownik nie może widzieć dodanych danych. Z aplikacji będzie korzystało więcej osób. Będą dodawały tam dane dotyczące czasu pracy itd dlatego nie mogą tego widzieć. Taką możliwość będą miały np tylko dwie osoby.
Cytat(leonpro778 @ 4.03.2018, 23:21:35 ) *
Na KAŻDEJ z nich musisz sprawdzić czy użytkownik jest zalogowany. Jeżeli jest to wyświetlasz mu ten komunikat:
  1. <?php
  2. echo "<p>Witaj ".$_SESSION['login'].'! [<a href="logout.php">Wyloguj</a>]</p>';
  3. ?>

I teraz pomyśl nad jedną rzeczą. Klient wymyślił aby napis witaj był czcionką czerwoną z dopiskiem 'Sz. P.'. Co Ty robisz? Otwierasz mozolnie KAŻDY plik zawierający ten zapis i zmieniasz.

Muszę sprawdzać na każdej stronie czy jest zalogowany żeby nikt postronny nie mógł wejść na tą stronę wpisując np adres z reki w przeglądarkę ( to odnośnie zabezpieczeń). W takim razie w jaki sposób mogę sobie ułatwić taką zmianę jaką Ty podałeś. Z góry dziękuję za podpowiedz.

leonpro778 Dzięki za wychwycenie błędu w pliku nazwa.php smile.gif
Ps. Nie wiem jak dodać, że pomogłeś.

nospor brałem właśnie to pod uwagę dlatego nie chce tego doświadczać biggrin.gif

Cytat(viking @ 5.03.2018, 11:50:01 ) *
A na czym ma pracować? A starym Mysql? Pisząc aplikację dowolną powinno się od razu robić wszystko zgodnie z dobrymi praktykami. Prepared statements to az jedna linia więcej. Mikroframework pozwoli mu zrozumieć jak można pisać inaczej oraz jak uporządkować swój kod.


Staram się pisać nowszymi komendami. Dlatego np zamiast mysql użyłem w kodzie mysqli. Niestety aktualnie pisze zgodnie z moim stanem wiedzy. Jestem świadom, że tą aplikację poprawiał będę parę razy. Jednak dzięki temu może uda mi się nauczyć php na żywym przykładzie nie przepisując jedynie wzorów z internetu, które podane tylko same nie maja większego zastosowania. Podczas pisania tej aplikacji staram się na bieżąco pokonywać napotkane problemy i tym samym uczyć się.
Chciałbym pisać kod zgodnie z dobrymi praktykami jednak do końca ich nie znam. Manual na razie mnie jakoś odstrasza
dlatego wspomagam się tutorialami.
Może ktoś z Was mógłby polecić mi jakąś książkę ? lub inne źródło wiedzy. Czy jednak zmusić się do studiowania manuala?



Go to the top of the page
+Quote Post
leonpro778
post 5.03.2018, 20:40:25
Post #11





Grupa: Zarejestrowani
Postów: 146
Pomógł: 19
Dołączył: 1.03.2012

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


Cytat(MadMan77 @ 5.03.2018, 18:53:31 ) *
Tak. Jest to prosty sposób dodawania danych do bazy. Jednak dla mnie był skomplikowany zanim tego nie rozgryzłem. Na razie tylko tak potrafię. Użytkownik po zalogowaniu będzie widział wiele pól w których będzie mógł dodawać dane. Idea tej aplikacji jest taka, że właśnie użytkownik nie może widzieć dodanych danych. Z aplikacji będzie korzystało więcej osób. Będą dodawały tam dane dotyczące czasu pracy itd dlatego nie mogą tego widzieć. Taką możliwość będą miały np tylko dwie osoby.

No właśnie, masz już pierwszy problem. Musisz stworzyć TYLE podstron ilu będzie TYPÓW użytkowników (każdy z nich będzie widział co innego). Przykładowo:

Zwykły użytkownik - widzi tylko formularz
Jakiś tam operator - widzi tylko wpisane dane
Administrator - widzi wszystko i może wszytko (łącznie z edycją, kasowaniem itp.)

Jeżeli dla każdego typu użytkownika chcesz robić osobno stronę to nie tędy droga.

Cytat(MadMan77 @ 5.03.2018, 18:53:31 ) *
Muszę sprawdzać na każdej stronie czy jest zalogowany żeby nikt postronny nie mógł wejść na tą stronę wpisując np adres z reki w przeglądarkę ( to odnośnie zabezpieczeń). W takim razie w jaki sposób mogę sobie ułatwić taką zmianę jaką Ty podałeś. Z góry dziękuję za podpowiedz.


Raczej nie chodziło mi o sprawdzanie czy użytkownik jest zalogowany (bo to MUSISZ sprawdzać) tylko o sam wygląd tekstu powitalnego. Zauważ, że jest to kod, który będziesz powtarzał w każdym pliku (dla każdego rodzaju usera) i będzie to kod IDENTYCZNY. Tak czy inaczej właśnie przy takich właśnie głupotach pomagają frameworki.

Cytat(MadMan77 @ 5.03.2018, 18:53:31 ) *
leonpro778 Dzięki za wychwycenie błędu w pliku nazwa.php smile.gif

Proszę bardzo.

Cytat(MadMan77 @ 5.03.2018, 18:53:31 ) *
nospor brałem właśnie to pod uwagę dlatego nie chce tego doświadczać

Mały off top. Swego czasu jak pisałem grę "przeglądarkową" to pliki (nawet z zachowaniem pewnych standardów) zajmowały ok 20kb (po ok 500 linijek kodu). Szukanie błędu w tym to dopiero było wyzwanie biggrin.gif

Cytat(MadMan77 @ 5.03.2018, 18:53:31 ) *
Staram się pisać nowszymi komendami. Dlatego np zamiast mysql użyłem w kodzie mysqli. Niestety aktualnie pisze zgodnie z moim stanem wiedzy. Jestem świadom, że tą aplikację poprawiał będę parę razy. Jednak dzięki temu może uda mi się nauczyć php na żywym przykładzie nie przepisując jedynie wzorów z internetu, które podane tylko same nie maja większego zastosowania.

Nie sztuką jest przepisać wzór z internetu. Sztuką jest zrozumieć i umieć zastosować ten wzór w swoim kodzie.

Cytat(MadMan77 @ 5.03.2018, 18:53:31 ) *
Podczas pisania tej aplikacji staram się na bieżąco pokonywać napotkane problemy i tym samym uczyć się.

Nooo... a jak będziesz miał ciężki problem to przychodzisz tutaj i go opisujesz smile.gif Tu naprawdę są osoby, które PHP dobrze ogarniają.
P.s. Żebyś widział jakich ja podstawowych komend nauczyłem się z tego forum biggrin.gif Ale nie przyznam się bo się wstydzę biggrin.gif biggrin.gif

Cytat(MadMan77 @ 5.03.2018, 18:53:31 ) *
Manual na razie mnie jakoś odstrasza dlatego wspomagam się tutorialami.

Manual Twoim przyjacielem biggrin.gif Sam też byłem na poziomie kiedy chodziłem po forach z zapytaniami a jak mnie odsyłali do manuala to się tylko denerwowałem (tak, też pisałem kiedyś teksty typu "Jak nie masz nic do powiedzenia to się nie udzielaj i wypchaj się tym manualem" a w odpowiedzi otrzymywałem "Idź dziecko gdzie indziej" biggrin.gif). Dzisiaj nawet mogę tym ludziom podziękować bo jakby nie patrzeć, zmusili mnie do tego manuala. Oczywiście są również i tutoriale, jedne lepsze, drugie gorsze ale zawsze można się z nich sporo dowiedzieć.

Cytat(MadMan77 @ 5.03.2018, 18:53:31 ) *
Może ktoś z Was mógłby polecić mi jakąś książkę ? lub inne źródło wiedzy. Czy jednak zmusić się do studiowania manuala?

google.pl biggrin.gif

A teraz tak na poważnie. Jak tworzysz jakąś aplikację to zacznij od porządnego schematu dla swojej aplikacji. Twórz ją tak abyś w przyszłości mógł ją rozwijać w ten sposób aby pisanie czegoś nowego nie "narzucało" Ci konieczności poprawiania połowy Twojego starego kodu.

Oczywiście nie musisz zaczynać od żadnego frameworka (sam później się na jakiegoś przerzucisz jak będziesz tworzył n-tą aplikację i po raz n-ty pisał ten sam kod) ale już jak tworzysz to stosuj się do:
- KISS
- DRY
- OOP

Teraz tak odnośnie reguły KISS. Czy to na tym forum było napisane, że 20 linijek (bez komentarzy) na funkcję to już dużo? biggrin.gif
Go to the top of the page
+Quote Post
emillo91
post 6.03.2018, 18:38:23
Post #12





Grupa: Zarejestrowani
Postów: 129
Pomógł: 13
Dołączył: 29.03.2012

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


Ja rozpoczynając przygodę z PHP zacząłem od pobierania i edycji aplikacji newsów (oczywiście tych prostszych). Pierwsza opierała się na plikach tekstowych ale niestety nie pamiętam skąd ją pobrałem(przykładowy znajdziesz tutaj) Później sam próbowałem przerabiać te aplikacje. Moim zdaniem to dobra praktyka bazować na czymś co już jest.
Go to the top of the page
+Quote Post
MadMan77
post 6.03.2018, 19:40:09
Post #13





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 4.03.2018

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


leonpro778 napisałeś, że tworzenie wielu podstron dla różnych rodzajów użytkownika nie ma sensu. Jaka jest Twoja rada jak to załatwić ? Pisałeś też o identycznym kodzie np "witaj" który można załatwić frameworkiem możesz podać jakiś przykład lub źródło do frameworka. Pisał ktoś wcześniej o Slim, czy warto od niego zacząć ?
Czy KISS DRY OPP to jest programowanie obiektowe ?
Była też mowa o bardzo prostym sposobie dodawania danych do bazy, którego użyłem. Czego powinienem użyć w zamian tego ?
Jak stworzyć schemat aplikacji? czy chodziło Ci o przepływ informacji pomiędzy plikami ? o ilość podstron itd ?
Jeżeli macie jeszcze jakieś rady odnośnie pisania aplikacji w php z chęcią przeczytam smile.gif




Go to the top of the page
+Quote Post
leonpro778
post 7.03.2018, 10:06:25
Post #14





Grupa: Zarejestrowani
Postów: 146
Pomógł: 19
Dołączył: 1.03.2012

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


Cytat(MadMan77 @ 6.03.2018, 19:40:09 ) *
leonpro778 napisałeś, że tworzenie wielu podstron dla różnych rodzajów użytkownika nie ma sensu.

Żebyśmy się dobrze zrozumieli, nie ma sensu tworzyć wielu podstron z identycznym kodem. Tak właśnie działa reguła DRY (Don't Repeat Yourself).

Cytat(MadMan77 @ 6.03.2018, 19:40:09 ) *
Jaka jest Twoja rada jak to załatwić ?

Framework smile.gif albo tak jak pisałem wcześniej, zacznij robić schemat swojej aplikacji. Ustal CO jest dostępne dla wszystkich a co tylko dla zalogowanych użytkowników. Przykładowo, nagłówek strony w większości się powtarza ten sam (nie chodzi mi o sekcję <head>), przykładowo - jakieś logo z tekstem powitalnym. Ten kod powinien być napisany w oddzielnym pliku a Ty go po prostu dołączasz tam gdzie uważasz, że ten nagłówek powinien występować.

Zobacz przykład jak uniknąć zbędnego powtarzania się kodu (wyeliminujemy część powtarzającego się kodu czy jest ktoś zalogowany). Uwaga - przykład jest tylko aby pokazać o co chodzi w regule DRY. Osoby, którym zaczną krwawić oczy proszone są o nie czytanie dalej biggrin.gif

Mamty taką strukturę strony:
http://my-site.pl/ - strona główna
http://my-site.pl/files/ - pliki, które mają być widoczne TYLKO dla zalogowanych użytkowników

Teraz niech w katalogu FILES tworzymy plik (przykładowo):
  1. <?php
  2. echo 'Something important';
  3. ?>


W katalogu głównym tworzymy plik index.php:
  1. <?php
  2. $url = $_GET['url'];
  3.  
  4. if ($_SESSION['isAuth']) { include ('files/'.$url.'.php'); }
  5. else { header('Location: login.php'); }
  6. ?>


Teraz zabezpieczamy katalog FILES plikiem .htaccess z kodem:
  1. Order allow,deny
  2. Deny from all


I teraz, http://my-stie.pl/index.php?url=[jakis_plik_z_katalogu_files] wyświetli Ci ten plik, który podasz w parametrze url (przykładowo plik z Twojego przykładu nazwa.php). Tyle tylko, że nie musisz już w pliku nazwa.php pisać kodu sprawdzającego czy użytkownik jest zalogowany. Przykład może i mało estetyczny ale ma tylko odzwierciedlać sposób działania i eliminacji zbędnego pisania kodu.


Cytat(MadMan77 @ 6.03.2018, 19:40:09 ) *
Pisałeś też o identycznym kodzie np "witaj" który można załatwić frameworkiem możesz podać jakiś przykład lub źródło do frameworka.Pisał ktoś wcześniej o Slim, czy warto od niego zacząć ?

To od jakiego frameworka zaczniesz to już Twoja sprawa. Viking zaproponował Ci framework SLIM ponieważ nie jest tak rozbudowany jak inne frameworki i tak jak napisał wcześniej pozwoli Ci to na przyswojenie pewnych nawyków. Generalnie chodzi o to (jest to bardzo uproszczony opis) aby to co przedstawiasz na ekranie komputera było rozdzielone od tego co chcesz wyświetlić (przykładowo, kod PHP, który pobiera dane, przelicza i robi inne rzeczy jest w innej części aplikacji a następnie mając już dane z tych obliczeń wysyłasz to do kodu, który te dane będzie wyświetlał).

Cytat(MadMan77 @ 6.03.2018, 19:40:09 ) *
Czy KISS DRY OPP to jest programowanie obiektowe ?

Nie OPP (tak, wiem, teraz jest moda na oddawanie 1% na OPP z PIT'a) tylko OOP. OOP dotyczy programowania obiektowego. Nie zdziw się, jeżeli ktoś wyskoczy z tekstami, że programowanie jest złe (tak tak, na innym forum wywiązała się wielka dyskusja) bo i z takimi rzeczami się spotkasz ale programowanie obiektowe to obecnie podstawa.

KISS i DRY to reguły (tych reguł jest więcej) do których trzeba się stosować. Na początek chyba te są najważniejsze.

Cytat(MadMan77 @ 6.03.2018, 19:40:09 ) *
Była też mowa o bardzo prostym sposobie dodawania danych do bazy, którego użyłem. Czego powinienem użyć w zamian tego ?

PDO

Cytat(MadMan77 @ 6.03.2018, 19:40:09 ) *
Jak stworzyć schemat aplikacji? czy chodziło Ci o przepływ informacji pomiędzy plikami ? o ilość podstron itd ?

Schemat czyli takie coś co sprawi, że jak na to zerkniesz to od razu będziesz wiedział gdzie zacząć pisać kod jeżeli będziesz chciał dodać coś nowego. A tak na serio to nie wiem jak to opisać szczegółowo. Wyobraź sobie, że budujesz samochód. Rysujesz schemat i już wiesz, że potrzebne Ci będzie:
- nadwozie
- koła
- kierownica
- silnik
itp.

I teraz. Samochód musi jakoś hamować. Czyli co, nie przeglądasz całego schematu od początku tylko wiesz, że samochód zahamuje jak koła przestaną się kręcić i tam właśnie będziesz dłubał (dodawał, modyfikował itd.).

Cytat(MadMan77 @ 6.03.2018, 19:40:09 ) *
Jeżeli macie jeszcze jakieś rady odnośnie pisania aplikacji w php z chęcią przeczytam smile.gif

Nie bać się nowości. Ja przez takie obawy zmarnowałem kawał czasu.
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.04.2025 - 05:55