Autor Zpráva
frauen
Profil *
Zdravím,

rozhodl jsem se pro psaní svého "systému" pro své osobní stránky. Spousta z vás mi jistě podotkne, že je systémů spousta apod. Jde mi však o získání zkušeností v tomto směru. Dal jsem dokupy následující kód tak bych se chtěl zeptat na pár věcí.

index.php:
<?php
ob_start();
session_start();

// Header: Charset UTF-8
header('Content-Type: text/html; charset=utf-8');

// Constants
define(BASE, dirname(__FILE__) . '/');

// Configuration file
if(file_exists(BASE . 'config/config.php')) {
    require BASE . 'config/config.php';
} else {
    header('HTTP/1.1 404 Not Found');
    echo '404: Configuration file not found.';
}

// Page (module) initialization
if(isset($_GET['url'])) {
    $url = htmlspecialchars($_GET['url']);
    $url = explode('/', $url);
    $module = $url[0];
} else {
    $module = 'default';
}

// Page (module)
if(file_exists(BASE . 'modules/' . $module . '.php')) {
    include BASE . 'modules/' . $module . '.php';
} else {
    header('HTTP/1.1 404 Not Found');
    echo '404: Page (module) not found.';
}

ob_end_flush();
?>

Uvedený kód by měl obstarávat načtení konfiguračního souboru, kde jsou přístupové údaje k MySQL databázi (připojení k ní do kódu ještě dodělám). Dále inicializace načítané stránky a následně její includování. Chtěl bych se zeptat, zda máte k uvedenému kódu nějaké výhrady, připomínky, rady či jak to vypadá z hlediska praktičnosti? Jak to vypadá z hlediska bezpečnosti?

Chtěl bych také podotknout, že chystám využívat "hezké" odkazy, proto jsem to v inicializaci stránky připravil. Mohl bych zde po té narazit na nějaké problémy až budu psát .htaccess pro přepis adres?

Předem mnohokrát díky za vaše reakce.
dehtak
Profil
Proc tak slozite , staci napsat
include ("config.php"); 
include ("mysql.php"); 
.
Nevim teda co mas v umyslu, ale na co ten ob_start a ta hlavicka hned.
Neni lepsi si nacist potrebne soubory a az pak vypisovat html ?
tiso
Profil
- zbytočné ob_start/ob_end_flush
- header s charsetom potrebuješ až pri výpise stránky, takže by si ho mal dať až za tie kontroly so 404-kami
- tá mágia s configom je podľa mňa zbytočná, stačí ti require
- pripojenie k databáze by som dal až po 404-kách, zbytočne sa budeš pripájať k databáze ak nebude existovať modul podľa $_GET['url'], je možné že pri niektorých stránkach to pripojenie vôbec nebudeš potrebovať.
frauen
Profil *
Co jsem tak četl na internetu tak ob_start() vč. jeho ukončení ob_end_flush() slouží také k tomu, abych mohl v části kódu po té používat header() např. pro přesměrování. Navíc by mělo sloužit také ke komprimaci ne? Nebo jsem to pochopil špatně?

Co se týče načtení konfiguračního souboru tak jsem to udělal takto, protože když se nenačte konfigurační soubor tak nebude fungovat ani připojení k MySQL a následně zbytek stránky. Myslím si, že to není na škodu když se případně vypíše, že konfigurační soubor nebyl nalezen ne? Zdá se mi to alespoň uživatelsky přívětivější.

Header s charsetem jsem použil proto, aby se pak případné 404ky, které pak definuji, zobrazily ve správném kódování (pokud by byly např. česky). Použil jsem to na začátku, abych nemusel header() použít vícekrát. Budoucí rozsah zatím sám nevím. Nebo je v tom aplikování nějaký problém?

Je možné, že v některých stránkách opravdu připojení k MySQL potřebovat nebudu, ale jak bych měl obecně udělat řešení, zda se připojit či ne (podle modulu)?
Keeehi
Profil
frauen:
ob_start()“ „sloužit také ke komprimaci
Přímo ne, ale dá se.

