Kwestię bezpieczeństwa zmieściłem w 2 linijkach kodu - zabezpieczenie warunku od $_GET oraz limit 1 rekordu z bazy danych. Swoją drogą nie jest to dużo, a zawsze jakoś zwiększa bezpieczeństwo.
Napisałem ten skrypt w oparciu o MVC (bardzo, bardzo pobieżnie, ale jednak). Jeśli nie wiesz jeszcze co to jest, to informuję, że jest to taki styl programowania, w którym oddzielasz od siebie szablon strony określający jej wgląd (mVc - view, czyli widok), elementy pobierające dane (Mvc - model, typ zbierania danych) oraz warstwę łączącą, która pozwala na współpracę między tymi elementami (mvC - controller). Więcej możesz poczytać w googlach, wiki oraz na forum, gdzie te kwestie były wyjaśniane dokładniej setki razy.
I teraz tak: chcesz mieć dane z plików zamiast z bazy? Spoko. Zamieniasz element pobierający dane na taki, który wykorzystuje pliki, oraz modyfikujesz nieco kontroler index.php:
1. Index.php
require_once('teksty.php') // załącza skrypty DO POBIERANIA ZAWARTOŚCI PLIKÓW - zmiana I
if(isset($_GET['pname'])) {// pname = page name (nazwa pliku) - zmiana II ALE TO TYLKO KWESTIA WIZUALNA $pname = mysql_escape_string($_GET['pname']) // WARTOŚĆ TEKSTOWA, SQL inject zawsze można zrobić, a z tekstem łatwiej na to wpaść }
else $pname = 'glowna' // Czyli na stronę główną
$pageArr = getPageArr($pname) // Funkcja pobiera dane strony
require_once('szablon.phtml');
I to by było na tyle co do modyfikacji index.php. Szablonu nie trzeba zmieniać, można tak napisać skrypt, żeby wciskał do tablicy te same dane.
2. teskty.php
function getPageArr($pname) {
$plik = file('jakas/sciezka/' . $name . '.php'); $pageArray['title'] = $plik[0];
foreach($plik as $klucz => $linia) {
if($klucz == 0) continue // Pierwsza linia jest określana jako tytuł strony, więc nie zaliczamy jej do treści
$pageArray['content'] .= nl2br($linia); // Zamieniamy znaki końca linii na znaczniki <br />,które powodują przejście do nowej lini w HTMLu }
return $pageArray
}
No i to wszystko. W sumie nie trzeba nawet robić tego nl2br.
file pobiera plik z wpisaniem każdej linii w osobnym polu tabeli - pierwsza linia w kluczu [0], druga w [1] itd...