Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085

    header .. (torna al chiamante)

    Ciao ..
    com'è la faccenda che provando in locale (con easyphp), la chiamata ad una pagina che torna allo stesso chiamante attraverso il comando 'header' il tutto funziona correttamente, mentre se eseguo il tutto in un server nel web, la pagina chiamata 'butta fuori' le 'echo' e non torna al chiamante ?
    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    qualche impostazione differente.. ci sono troppe poche info per rispondere... forse dovresti attivare la visualizzaz. completa degli errori in remoto e riprovare

  3. #3
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    gia'0 solitamente dipende dalle configurazioni del server.
    Se per esempio hai impostato che i file html siano passati al parserphp in locale funziona... in remoto non e' detto. La soluzione potrebbe essere un htaccess che riabilita tale impostazione, se puoi farlo(perche' non e' detto nemmeno questo in quanto dipende dall'hoster).

    In mancanza di ulteriori specifiche .......

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    mi sembra di capire (per quel poco che conosco di php), che il comando 'header' serva per passare il controllo alla pagina 'x' da parte di pagine non visisualizzate .. (quindi alla base della navigazione)
    mi volete dire che per farlo funzionare servono delle impostazioni specifiche, che non siano impostazioni di base ?

  5. #5
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    NO !.

    La funzione header($param) serve per re-impostare l'intestazione della response che rilasci dal server. Il parametro "location" serve appunto per cambiare la "posizione" e quindi viene usato per eseguire il redirect dell'utente.

    Io consiglio sempre di studiare la documentazione prima di usare funzioni di cui si ignora il comportamente, e infatti sulla documentazione viene specificato che la funzione header, per operare correttamente, deve essere chiamata prima di generare qualsiasi output nello script altrimenti non sarà piu' possibile modificare l'header della response in quanto gia' inviato.

    A questo punto hai 2 soluzioni :

    1 strutturare il codice per evitare la generazione di output di qualsiasi tipo (echo var_dump etc...) prima delle chiamate ad header
    2 usare l'output buffer in modo da intercettare quanto la tua pagina dovrebbe generare e mal che vada eseguire il redirect.

    TI consiglio la 1, la 2 infatti richiede competenze un pò oltre il tuo attuale livello.
    Quindi fai attenzione a non generare nulla in output prima di chiamare header.

    ATTENZIONE : header non blocca l'esecuzione del codice per cui se devi eseguire un redirect e' opportuno usare die() dopo header . Ti lascio un test così puoi verificare sul campo

    Redirect con header sbagliato :
    Codice PHP:
    <?PHP

    header
    ("location:[url]http://www.google.com[/url]") ;

    sleep(1) ;

    header("location:[url]http://www.html.it[/url]") ;

    ?>
    Provalo e vedi che succede poi prova come esercizio a re-impostare il codice come segue:
    Se passo in get il parametro url=google => vado su google
    Se passo in get il parametro url=html.it => vaso su html.it
    Altrimenti stampa => "Nessun url inserito"


    facce sape come va

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    chiedo scusa .. quando parlavo di 'header' intendevo con 'Location':

    header ( "Location: index.php");


    in realtà prima dell'istruzione incriminata, eseguo delle 'echo' di variabili, che ho usato per testare la pagina ..
    in locale una volta inserita la 'header' (location), il controllo tornava correttamente
    al chiamante senza problemi, pur lasciando tutte le 'echo' ..

    quindi il problema stà proprio qua .. :-)
    .. provo e vi so dire
    Grazie mille

  7. #7
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Nessun problema facci sapere.

    Cmq e' sempre buona norma usare le corrette definizioni senno poi' non ci si capisce.
    E quindi header() e' la funzione che usi, e nel tuo caso gli passi il parametro "locationercorso" ..

    In quanto header puo' operare su molte cose. In questo caso e' un redirect, ma puoi dirgli di cambiare altro, ad esempio il tipo di flusso dati che stai per spedire .. etc..... etc...

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    visto che siamo in argomento di 'header' .. ne approfitteri per chieder un'altra cosetta .. :-)
    trattasi sempre di un comportamento diverso rispetto all'easyphp ..

    ho predisposto un download di un file, aspettandomi (come avviene in locale), che mi venga chiesto dove salvare il file (classica finestra di apri/salva), oppure me lo salvi direttamente nella cartella 'download' del pc

    nel webserver invece, mi apre direttamente il file nella pagina del browser (stessa della pagina che lancia il comando) ! :-(

    Codice PHP:
    header("Cache-Control: public");                                                       
    header("Content-Description: File Transfer");                                          
    header("Content-Disposition: attachment; filename=\"$filename_nome\"");                     
    header("Content-Transfer-Encoding: binary");                                           
    readfile($filename); 

  9. #9
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Ok manca qualcosa nell'header.
    Sui server remoti gli header devono essere i piu' completi possibile visto che nn sai a priori come e' configurato il server .

    Dai un occhio qui per maggiori info : http://php.net/manual/en/function.header.php

    E come suggerimento veloce

    Codice PHP:
    header("Content-type: text/javascript");
    header("Content-Disposition: inline; filename=\"download.js\"");
    header("Content-Length: ".filesize("my-file.js")); 
    Oppure
    Codice PHP:
    header("Content-type: application/force-download");
    header("Content-Disposition: attachment; filename=\"download.js\"");
    header("Content-Length: ".filesize("my-file.js")); 

    P.S.
    usavo anche io easy php poi sono passato a xampp e ho iniziato a vivere.
    Ti consiglio di darci un occhio e ponderare di abbandonare easy php e passare a xampp io mi ci trovo decisamente meglio.. poi vedi te nel caso provalo

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    ok .. grazie mille ! :-)

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.