ob_start()“ „abych mohl v části kódu po té používat header()
Také ne. Header můžeš používat, dokud "nepošleš nějaká data" (echo, print a další). Funkce ob_start() toto poslání pozdrží, takže můžeš použít funkci header i po vypsání.

Zdá se mi to alespoň uživatelsky přívětivější.
Uživatele nezajímá, že se někde nenačetl nějaký konfigurační soubor. To by ani neměl vědět. Spíš by jsi mu měl ukázat nějakou stránku, kde se mu omluvíš za vzniklé potíže s nedostupností a nabídneš mu odkazy, které by ho mohli zajímat. (úvodní stránka, předchozí stránka, stránka kategorie, atd..)
frauen
Profil *
Keeehi:
ob_start() jsem tedy s použitelností header() pochopil zřejmě správně. Až budu mít nějaký modul, kde budu mít např. úpravu nějaké stránky a následně po úspěšném upravení provedu přesměrování na seznam článků pomocí header(), bude mít tedy ob_start() správně využití, že?

Mohl bych se zeptat, jak je to tedy s tím komprimováním?

Ke konfiguračnímu souboru a mému názoru, že je to uživatelsky přívětivější: co když budou všechny stránky tvořené skrz MySQL databázi a jejich výpis také? Pak jinou možnost nemám, nebo ano? K tomu, že se nepodařilo načíst konfigurační soubor, zřejmě nedojde, je to jen jakési opatření. Případně poradíš mi konkrétnější řešení této situace?
dehtak
Profil
A uz jsem pochopil o co se tu snazis , ty si pises framework :-) Respektive php routing
No neco mam v praci rozepsanyho tak ti to muzu poslat .
frauen
Profil *
dehtak:
Však přesně to mám v mém prvním příspěvku.
dehtak
Profil
prvne co bys mel pochopit, je architektura stavby v php.
prvne je traba nacist potrebne soubory pak zpracovat data , pak teprve nacist nakej modul , pak az uplne nakonec vypsat html. To je jako stavet barak od strechy do zakladu. Prvne postav zaklady a potom az strechu.
frauen
Profil *
dehtak:
Myslím si, že framework je trochu něco složitějšího a především co jsem koukal, je psán pomocí OOP, s čímž jsem ještě něpřišel do styku. Ale pokud bys mi mohl poskytnout nějaké materiály, byl bych moc vděčný.
dehtak
Profil
dej mi nakej kontakt , zejtra ti to poslu. Ja taky v oop moc nepisu.
frauen
Profil *
dehtak:
pastre@centrum.cz
Mastodont
Profil
V zásadě na to jdeš dobře, ale zcela mimo je to $_GET['url'], dneska jsou GETové adresy zastaralé.

A htmlspecialchars se používá na výstupu, ne vstupu.
frauen
Profil *
Mastodont:
A htmlspecialchars se používá na výstupu, ne vstupu.
Takže když mi do url někdo podstrčí škodlivý kód tak jak se tomu mám bránit?

V zásadě na to jdeš dobře, ale zcela mimo je to $_GET['url'], dneska jsou GETové adresy zastaralé.
Jak se to tedy praktikuje v dnešní době?
Beavis
Profil
frauen:
Jak se to tedy praktikuje v dnešní době?
Tuším, že přes routování adres, nejčastěji skrze nějaké framework. IMHO GETové adresy nejsou zastaralé, pro naučení PHP si myslím že stačí, později se pak dají přepisovat na friendly url.
frauen
Profil *
Beavis:
Tuším, že přes routování adres, nejčastěji skrze nějaké framework. IMHO GETové adresy nejsou zastaralé, pro naučení PHP si myslím že stačí, později se pak dají přepisovat na friendly url.
A neměl bys o tom nějaký článek? O ničem takovém jsem nikdy neslyšel.
Mastodont
Profil
"pěkná url", přes Google najdeš spoustu stránek
frauen
Profil *
Mastodont
Měl jsem na mysli to routování adres.
Mastodont
Profil
frauen:
No vždyť to je ono, máš adresu www.web.cz/kalendar/rijen a routování ti z toho určí modul (kalendář) a parametry (měsíc = říjen)
frauen
Profil *
Mastodont:
Myslel jsem zda nemáš na doporučení určitý článek o tom routování?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: