[PHP] redirect con Header e POST
Ciao a tutti
sto facendo una piccola pagina in php, che in seguitò dovrò ampliare, che semplicemente redireziona ad un'altra pagina.
la pagina in questione si chiama "chechlogin.php" e contiene questo codice
sto facendo una piccola pagina in php, che in seguitò dovrò ampliare, che semplicemente redireziona ad un'altra pagina.
la pagina in questione si chiama "chechlogin.php" e contiene questo codice
<?php @ob_start(); header("Location: impostazioni.php"); exit(); ob_end_flush(); ?> a questa pagina dovranno in futuro essere passati tramite post i dati di login di un utente ma per ora io la chiamo usando $.ajax in jquery senza passare alcun valore via post il problema che mi nasce è il seguente: se richiamo questa pagina tramite post viene correttamente eseguita (verificato on x-debug e un breakpoint e ho visto che la apre correttamente), ma "header" non esegue nulla, mentre se la pagina "checklogin.php" la apro io direttamente tramite url "header" funziona benissimo. Sapreste spiegarmi perchè tramite post non fa nulla mentre con una chiamata diretta funziona? grazie mille
Risposte
Ciao, un paio di cosigli prima.
Non sopprimere i warning tramite @, è una brutta pratica.
La chiamata alla funzione ob_end_flush(); non verrà mai eseguita in quanto è dopo una exit.
In ogni caso non ha senso nemmeno usare ob_start() dato che l'unica cosa che quella pagina fa è un redirect.
In sostanza può diventare tranquillamente così:
Nel caso in cui amplierai la pagina, ricordati che ob_end_flush() dev'essere invocata *prima* della chiamata alla funzione header, altrimenti il redirect fallirà.
Prova a modificarla così, probabilmente ti si risolverà anche il problema (strano) che se fai una richiesta POST alla pagina ha un comportamento mentre se fai una richiesta GET un altro
Non sopprimere i warning tramite @, è una brutta pratica.
La chiamata alla funzione ob_end_flush(); non verrà mai eseguita in quanto è dopo una exit.
In ogni caso non ha senso nemmeno usare ob_start() dato che l'unica cosa che quella pagina fa è un redirect.
In sostanza può diventare tranquillamente così:
<?php die(header('Location: impostazioni.php')); ?>
Nel caso in cui amplierai la pagina, ricordati che ob_end_flush() dev'essere invocata *prima* della chiamata alla funzione header, altrimenti il redirect fallirà.
Prova a modificarla così, probabilmente ti si risolverà anche il problema (strano) che se fai una richiesta POST alla pagina ha un comportamento mentre se fai una richiesta GET un altro
prima di tutto grazie per la risposta
purtroppo il tuo suggerimento non cambia le cose
forse nel mio primo post mi sono spiegato male
non intendevo dire che con il GET funziona. Di fatto non paro la pagina dopo un submit con get, ma semplicemente digitando l'url nel browser. In tal caso funziona benissimo. Mentre se faccio aprire la stessa pagina php tramite post non fa il redirect
purtroppo il tuo suggerimento non cambia le cose
forse nel mio primo post mi sono spiegato male
non intendevo dire che con il GET funziona. Di fatto non paro la pagina dopo un submit con get, ma semplicemente digitando l'url nel browser. In tal caso funziona benissimo. Mentre se faccio aprire la stessa pagina php tramite post non fa il redirect