Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17

Discussione: Redirect in PHP

  1. #11
    Torno sul problema cercando di essere il più chiaro e conciso possibile, visto che ho tentato con gli URL assoluti, ma senza successo.


    Allora....... ho un menù laterale con una voce che mi permette di switchare tra la versione italiana e quella inglese del sito che sto ristrutturando.
    La mia intenzione è quella di far tornare l'utente che vuole cambiare lingua alla pagina in cui ha clikkato il bottone per lo switch.

    Per fare questo mi sono inventato un metodo (che non so se sia buono, ma di sicuro è funzionante con URL semplici).
    Riporto il codice interessato (semplificato, naturalmente) sperando che riesca a spiegarvi meglio di come sto provando io a parole)

    Codice PHP:
    // determino la pagina dalla quale proviene l'utente
    $pagina basename($PHP_SELF);

    // Metto l'url della pagina nel bottone di switch della lingua
    echo "
    <a href=\"lingua.php?lang=en&path=
    $pagina\"> English </a>
    "

    Ora, il file lingua.php non fa altro che settare un cookie con la preferenza impostata dall'utente circa la lingua da usare, e redirigerlo verso la pagina di provenienza la quale (andando a leggere il cookie in questione) verrà visualizzata in inglese.

    Il codice del redirect lo avevo già riportato, ma REPETITA IUVANT.

    Codice PHP:
    // imposto il cookie
    setcookie("lingua""$lang");

    // effettuo il redirect
    if (!$path) {
            
    header("Location: home.php");
    } else {
            
    header("Location: $path ");

    Fintanto che la variabile $path è del tipo xxx.php oppure xxx.php?var=valore non ho alcun problema, mentre se è del tipo xxx.php?var1=valore1&var2=valore2 , stampo il valore di $path in lingua.php, scopro che si è persa un pezzo per strada e mi è diventata del tipo xxx.php?var=valore .

    Spero di essere riuscito a spiegarmi stavolta.... e spero pure che ci possa essere qualcuno che capisce dove è che sbaglio!

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  2. #12
    Originariamente inviato da alcio74
    Fintanto che la variabile $path è del tipo xxx.php oppure xxx.php?var=valore non ho alcun problema, mentre se è del tipo xxx.php?var1=valore1&var2=valore2 , stampo il valore di $path in lingua.php, scopro che si è persa un pezzo per strada e mi è diventata del tipo xxx.php?var=valore .

    Spero di essere riuscito a spiegarmi stavolta.... e spero pure che ci possa essere qualcuno che capisce dove è che sbaglio!

    la & separa le variabili sulla queryString, quindi nel secondo caso avrai la variabile $path che vale 'xxx.php?var1=valore' e la variabile $var2 che vale 'valore2'.

    Stampa l'array $_GET e vedrai che è così.

  3. #13
    VVoVe: Che idiota!!!!
    Ma come ho fatto a non pensarci da solo!

    Ad ogni modo, anche se in maniera un po'...... come dire ...... artigianale ho risolto!
    Metto il codice per vedere se può essere utile a qualcuno.

    Se poi qualcuno riesce anche a migliorarlo..... beh.. tanto di guadagnato per la community.



    Codice PHP:
    // lingua.php ==> Con modifica!
    setcookie("srl_lang""$lang");

    if (!
    $path) {
            
    header("Location: home.php");
    } else {
      
    $n sizeof($_GET);
      if(
    $n == 2) {
            
    header("Location: $path ");
      }
      else if (
    $n == 3){
           
    $path $_GET[path]."&id=".$_GET[id];
            
    header("Location: $path ");
      }




    Grazie skidx sei stato grandioso!!!
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  4. #14
    quel codice è sbagliato, le chiavi degli array vanno tra virgolette.

    E se eviti di usare il register_globals attivo è meglio.

  5. #15
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Originariamente inviato da skidx
    L'HTTP 1.1 prevede url completi con l'header Location.
    Più che altro l'RFC dell'HTTP 1.1 è stata scritta centodue anni fa.
    Per fortuna i browser in tal senso sono un po' più moderni da ricordare il contesto in cui si trovavano prima che arrivasse loro tale header...

    Forse chi l'ha pensato non si è ricordato che di default l'HTTP 1.1. utilizza connessioni persistenti? Non è un po' una contraddizione?...

    [.:: JaguarXF ::.]
    __________________

  6. #16
    Originariamente inviato da mark2x
    Più che altro l'RFC dell'HTTP 1.1 è stata scritta centodue anni fa.
    Per fortuna i browser in tal senso sono un po' più moderni da ricordare il contesto in cui si trovavano prima che arrivasse loro tale header...

    Forse chi l'ha pensato non si è ricordato che di default l'HTTP 1.1. utilizza connessioni persistenti? Non è un po' una contraddizione?...
    Direi di no, visto che Location serve per reindirizzare verso qualsivoglia URI, mica solo verso quelli interni dello stesso sito.

    Poi il fatto che i browser di oggi si adeguino a formati non standard non significa che un nuovo browser un domani non possa essere più rigoroso, e quindi visto che non costa niente è sempre preferibile adeguarsi allo standard con url assoluti.

  7. #17
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Originariamente inviato da skidx
    Direi di no, visto che Location serve per reindirizzare verso qualsivoglia URI, mica solo verso quelli interni dello stesso sito.
    Nel caso di URL diverso da quello in essere, il browser se ne accorgerebbe al volo.
    Il discorso non implica quindi il non poter usare URI brevi.

    Poi il fatto che i browser di oggi si adeguino a formati non standard non significa che un nuovo browser un domani non possa essere più rigoroso
    Su questo senz'altro hai ragione, ma, imho, non credo che browser futuri abbiano la "voglia" di tornare indietro...

    e quindi visto che non costa niente è sempre preferibile adeguarsi allo standard con url assoluti.
    Non è vero che non costa niente.
    Tento di spiegare il perchè, sempre imho.

    1. Ad ogni salto interno alla mia applicazione mi devo portare appresso il suo percorso all'interno della www; ciò può esser fatto cablando il percorso a mano o portandosi appresso qualche variabile, di sessione o cosa, o costante.
    Dato che il percorso dell'applicazione rispetto alla www può cambiare, è da programmatori alle prime armi cablare il percorso nel codice.
    Ergo: mi devo portare avanti ed indietro una variabile/costante assolutamente inutile.

    O scomodare le apposite primitive PHP (se programmo in PHP).
    Ma non tutti i linguaggi di scripting server-side le hanno.

    2. Nel caso in cui il programma possa esser usato sia con che senza tunneling SSL, devo assolutamente sapere come l'utente (installazione per installazione) lo chiama.
    Ergo: oltre ad una "zavorrosa" variabile devo anche papparmi una SERVER var anch'essa completamente useless.

    Che poi, questa server var, sarà uguale per tutti i webserver? Alla faccia della standardizzazione...
    E qui, comunque, non ci sono funzionalità PHP utili allo scopo. Non che io sappia per lo meno.

    3. Idem se il programma viene chiamato sia da LAN che dall'Internet e l'azienda non ha un DNS interno.
    Ergo: come sopra.

    Io credo sia per questo che i browser, intelligentemente, sono andati oltre uno standard vecchio di anni, che tra l'altro fa H2O da tutte le parti (mi riferisco nella fattispecie alla definizione dei meccanismi di caching, che infatti danno sempre problemi).



    Questo IMHO, ma anche di parere dei costruttori di browser.


    [.:: JaguarXF ::.]
    __________________

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 © 2026 vBulletin Solutions, Inc. All rights reserved.