trigger_error - lepszym sposobem będzie przerobienie całego kodu aby obsługiwał wyjątki (Exception).
Klasa Database powinna przyjmować dane logowania z zewnątrz, czyli najlepiej jakiś config zrobić. Aktualnie masz na stałe w klasie to ustalone.
Również tę klasę mógłbyś lepiej o wiele napisać. Możesz zrobić też tak:
class Database extends PDO
aby móc korzystać z wszystkich dobrodziejstw PDO bo aktualnie masz tylko cztery metody.
Config mógłbyś przerobić aby móc ładować różne confingi.
Czemu Config trzyma dane z $_POST, $_GET itp? klasa Request powinna trzymać takie rzeczy.
Nazwa Secure chyba nie pasuje. Lepiej zrobić coś w stylu Filter (zerżnięte z SpawnFramework). I również ta klasa mogła by posiadać metody statyczne (aby korzystać w każdym momencie).
Ogólnie nie jest źle jak na początek, ale mógłbyś skorzystać z wzorca MVC.
Również możesz użyć przestrzeni nazw i dostosować się do
PSR.
Jeszcze uwaga co do szablonów. Aktualnie w jednym pliku masz otwarcie <html>, a w innym zamknięcie. Lepiej stworzyć nową klasę aby był główny szkielet szablonu i tylko w środku coś dokładać. Ja na przykład kiedyś stworzyłem taką klasę (nie jest w pełni gotowa, ale pełni podstawową funkcję)
http://pastebin.com/z8Ts2K1E.
A tutaj przykład:
https://www.dropbox.com/sh/mxv167nuf0wxr5x/...3jcnEU/templatePolecam stworzyć coś w tym stylu.
Ogólnie to wszystko. Życzę powodzenia w dalszym kodzeniu.
@EDIT:
Moja struktura frameworku, nad którym pracuję:
http://iv.pl/images/40560748049541680408.pngCzyli szkielet aplikacji. Polecam spojrzeć na frameworku, a na pewno będziesz wiedział później więcej.