• User

    Eventuali istruzioni html dopo una redirect con header

    Ciao tutti, ho un dubbio che non sono riuscito a risolvere con la documentazione di php. Vi scrivo subito il codice:

    [PHP]

    <?php

    if( isset($_SESSION["user"] )
    header("location:altra_pagina.php");

    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Stri......

    <html>

    ...codice html di questa pagina...

    [/PHP]

    Come descritto nel codice, se $_SESSION["user"] esiste, l'utente viene spedito su di un'altra pagina. La domanda è: una volta eseguita la header,
    il codice html di questa pagina che fine fa? Viene ugualmente caricato in qualche modo? Sarebbe più corretto racchiudere l'html in un else alternativo all'if? Alternativamente all'else avevo pensato di aggiungere una exit dopo la header ma non so se la exit causi l'interruzione dello script (cioè fino a ?> ) o la mancata esecuzione di qualunque cosa segua.
    Grazie di nuovo, ciao


  • ModSenior

    Ciao Beetlejuice,

    Dopo l'header di redirect sarebbe bene inserire exit;
    In modo da bloccare lo script, poichè oltre alla possibilità di bloccare i redirect e sfruttare eventuali vulnerabilità in un codice scritto in quel modo(per esempio se usato per autenticare amministratori), su alcuni browser tipo internet explorer spesso e volentieri non esegue il redirect come ci aspettiamo faccia...


  • User

    D'accordo, allora il codice corretto sarebbe qualcosa del genere:

    [php]

    <?php

    if( isset($_SESSION["user"]) )
    {
    header('location:altrapagina.php');
    exit();
    }

    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Stri......

    <html>

    ...codice html di questa pagina...

    [/php]

    Ad ogni modo, il codice html di questa pagina che fine fa? Viene ignorato grazie alla exit pur non essendo incluso nello script php?
    Grazie ancora


  • ModSenior

    Ciao Beetlejuice,

    La sintassi coretta sarebbe exit;
    Al momento che esegui l'exit l'esecuzione dello script viene fermata e tutto ciò che segue quella funzione non viene eseguito. Di conseguenza non c'è alcun output html nel tuo caso.


  • User

    Grazie