Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1

    Cambiare un parametro GET

    salve!
    sto facendo un sito in cui l'utente deve poter cambiare lingua cliccando sulla bandiera.
    per gestire la lingua ho impostato un parametro GET da portarmi appresso.
    ma se ho un link del genere:
    come faccio, cliccando sulla bandiera, a dirgli di cambiare solo il parametro lang?
    in sostanza vorrei cambiare lingua e rimanere nella stessa pagina.
    ho notato che $_SERVER['REQUEST_URI'] restituisce l'url compreso di parametri GET.
    devo partire da qua??

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    ci sono vari modi... puoi partire da $_SERVER, ma ricreando l'intero url (quindi passando in più anche gli altri parametri)

  3. #3
    Non ti consiglio questo metodo potresti usare i cookie fai prima e risolvi tutto con un semplice refresh

  4. #4
    Originariamente inviato da eiyen
    ci sono vari modi... puoi partire da $_SERVER, ma ricreando l'intero url (quindi passando in più anche gli altri parametri)
    potresti essere un pò più specifico?
    perchè nn ho capito cosa intendi...

    ai cookie ci avevo pensato, ma per una questione più che altro di sicurezza avevo deciso di abolirli del tutto.

  5. #5
    Originariamente inviato da fermat
    potresti essere un pò più specifico?
    perchè nn ho capito cosa intendi...

    ai cookie ci avevo pensato, ma per una questione più che altro di sicurezza avevo deciso di abolirli del tutto.
    Non vedo dove sia il pericolo basta impostarlo come http only ad esempio

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    in pratica quando generi il link recuperi solo il nome del file e poi appendi tutte le variabili da passare in $_GET

    puoi anche usare parse_url così:

    Codice PHP:
    $url $_SERVER['REQUEST_URI'];
    $parts parse_url($url); // "spezza" l'url
    $querystring $parts['query']; // argomenti come stringa
    parse_str($querystring$queryargs); // argomenti come vettore
    $queryargs['lang'] = 'en'// <------ qui cambi il parametro che vuoi
    $querystring ''// ricomponi gli argomenti...
    foreach ($queryargs as $k=>$v) {
      
    $querystring .= '&'.$k.'='.$v;
    };
    $parts['query'] = $querystring// re-inserisci gli argomenti
    // ... poi dovresti rigenerare l'url per il link 
    ...da testare/verificare/controllare :)

  7. #7
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    Una semplice cosa così no?
    Codice PHP:
    [url="?lang=it"][img]template/images/ita.png[/img][/url]
    [
    url="?lang=eng"][img]template/images/eng.png[/img][/url

  8. #8
    Originariamente inviato da _debo
    Una semplice cosa così no?
    Codice PHP:
    [url="?lang=it"][img]template/images/ita.png[/img][/url]
    [
    url="?lang=eng"][img]template/images/eng.png[/img][/url
    se fai così i leva tutti gli altri parametri passati in GET.

    provo con la soluzione di eyen!

  9. #9
    sono un attimo da capo a dodice.
    mi sono studiato tutte le righe che mi hai postato:
    Codice PHP:
    $url $_SERVER['REQUEST_URI'];
    $parts parse_url($url); // "spezza" l'url
    $querystring $parts['query']; // argomenti come stringa
    parse_str($querystring$queryargs); // argomenti come vettore
    $queryargs['lang'] = $_GET['lang']; // qui cambi il parametro che vuoi
    $querystring ''// ricomponi gli argomenti
    foreach ($queryargs as $k => $v) {
        
    $querystring .= '&' $k '=' $v;
    };
    $parts['query'] = $querystring// re-inserisci gli argomenti
    // ... poi dovresti rigenerare l'url per il link
    echo $querystring
    parse_url ritorna i componenti di un url.
    con $parts['query'] prendiamo tutto cioò che sta dopo ? (quindi i parametri GET).
    sotto spezziamo ulteriormente la stringa per prendere solo il parametro lang, che andiamo a modificare con la lingua che vogliamo noi.
    sotto ricomponiamo i parametri e li reinseriamo.
    ora come ora se stampo querystring mi esce una cosa del genere:
    codice:
    &lang=ita&cod=C2.0
    i valori sono giusti però al posto della prima & ci dovrebbe stare ?, o sbaglio?
    e poi ad essere sincero nn saprei come ricomporre tutto l'url.
    nel senso, al link sulla bandiera cosa gli dovrei passare?

  10. #10
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    Al link ci devi passare quello che ti ho scritto io. Non avevo capito ti servisse tutta la query string, detto che difatti funzionalmente non ti dovrebbe servire, se devi mantenere la query string intera allora ti consiglierei di valutare l'uso di una preg_replace senza bisogno di scrivere tutto quel codice.

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.