Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    62

    Direttiva header("Location: ...") VS Macchina a stati

    Ciao a tutti,
    ho una domanda inerente la direttiva header di php.
    Questa direttiva permette, come sapete, di spostarsi da uno script php all'altro nel modo seguente.

    Esempio:
    Codice PHP:
    header("Location: path/to/script"); 
    Sul php.net ho però leggo la seguente affermazione:

    Ci sono due casi speciali di chiamate di header. Il primo è "Location". Location non trasmette solo un header al browser, ma anche un REDIRECT con codice di stato (302).
    Mi disturba il fatto che spostarsi da uno script all'altro il server deve dire al cliente di "cambiare pagina". La mia domanda è la seguente: la direttiva header può considerarsi una "best practice" per la programmazione di applicazioni web? Biisogna cercare di evitarla prediligendo altri sistemi?

    Un sistema alternativo potrebbe essere quello di simulare una macchina a stati (Moore state machine) creando una libreria UI in grado di mostrare le pagine dell'applicazione. Così facendo non è più necessario spostarsi con header su un determinato file, ma basta chiamare il metodo necessario.

    Grazie per l'aiuto,
    Mauro

  2. #2
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Generalmente ci si sposta da un o script da un altro quando serve farlo, ad esempio quando, a seguito dell'immissione di un form da client, il server processa i dati e poi redireige il flusso della navigazione ad un altro script che si occuperà di visualizzare a video qualcosa.

    Se utilizzi il "salto" di script solo per invocare diverse parti di codice, certo che questa non è una bella pratica..

    [.:: JaguarXF ::.]
    __________________

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    62
    È corretto usare la direttiva header in una situazione del tipo:

    prima pagina: mostra una lista di utenti
    seconda pagina: cancella un utente

    La prima pagina mostra una lista di utenti, ogni utente ha al suo fianco l'immagine di un cestino per la cancellazione (link + parametro GET). L'immagine (link) manda alla seconda pagina che effettua la cancellazione.

    È corretto usare header nella seconda pagina (dopo aver rimosso l'utente) per tornare sulla prima pagina e quindi mostrare di nuovo la lista utenti?


    Mauro

  4. #4
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Direi proprio di sì, è esattamente così che si opera.

    Se invece avessi già inviato dati al client in HTTP e volessi lo stesso redirezionare, dovresti usare JavaScript (dato che non puoi più inviare altri header HTTP appunto).

    [.:: JaguarXF ::.]
    __________________

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    62
    Quindi l'utilizzo della direttiva header è il "modus operandi" in queste situazioni giusto? Oppure ci sono altre vie che permettono di evitare di mandare un header? Insomma suona strano dover dire al client di richiedere un'altra pagina...

    Grazie Mauro

  6. #6
    dunque, premetto che non ho capito un acca di quello che avete detto, però se ti può essere utile, si può sostituire header con il javascript: document.location.href="pagina.php"

  7. #7
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Originariamente inviato da rey23
    Quindi l'utilizzo della direttiva header è il "modus operandi" in queste situazioni giusto?
    Giusto.

    Insomma suona strano dover dire al client di richiedere un'altra pagina...
    A me suona bene.
    In un'interazione client/server è il client a richiedere la risorsa, ed il server a fornirgliela.

    Anche con AJAX la situazione logica non varia.

    [.:: JaguarXF ::.]
    __________________

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    62
    Si ma in pratica il server deve dire al client "chiedimi la pagina XYZ"...

    Se però è l'unico modo.. allora è giusto così.

    Mauro

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.