Cześć wszystkim. Tworzę swój pierwszy, większy projekt - coś w rodzaju forum. Do tej pory zajmowałem się frontendem, ale teraz pomału wprowadzam elementy php. W moim projekcie mam kilkanaście podstron, na których stałymi elementami są: nawigacja oraz stopka. Z tego powodu, zacząłem używać Twiga, dla przejrzystości. Poniżej przedstawię strukturę moich plików i kodu:
Dla każdej podstrony mam plik .php i każdy z nich zawiera mniej więcej ten sam kod:
<?php
require_once 'lib/Twig/Autoloader.php';
Twig_Autoloader::register();
$loader = new Twig_Loader_Filesystem('temp');
$twig = new Twig_Environment($loader);
echo $twig->render('home.html');
?>
dodatkowo, dla każdej podstrony istnieje plik .html zawierający poszczególne elementy szablonu. Przykładowo:
{% extends "main.html" %}
{% block header %}
//elementy headera
{% endblock header %}
{% block content %}
//kontent
{% endblock content %}
oraz główy szablon main.html:
<!DOCTYPE html>
<html lang="pl">
<head>
{% block header %} {% endblock header %}
</head>
<body>
{% include "nav.html" %}
{% block content %} {% endblock content %}
{% include "footer.html" %}
<script src="login.js"></script>
</body>
</html>
1. Czy jest to prawidłowa struktura strony? Czytałem, że każda strona powinna mieć jeden plik wejściowy, np. index.php. Co to oznacza? Czy tam powinien być po prostu kod, który obowiązuje na każdej podstronie i który powinienem dodawać do pliku .php każdej podstrony za pomocą require_once()? Czy może chodzi o to, że te wszystkie pliki .php, które stworzyłem dla każdej podstrony są nadmiarowe i powinienem je zastąpić jednym plikiem index.php? (Nie wiem, jak miałoby to wyglądać, ponieważ w każdym pliku .php renderuje przecież inny plik .html. Chyba, że za pomocą switcha, ale z tego co czytałem, to plik index.php, nie powinien być obszerny)
Zadaje to pytanie, ponieważ doszedłem do etapu gdzie stworzyłem system rejestracji i logowania na stronie. Działa on tak, że w nawigacji znajdują się dwa przyciski "zaloguj się" i "zarejestruj się". Po kliknięciu przycisku "zarejestruj się" otwiera się okno z formularzem rejestracji (po prostu w .js zamieniam display: none diva na block). Po wypełnieniu formularzu i zatwierdzeniu wykonuje się kod zawarty w pliku rejestracja.php (sprawdzanie poprawności inputów, dodawanie do bazy danych), wywołany za pomocą atrybutu action="rejetracja.php" w znacznikach <form></form>...
//przy okazji drugie pytanie: 2. Czy wywoływanie w ten sposób kodu (za pomocą action) odpowiedzialnego za rejestracje jest prawidłowe? bezpieczne? Czy można to zrobić lepiej?
...Po wykonaniu kodu rejestracji chciałbym, aby ponownie pokazała się podstrona, na której został kliknięty przycisk "zarejestruj się" (jeżeli ktoś się rejestrował na stronie głównej, to niech pojawi się strona główna, jak na innej, to ta inna). I właśnie tu zastanawiam się, że ten plik index.php, o którym wspominałem w pytaniu 1. mógłby się tutaj przydać. Tzn. jakby był dodany do każdego pliku .php wszystkich podstron (za pomocą require_once()), to można by było zrobić tak:
W pliku index.php umieścić:
session_start();
if ( !isset( $_SESSION["origURL"] ) )
$_SESSION["origURL"] = $_SERVER["HTTP_REFERER"];
A pod koniec pliku rejestracja.php:
header('Location: '.$_SESSION["origURL"]);
3. Czy dobrze myślę, że do takich rzeczy przeznaczony jest index.php?