Ciao, sto facendo un progetto in php mvc ma senza framework. Ho organizzato i file in questo modo:
- directory public: ci sono i file accessibili dall'esterno
- directory View: ci sono i file .php ma essenzialmente e' solo html
- direcory Model: contiene i file relativi alla connessione al database, e le classi che definiscono gli oggetti, per esempio la classe User.php
- directory Controller: contiene una classe 'generica' Controller e varie classi Controller piu' specifiche.
Ho creat una pagina di login (View/Login.php) con un form il cui action manda a public/index.php. In index.php c'e' questo codice:
invoke() e' una funzione in Controller/LoginController.php che legge i dati inseriti dall'utente e li controlla, se sono corretti (esiste un utente nel database con tale username e password) allora crea due variabili
globali e fa un redirect:
public/home.php fa questo:
HomeController e' una classe che estende Controller. Il costruttore di Controller guarda se esistono le variabili
e
.
Se esistono ok, se non esistono reindirizza a index.php.
Il mio problema e' che la riga
non reindirizza.
Spiego meglio: quando inserisco dei dati corretti (utente registrato) reindirizza per brevissimo tempo a home.php ma poi ritorna a index.php.
Invece dovrebbe reindirizzare a home.php e rimanerci, non tornare a index.php.
ho provato anche aggiungendo
all'inizio del file e
prima di
ma niente. Ho provato anche con
..
Come posso risolvere questo problema?
- directory public: ci sono i file accessibili dall'esterno
- directory View: ci sono i file .php ma essenzialmente e' solo html
- direcory Model: contiene i file relativi alla connessione al database, e le classi che definiscono gli oggetti, per esempio la classe User.php
- directory Controller: contiene una classe 'generica' Controller e varie classi Controller piu' specifiche.
Ho creat una pagina di login (View/Login.php) con un form il cui action manda a public/index.php. In index.php c'e' questo codice:
PHP:
$controller = new LoginController();
$view = $controller->invoke();
$view->render();
globali e fa un redirect:
PHP:
$_SESSION['logged_in'] = 1;
$_SESSION['username'] = $username;
header("refresh: 0; url = ../public/home.php");
exit();
PHP:
$controller = new HomeController();
$view = $controller->invoke();
$view->render();
PHP:
$_SESSION['logged_in']
PHP:
$_SESSION['username']
Se esistono ok, se non esistono reindirizza a index.php.
Il mio problema e' che la riga
PHP:
header("refresh: 0; url = ../public/home.php");
Spiego meglio: quando inserisco dei dati corretti (utente registrato) reindirizza per brevissimo tempo a home.php ma poi ritorna a index.php.
Invece dovrebbe reindirizzare a home.php e rimanerci, non tornare a index.php.
ho provato anche aggiungendo
PHP:
<?php ob_start();
PHP:
ob_end_flush();
PHP:
header("Location: $url", true, 302);
PHP:
header("refresh: 0; url=../public/home.php");
Come posso risolvere questo problema?
Ultima modifica: