Reindirizzamento non va

stefano862

Nuovo Utente
5 Dic 2013
26
0
0
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:
PHP:
		$controller = new LoginController();
		$view = $controller->invoke();
		$view->render();
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:
PHP:
		$_SESSION['logged_in'] = 1;
		$_SESSION['username'] = $username;
		header("refresh: 0; url = ../public/home.php");
		exit();
public/home.php fa questo:
PHP:
		$controller = new HomeController();
		$view = $controller->invoke();
		$view->render();
HomeController e' una classe che estende Controller. Il costruttore di Controller guarda se esistono le variabili
PHP:
$_SESSION['logged_in']
e
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");
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
PHP:
<?php ob_start();
all'inizio del file e
PHP:
ob_end_flush();
prima di
PHP:
header("Location: $url", true, 302);
ma niente. Ho provato anche con
PHP:
header("refresh: 0; url=../public/home.php");
..

Come posso risolvere questo problema?
 
Ultima modifica:
ti suggerisco,

PHP:
$url = "Location: http://localhost/.../public/home.php"
header($url);
exit();

ciao
marino
 
scusa ... pensavo che il problema fosse causato da "refresh"
non ho altra idea se non dirti, guarda nel codice di home.php
ciao
 
Da come descrivi l'applicazione e il problema sembra che esso dipenda dal fatto che la sessione non viene mantenuta tra una pagina e l'altra.

In View/Login.php, prima di inizializzare il LoginController e in public/home.php, prima di inizializzare l'HomeController hai inizializzato la sessione con session_start() ?
 

Discussioni simili