Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194

    header location e output precedente: in alcuni server va in altri no

    Buona sera, da ignorante quale sono ho lavorato spesso con redirect header location all'interno di una pagina con html, ad esempio per inviare l'utente ad una pagina di errore nel momento che un'operazione fatta non è consentita. Nei server usati fin ora non ho mai avuto problemi mentre proprio oggi mi sono accorto del problema altrove.
    Mi domando quindi cosa renda differente l'interpretazione del codice da un server ad un altro e se una situazione come la seguente sia gestibile in quale maniera con header location.
    Grazie

    codice:
    <html>
    <header>
    ......
    ......
    </header>
    <body>
    <div class="header">....</div>
    .........
    <?php
    if (isset($_GET['pinco'])){
    ........
    ........
    } else if (isset($_GET['pallo'])){
    .......
    .......
    } else {
    
    header('Location: errore.php');
    exit;
    
    }
    ?>
    </body>
    </html>

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Visto questo codice, il comportamento corretto è quello sul server che ti da errore, perché hai dei tag html prima della funzione header().
    Si gestisce facilmente spostando la verifica della condizione per cui devi effettuare il redirect
    php
    Codice PHP:
    <?php
    if ( ! isset($_GET['pinco']) && ! isset($_GET['pallo']) )
    {
        
    header('Location: errore.php');
        exit;
    }
    ?>
    <html>
    <header>
    ......
    ......
    </header>
    <body>
    <div class="header">....</div>
    .........
    <?php
    if (isset($_GET['pinco'])){
    ........
    ........
    } else if (isset(
    $_GET['pallo'])){
    .......
    .......}
    ?>
    </body>
    </html>

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194
    Vero, ma nel caso alla verifica della condizione avessi del contenuto da mostrare con "include"?

    Codice PHP:
    if (isset($_GET['pinco'])){
    include 
    'pinco.php';
    } else {
    header ('Location: errore.php');

    Sono costretto a mettere il codice tra i tag html almeno di non includere anche i tag stessi e tutto il contenuto dell'header, cosa che eviterei.
    Una soluzione alternativa all'header?
    Resto sempre curioso di sapere cosa cambia nell'interpretazione dei server? Sistema operativo? Versione php? qualche opzione in php?

  4. #4
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Quote Originariamente inviata da Ciakko Visualizza il messaggio
    Vero, ma nel caso alla verifica della condizione avessi del contenuto da mostrare con "include"?

    Codice PHP:
    if (isset($_GET['pinco'])){
    include 
    'pinco.php';
    } else {
    header ('Location: errore.php');

    Sono costretto a mettere il codice tra i tag html almeno di non includere anche i tag stessi e tutto il contenuto dell'header, cosa che eviterei.
    Una soluzione alternativa all'header?
    Resto sempre curioso di sapere cosa cambia nell'interpretazione dei server? Sistema operativo? Versione php? qualche opzione in php?
    Non ho capito cosa vuoi dire

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Quale sarebbe il motivo della costrizione? Il mio codice si comporta esattamente come si comporta quello che hai postato tu.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194
    La differenza è che io includo del codice html che va inserito nel body. Essendoci quindi i tag html ho un output precedente a header location.

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Boh, continuo a non capire, l'include non risente di output precedente, quindi lo puoi mettere dove ti pare, è solo la founzione header() che devi mettere all'inizio.
    Puoi benissimo fare
    Codice PHP:
    <?php
    if ( ! $pippo )
    {
        
    header('Location....');
    }
    ?>
    <html>
    <header>
    ....
    </header>
    <body>
    ...
    <?php include('ciccio.php'?>
    ...
    </body>
    </html>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.