• User Attivo

    Cambio sessione con $_SERVER['PHP_SELF'];

    Ciao a tutti.
    Sto facendo un sito multilingua. Per cambiare da una lingua all'altra vorrei usare e sto usando le sessioni.
    Ora all'interno della pagina x.php vorrei mettere dei link in modo che se uno clicca si ricarica la stessa pagina con la sessione cambiata e quindi la lingua cambiata.
    E' possibile?
    Io ho provato mettendo nella pagina x.php un link

    <a href="scelta.php" target="_self">
    

    Questa pagina contiene [PHP]<?

    session_start();

    $_SESSION['lingua'] = "ing";
    //$_SESSION['lingua'] = $lingua_scelta;

    $_SERVER['PHP_SELF'];

    ?>[/PHP]

    Però non mi restituisce la pagina x.php con la lingua cambiata ma rimane scelta.php ...
    Come posso fare ?

    Grazieeeeeee


  • Super User

    L'attributo target non serve a non fare cambiare pagina XD
    Ma a scegliere la finestra target nel caso di frame, iframe o popups.

    Le scelte migliori che mi vengono in mente sono due:

    1. Fai una richiesta ajax alla pagina scelta.php passandogli come get la lingua scelta, e subito dopo fai fare un refresh alla pagina.

    2. Apri un popup a scelta.php e dopo far fare il refresh

    Oppure, potresti fare il link a scelta.php e da lì fare un reindirizzamento alla pagina di provenienza.


  • User Attivo

    Cominciamo col dire che, secondo me, non è una buona idea dal punto di vista SEO usare le sessioni per tenere traccia della lingua, mentre sarebbe più utile avere dei "siti" completamente separati ad esempio con un sottodominio diverso (it.sito.com / en.sito.com) oppure in una directory diversa (www.sito.com/it e www.sito.com/en)

    Detto ciò, semplicemente richiama la pagina in cui ti trovi con nella query string la lingua che desideri, creando poi un include in ogni pagina che metta la lingua nella sessione<span style="font-family: monospace;">, ad esempio:
    [html]<a href="index.php?lang=en">[/html]e poi in index.php (e in tutte le pagine, ecco perchè ti suggerisco di usare un include):
    [php]
    session_start();
    $_SESSION['lingua'] = "ing";
    [/php]Ciaooo! 🙂


  • User Attivo

    Ciao,
    ecco cosa intendevo io.
    A questo indirizzo ```
    http://www.parallels.com/it/

    
    
    Ecco come ho risolto:
    creo la pagina cambia.php
    [php]<?
    // Inizia sessione, usato per la lingua
    session_start();
    // Imposto la lingua
    $_SESSION["lingua_teile"] = $_GET["lingua"];
    // Redirect
    header("Location: {$_SERVER["HTTP_REFERER"]}");
    
    ?>[/php]e nelle mie pagine inserisco dei link con questa dicitura
    [php]<a href="cambia.php?lingua=ita" target="_self">[/php]e funziona il cambio lingua che volevo!