Struttura del file e delle cartelle del sito Web

1

Sto riscontrando un problema nell'apprendere come dovrebbe essere la struttura del sito web adeguata. E con questo intendo come codificare le pagine e come dovrebbe essere la struttura delle cartelle.

Attualmente sto navigando nel mio sito web usando le variabili GET in PHP quando vuoi andare su un'altra pagina, quindi sto sempre caricando il file index.php. E vorrei caricare la pagina che volevo in questo modo:

$page = "error";

if(isset($_GET["page"]) AND file_exists("pages/".$_GET["page"].".php")) {

    $page = $_GET["page"];

} elseif(!isset($_GET["page"])) {

    $page = "home";

}

E questo:

<div id="page">
    <?php
         include("pages/".$page.".php");
    ?>
</div>

Il motivo per cui lo sto facendo è che rende le nuove pagine molto più semplici perché non devo collegare i fogli di stile e javascript in ogni file in questo modo:

<head>
    <title>
        Website Name
    </title>

    <link href='http://fonts.googleapis.com/css?family=Lato:300,400' rel='stylesheet' type='text/css'>
    <link rel="stylesheet" href="css/style.css" type="text/css">
    <link rel="shortcut icon" href="favicon.png"/>

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript"></script>
    <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js" type="text/javascript"></script>

</head>

Ci sono molti problemi a farlo in questo modo dato che gli URL non sembrano normali ("? page = apanel / app") se sto cercando di accedere a una pagina da una cartella all'interno della cartella delle pagine per evitare confusione.

Ovviamente questo non è l'unico modo per farlo e non riesco a trovare il modo corretto per farlo perché sono sicuro che i siti web non collegano i fogli di stile in ogni file, perché sarebbe molto brutto se tu cambiassi un nome di file o necessario per aggiungere un altro file, dovresti cambiarlo in ogni file.

Se qualcuno potesse dirmi come è effettivamente fatto o indicarmi un tutorial che sarebbe bello.

Grazie per il tuo tempo:)

    
posta Drummss 04.06.2014 - 07:28
fonte

1 risposta

2

Potresti non rendertene conto, ma in realtà stai utilizzando il pattern di progettazione Front Controller . È molto comune utilizzare un singolo index.php come punto di partenza per ogni pagina. Tutti i grandi framework PHP MVC (come Zend, Symfony, Laravel) fanno questo.

Per rendere gli URL belli, di solito è necessario aggiungere qualcosa alla configurazione di Apache (supponendo che Apache sia il tuo server web). Con Apache, questo viene in genere fatto aggiungendo un RewriteRule a un file .htaccess che traduce un percorso come /mypage in un percorso come /index.php?page=mypage .

La guida all'installazione di Laravel qui link fornisce un esempio tipico di cosa dovrebbe essere contenuto in .htaccess .

Un avvertimento , il codice che hai incollato nella tua domanda presenta alcuni pericolosi difetti di sicurezza. Un utente malintenzionato potrebbe facilmente fare in modo che la tua pagina includa i file che non hai intenzione passando URL come /index.php?page=../../../../etc/passwd o qualcosa del genere. Dovresti disinfettare l'input (forse rimuovendo tutti i caratteri '/') prima di usarlo nella riga 'include'.

    
risposta data 04.06.2014 - 13:38
fonte

Leggi altre domande sui tag