[PHP] redirect con Header e POST

Summerwind78
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


<?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
nessuno.nobody
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ì:
<?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

Summerwind78
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

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.