Struktura php filova

Pozdrav,

ja nikako da dodjem na zelenu granu sa pravilnom strukturom fileova. Znači imam problem da moram konstantno inkludati iste skripte u nove podstranice, što mi nikako ne valja. Al ideja je da prokužim onaj sistem kad je ulaz na index.php, a onda se sve grana iz te točke ulaza.

Volio bih samo konstruktivno čuti kako to funkcionira, da lakše pohvatam na primjerima kako framework-ovi rade.

Znači, koliko mislim da kužim, vičite gdje griješim…i probajte odgovoriti tamo gdje primjetite koji upitnik :wink:

  1. Korisnik tipka u url: domena.com/questions/how-to-structure-php

  2. U php-u to udje prvo na .htaccess, ali ja nemam blage što .htaccess treba napraviti s tim linkom?

  3. Uglavnom, nekako nakon .htaccess-a se to dokotrlja do index.php-a

  4. index.php bi trebao imati informaciju [“questions”,“how-to-structure-php”]. Jel valja pristup da čitam url i razbijem ga u array() ili je posrijedi nešto drugo??

  5. Kad imam tu informaciju, onda si složim rute za ulaze s različitim parametrima. Rute znači daju vezu između ulaznih parametara ulaza sa određenim file-ovima koje ću inkludat. (css, js, content) I na taj način mogu s jednog mjesta diktirati tko će koga includati…

Any suggest?

Ovako funkcionira:
url: domena.com/questions/how-to-structure-php

htaccess

Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteRule ([^/]+)/([^/]+)$ index.php?param1=$1&param2=$2 [NC,L]

index.php

$param1=$_GET[“param1”]; // iz gore navedenog url-a tu bi bila vrijednost “questions”
$param2=$_GET[“param2”]; // iz gore navedenog url-a tu bi bila vrijednost “how-to-structure-php”

kako ćeš razbiti varijable je tvoja “volja”, želiš li je uzeti kao array i razbiti je, ili ciljano (kao u ovom primjeru) uzimati broj očekivanih parametara (u ovom slučaju 2)
Ja uvijek radim da ih uzimam ciljano koliko ih očekujem (ne uzimam ih iz array-a).

Da budem jasan, code unutar htaccessa mi je ko kineski jezik :smile:

Isčupao sam htaccess iz jednog frameworka, i veli ovako:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^domena.com
RewriteRule (.*) http://www.domena.com/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]  

Ako stavim taj file, uredno mi je ulaz kroz index.php čak i ako ne mijenjam parametar domena.com u vrhu :S (radim lokalno pa nisam ni znao koju bi domenu stavio)
Samo unutar index.php, ne stiže ništa u varijabli $_GET, nego bi morao čitati url, što također uspjevam dobiti točan url kakav je korisnik upisao. Ovako nevidim razliku dohvati parametre kroz $_GET, ili razbijanjem url-a ?? Možda u brzini?

I jel može pliz kratko pojašnjenje što točno radi ovaj gornji .htaccess?

Tvoj .htaccess kad stavim, i probam ući u stranicu, vrisne mi:
Object not found!

The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again.

If you think this is a server error, please contact the webmaster.
Error 404
localhost
Apache/2.4.9 (Win32) OpenSSL/1.0.1g PHP/5.5.11

Jedan frend mi davno prosljedio ovakav .htaccess

RewriteEngine On

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

…i tu mi također izbacuje grešku kao ovu gore.

Ajmo zanemariti .htaccess, glavno da radi i sve preusmjerava na index.php :slight_smile: Onaj prvi dio koregira domenu…iako sam iskopirao neku drugačiju korekciju, tako da mi uklanja “www.”

Nego, ako ću imat više sreće s sljedećim pitanjem :slight_smile:
Znači korak 4:

kad razbijem url na dijelove, pristupio bi tako da prvo očitam prvi parametar. Nakon što mi je poznat prvi znam koje opcije mogu očekivati u sljedećem parametru i tako dalje.
Primjera radi imam recimo url: profile/145684 , kad očitam da je prvi parametar “profile”, znam da mi je sljedeći userID.
Ili recimo url: o_nama/značajke nakon parametra “o_nama”, znam koje opcije mogu očekivati.
No to mi je nekako šupljikav pristup. Struktura linkova onda uvijek mora biti točno poredana po poznatoj unaprijed isplaniranoj šabloni.
Jednostavno nemam iskustva i neznam hoće li mi to kasnije predstavljati problem, ili je to ocke da je tako?

http://www.phptherightway.com/ ovo je ono sto ti treba.

Tebe u konkretnom slucaju zanima i ovo: https://en.wikipedia.org/wiki/Front_Controller_pattern, http://www.sitepoint.com/front-controller-pattern-1/, http://avedo.net/733/understanding-and-implementing-the-frontcontroller-pattern-using-php/

Nakon sto to procitas bit ce ti mnogo toga jasnije.

Struktura linkova mora biti poredana po šabloni, kak veliš. Međutim to je i normalno kao i kod svakog drugog site-a (da imaš fiksne a ne dinamične stranice). Ne predstavlja problem ako pametno koristiš.

Ok je tako kao što si napisao: profile/userID

“Šupljikav pristup” nije.
Npr. recimo da je URL: domena.com/profile/userID
i onda po gore navedenom primjeru (htaccess + get) uzmeš varijable

$link1=“profile”, a $link2=“userID”.

definiraš array i u njega staviš dozvoljene “akcije”

$dozvoljene_akcije=array(“profile”, “login”, “register”)

Onda u skripti provjeriš da li se $link1 nalazi u array-e dozvoljenih akcija.
Ako da, onda nastaviš sa skriptom. Ako ne, napraviš mu redirect na registraciju (recimo) umjesto da ti baca 404 page not found…

Hvala obojici! Snaći ću se sad…pa makar kako da istipkam 20 znakova :slight_smile: