• User Attivo

    C'è un modo per sapere se sono settate variabili GET in generale o devo sapere io per quella pagina quali potrebbero essere e vedo se è settata?
    Comunque veramente grazie mille 😉


  • User Attivo

    E se lo facessimo con AJAX così non c'è bisogno di ri-caricare la pagina?


  • User Attivo

    La parte con il GET va che è una meraviglia. C'è solo una cosa che vorrei migliorare..se mi date una mano ve ne sono grato.

    Praticamente nel redirect (header) faccio un controllo. Se sono settate variabili GET redirect a $_SERVER['REQUEST_URI'] se no a $_SERVER['PHP_SELF']

    Però devo controllare che tra queste variabili non sia solo la variabile Lingua.

    E poi nelle bandierine:
    [PHP]<a href="<?php echo $_SERVER['PHP_SELF']; ?>?lingua=it"><div class="IT"></div></a>
    <a href="<?php if(isset($_GET) && count($_GET)) echo $_SERVER['REQUEST_URI']."&lingua=en"; else echo $_SERVER['PHP_SELF']."?lingua=en"; ?>"><div class="EN"></div></a>[/PHP]
    Con questo codice, se ho la pagina index.php?news=2&lingua=en, se clicco sulla bandiera inglese mi collegherà a index.php?news=2&lingua=en&lingua=en


  • User Attivo

    A quel punto dovresti fare tutto in ajax.
    Il caricamento di quel tipo sarebbe troppo per php.
    PHP funziona in modo sincrono, questo non permette di inviare dati ne di riceverli in modo asincrono.
    Quindi una volta caricato il file della lingua, devi ricaricare la pagina con un nuovo file lingua per ottenere il risultato voluto.
    Non so se esiste un isset($_GET). Prova, non si sa mai...


  • User Attivo

    Forse non ti è chiaro il concetto del GET.
    La forza di questo metodo è che una volta settato il cookie non hai più bisogno della variabile lingua nella URL.
    Quella serve solo per il cambio di lingua poi non serve.
    Quindi non ci deve essere sempre nella url (sai che brutto? 🙂 ).


  • User Attivo

    Esatto...se io sono nella pagina
    index.php?news=2

    la bandierina avrà come link: index.php?news=2&lingua=en

    Dentro il codice che controlla se $_GET['lingua'] è settata, faccio il redirect alla
    <? $_SERVER['PHP_SELF'];?> ma perdo a quel punto il valore della variabile $_GET['news']. E' quello che voglio conservare, non la variabile $_GET['lingua']


  • User Attivo

    Infatti per quello ti ho suggerito la request_uri, così tieni tutte le variabili get dell'url.
    [URL=http://www.giorgiotave.it/forum/gt-world/101972-forum-gt-disponibile-alle-versioni-per-telefoni-cellulari.html]Postato via Mobile


  • User Attivo

    Tengo tutte le variabili get, ma anche lingua allora 🙂


  • User Attivo

    Quello non è un problema.
    Tanto ogni volta che lo vede setta la lingua nel cookie. Se è sempre uguale non ti cambia nulla.
    Se non vuoi che esegua un'operazione inutile, metti un controllo all'inizio:
    [PHP]if(isset($_GET['lingua']) && $_GET['lingua']!=$_COOKIE['lingua']){
    //cambia il cookie
    }[/PHP]
    In questo modo non esegue il settaggio del cookie se non c'è la variabile get lingua e se c'è ma è uguale a quella già settata nel cookie non fa comunque nulla.
    Così cambia solo se è settata la lingua diversa dal cookie lingua.
    Contorto da spiegare ma mooolto semplice da capire 🙂


  • User Attivo

    Forse mi sono espresso male.
    Metti caso che sono sulla pagina "ciao.php?news=2"

    Allora vedo che ho già un GET settato allora quando creo il link alla bandierina, invece di crearlo per $_SERVER['PHP_SELF'] (che mi farebbe perdere il valore di news), lo creo con $_SERVER['REQUEST_URI']. E fino a qui è tutto ok.

    Ora in questo pezzo di codice:
    [PHP]
    if(isset($_GET['lingua'])){
    setcookie("lingua",$_GET['lingua'] ,time()+3600000000000);
    $redirect=$_SERVER['PHP_SELF'];
    header("location:".$redirect);
    }
    define("kLingua",$_COOKIE['lingua']);
    [/PHP]

    Cosa succede? Vede se la variabile "lingua" è settata e la assegna al Cookie. A quel punto mi deve re-indirizzare alla stessa pagina. Ma se faccio con $_SERVER['PHP_SELF'] perdo il valore di "news"...
    Se metto $_SERVER['REQUEST_URI'] funziona perchè mi reindirizza a "ciao.php?news=2&lingua=en". Il mio problema è, come faccio ad eliminare dall'indirizzo a cui re-indirizzare il valore di "lingua"??
    Sono stato più chiaro ora? Se no riprovo 😄


  • User Attivo

    Ti dirò, ieri in serata ho dovuto creare lo script d'accesso per un sito.
    Mi sono ingegnato (che esagggerato!!) una cosa per tenere un eventuale GET (o più) e cambiare la lingua.
    Ho creato un form con campi hidden. Ad ognuno ho passato un valore di cui avevo bisogno ed infine ho passato anche la request_uri.
    In questo modo nella seconda pagina controllo nome e password e se validi li reindirizzoo alla request uri che mi sono passato.
    Il tutto con un semplice javascript applicato all'immagine.
    [HTML]<a href="javascript: submitform()"><img blabla /></a>
    <script type="text/javascript">
    function submitform()
    {
    document.nomedeltuoform.submit();
    }
    </script>[/HTML]
    Non ti sto a dire di crearti una funzione e un form per ogni lingua perché con questo sistema è ovvio.
    Basta che crei un form che passa il valore del campo hidden lingua e la rispettiva funzione in javascript. Il nome del form e della funzione, ovviamente, cambiano in base alla lingua.
    Mettilo sempre nel file esterno così ce l'hai uguale per tutti.
    Nella seconda pagina ti crei il cookie che, una volta modificato, ti rimanda alla pagina precedente (nel nostro caso alla request_uri).

    Se te la cavi in ajax puoi fare il tutto in modo asincrono tramite una funzione javascript. Invii i dati, il cookie si modifica e fai un refresh della pagina. Questo sono sicuro funzioni perché l'ho fatto pochi siti fa.

    Rimango della convinzione che esista il modo di farlo tramite una funzione, e l'avevo anche fatto ma non mi ricordo... mannaggia!