[php] Cum să faci un site în php de la zero

Dacă va-ţi pus acestă intrebare vreodată presupun că sunteţi cunoscuţi cît de cît cu HTML-ul. Asta ar înseamna că stiţi principiul de funcţionare a unei pagini sau cel puţin înţelegeţi cum are loc navigarea dintr-o pagină în alta.
În mod obişnuit, de exemplu, eu primele pagini web scrise in php le organizam în modul urmator (se bazau pe acelaşi principiu ca în HTML-ul pur).
ex:

<html>
    <head>
        <title>Home Page</title>
    </head>
    <body>
        home |
        <a href="services.php">Services</a> |
        <a href="about.php">About</a>
       
        More about this site, about services and lorem ipsus.
       
        <?php
        // partea dinamica
        // adica cea ce tine de php
        .....
        ?>
       
    </body>
</html>
<html>
    <head>
        <title>Services Page</title>
    </head>
   
    <body>
        <a href="home.php">home</a> |
        Services |
        <a href="about.php">About</a>
       
        <?php
        print "Service 1";
        //.....
        ?>
       
        <?php
        print "Service 2";
        //.....
        ?>
       
        .........
       
    </body>
</html>

etc.

Însă aşa o organizare este de multe ori incomodă pentru un site mai dinamic. De exemplu, dacă trebuie de modificat sau de adaugat un link atunci va trebui să modificăm toate paginile.

Iata de ce eu propun să facem aşa un mecanizm care ne va usura munca. Mecanizmul constă în apelarea resurselor într-o singură pagină. Pentru a realiza acest lucru trebuie să specificăm nişte lucruri:

1. resursele vor fi intr-un directoriu aparte ex : “dinamic/” , si le vom numi “părţi dinamice”
2. carcasele paginilor (template) sau structurile de organizare, cum vreţi aşa numiţile, vor fi în alt directoriu aprte ex: “template/”
3. template-ul de bază se va numi ex: “default.phtml”;
template-ul de baza va fi implementat astfel incat sa fie setat ca implicit  pentru o anumită parte dinamică din “dinamic/” care nu va avea un template specificat.
4. partea dinamică implicită o vom numi ex: “default.php”
toate aceste specificări le vom plasa in fisierul pentru config (config.php)

NOTĂ : fisierele phtml nu se deosebesc cu nimic de fisierele html, sau html, sau php1, php2, php3, etc. însă în dependenţă de modul de configurare ale unor servere web ( WAMP, LAMP, MAMP etc.), codul php scris în fişierele html sau htm nu se execută ci se afişează ca text.

NOTĂ : recomand ca pe viitor, pentru facilitate, resursele de acelas tip să fie stocate în directorii cu nume reprezentative.

ex :
fişierele pentru stil (stylesheet), css/ *.css,
fişierele grafice (*.jpeg,*.gif,*.png, etc) images/*.*, sau gfx/*.*,
etc.

Şi deci avem aşa o structura în directoriul părinte al site-ului nostru :

index.php
config.php
dinamic/*.php
template/*.phtml

Specificările din config.php :

<?php
// constanta pentru resursa de implicita
define('BASE','home.php');
// daca pagina home este mai speciala
// si necesita un template aparte
// îl definim cu BASET;
define('BASET','home.phtml'); // ! daca este necesar
// template-ul care va fi utiliza în cazurile generale
define('DEF','default.phtml');
// pagina cu erore 404 în caz ca URI este cules de mîna
// si este cules gresit
define('ERRORT','error.php');
// template-ul pentru pagina cu erore 404
define('ERROR','error.phtml');
// directoriu pentru stocarea templat-urilor
define('TEMPLATE','template/');
// directoriu pentru stocarea partilor dinamice
define('RESOURCE','dinamic/');
?>

Daca mai sunt chestii care le veţi utiliza des în situl vostru puteţi să le specificaţi în config.php

în index vom scrie cod pentru prelucrarea URI şi anume cea ce se va transmite prin variabila GET. In dependenţă de valoarea acestei variabile vom apela template-ul şi partea dinamică necesară.

<?php
    include "config.php";

    //prelucram GET - ul, URI va avea forma
    //index.php?resource=nume_resursa&amp;params=param1,p2,p3,etc
    if ( isset( $_GET[ 'resource' ] ) ) {
        if ( strlen( $_GET[ 'resource' ] ) > 0) {
            // verificam daca exista o astfel de parte dinamica
            if ( is_file( RESOURCE . $_GET[ 'resource' ].'.php' ) ) {
                $resource = $_GET['resource'].'.php';

                // verificam daca pentru aceasta parte dinamica
                // este specificat un template special
                if(is_file(TEMPLATE . $_GET['resource'].'.phtml'))
                {
                    $template = $_GET['resource'].'.phtml';
                } else {
                    $template = DEF;
                }
   
                // identificam parametri suplimentari
                if ( isset( $_GET[ 'params' ] ) ) {
                    if( strlen( $_GET[ 'params' ] ) > 0 ) {
                        $params = explode( ',', $_GET['params'] );
                    } else {
                        $params = array();
                    }
                } else {
                    $params = array();
                }
            }
        } else {
            $resource = ERROR;
            $template = ERRORT;
        }
    } else {
        $resource  = BASE;
        $template = BASET;
    }
   
    include TEMPLATE . $template;
?>

Dacă aţi observat numele template-ului specificat trebuie să fie identic cu numele parţii dinamice pentru care dorim să specificăm un template special

În continuare vom arăta conţinutul template/home.phtml

<html>
    <head>
        <title> Home Page </title>
    </head>

    <body>
        Home |
        <a href="index.php?resurce=services">Services</a> |
        <a href="index.php?resurce=services">About</a>
       
        <div id="page">
            <?php include RESOURCE . $resource; ?>
        </div>
    </body>
</html>

În continuare vom arăta conţinutul template/default.phtml

<html>
    <head>
        <title><?php print $_GET['resource']; ?> Page </title>
    </head>
   
    <body>
        <div id="header">
        ......
        </div>
       
        <a href="index.php?resurce=home">Home</a> |
        <a href="index.php?resurce=services">Services</a> |
        <a href="index.php?resurce=about">About</a>
       
        <div id="page">
            <?php include RESOURCE . $resource; ?>
        </div>
    </body>
</html>

Dacă aţi observat doar în pagina home nu se va afişa regiunea div header.

din acestă cauză şi s-a specificat un template aparte.

În continuare dinamic/home.php

<?php
    if ( @$params[0] == 'red' ) {
        print '<div style="color:red;">';
        print 'This is a Home Page';
        print '</div>';
    } else {
        print '<div style="color:black;">';
        print 'This is a Home Page';
        print '</div>';
    }
?>

etc.

părţile dinamice Services şi About la fel se construiesc, adică în services.php şi about.php scriem codul care ţine doar de paginile services respectiv de about

Astfel în “dinamic/” vom plasa doar parţile care se vor modifica.

NOTĂ : este de menţionat, mai ales pentru începători, că variabilele dintr-un fişier la includerea altor fişiere se transmit în fişierul inclus cu valoarea de la momentul includerii.

sursele sunt verificate !!!

Dacă sunt întrebări îndrazniţi.

end.

Published by

Ticnitul

eu is student