Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    A header deve seguire sempre exit?

    Ciao a tutti, mi ritorvo qui anche oggi

    Il mio obiettivo è questo:
    ad un certo punto di uno script A devo invocare un altro script B e, terminato B, riprendere l'esecuzione di A da dove si era interrrotta.

    Scrivo questo nello scritp A:
    Codice PHP:
    //codice prima
    header("Location: url_script_b");
    //codice dopo 
    ma il codice di B non viene eseguito! In compenso il "codice prima" e il "codice dopo" invece sì.

    La cosa ancor più strana è che se faccio:
    Codice PHP:
    //codice prima
    header("Location: url_script_b");
    exit();
    //codice dopo 
    allora lo scritp B viene eseguito, solo perchè ho aggiunto exit, però (ovviamente) non esegue il "codice dopo" che a me serve. Ma è normale che per invocare un altro scritp dopo header devo mettere exit?

    Come posso con semplicità invocare uno script e tornare poi ad eseguire lo script chiamante?
    (non vale l'idea di mettere il codice dello scritp in una funzione :P)

    Grazie per gli aiuti, ragazzi!

  2. #2
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087
    Il mio obiettivo è questo:
    ad un certo punto di uno script A devo invocare un altro script B e, terminato B, riprendere l'esecuzione di A da dove si era interrrotta.
    non puoi mettere delle inclusioni condizionate
    (codice_A if(include codice_B) segue_codice_A)
    invece di entrare ed uscire dalla stessa pagina

  3. #3
    no, non posso includere.... sono obbligato a usare la funzione header

  4. #4
    Forse hai usato l'output buffering? Altrimenti non mi spiego quel comportamento.

    Comunque puoi fare in modo che B ritorni ad A magari settando un valore in GET cosi' A se trova quel valore settato esegue solo la parte dopo l'header.

    Pseudo codice:

    codice:
    // codice A
    if (not GET[codice_di_controllo])
        esegui prima parte
        header -> scriptB
    fine if
    
    if (GET[codice_di_controllo])
        esegui seconda parte
    fine if
    codice:
    // codice B
    fai quello che devi fare
    header("Location: scriptA.php?codice_di_controllo=1");
    Certo non mi sembra un buon esempio di progettazione.

  5. #5
    grazie per il suggerimento, ma non so cos'è l'output buffering..... come lo vedo? Non ho scritto nessuna istruzione che lo facesse credo..

  6. #6
    ho risolto aggirando il problema in questo modo....

    Codice PHP:
     //invoco lo script spostandomi in quella directory
    chdir($path);
    include(
    "p.php");
    chdir($path_ritroso); 

  7. #7
    Hai detto che non potevi usare include

  8. #8
    giusta osservazione, ma ho omesso dei dettagli....

    il mio obiettivo principe era spostarmi con la working directory ed eseguire lo script perchè in quella directory dovevo eseguire un programma esterno e per eseguirlo dovevo trovarmi lì con la WD. Cosa possibile solo con location o con chdir....

    Grazie lo stesso!

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.