Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Perchè la variabile $_SERVER['HTTP_ACCEPT_LANGUAGE'] è sempre vuota?

    Ho incluso questo codice nelle pagine del mio sito:

    $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
    if ($lang == 'it') {
    include('lang_it.php'); }
    elseif ($lang == 'en') {
    include('lang_en.php'); }
    else {
    include('lang_it.php');
    }

    Quando vado a cambiare la lingua del browser, qualsiasi browser, la variabile $lang risulta sempre vuota e quindi la lingua utilizzata e sempre quella di default (italiana).
    Perchè succede questo e come ovviare a questo problema?

    Grazie cmq
    Luciano

  2. #2
    prendendo dalla documentazione, perchè non l'ho mai usato:
    codice:
    $locale = locale_accept_from_http($_SERVER['HTTP_ACCEPT_LANGUAGE']);
    anche così, o così:
    codice:
    $locale = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
    ti risulta vuoto??

  3. #3
    Non è cambiato niente.
    Luciano

  4. #4
    Prima cosa, usa F12 e verifica che cosa invia il tuo browser al server.

    Poi usa print_r($_SERVER) per vedere cosa arriva al server.

  5. #5
    Usando print_r($_SERVER) ricevo questa risposta:

    Array
    (
    [USER] => admin_enigma
    [HOME] => /var/www/vhosts/enigma3.it
    [SCRIPT_NAME] => /index.php
    [REQUEST_URI] => /
    [QUERY_STRING] =>
    [REQUEST_METHOD] => GET
    [SERVER_PROTOCOL] => HTTP/1.0
    [GATEWAY_INTERFACE] => CGI/1.1
    [REMOTE_PORT] => 39350
    [SCRIPT_FILENAME] => /var/www/vhosts/enigma3.it/httpdocs/test-sviluppo/index.php
    [SERVER_ADMIN] => root@localhost
    [CONTEXT_DOCUMENT_ROOT] => /var/www/vhosts/enigma3.it/httpdocs/test-sviluppo
    [CONTEXT_PREFIX] =>
    [REQUEST_SCHEME] => https
    [DOCUMENT_ROOT] => /var/www/vhosts/enigma3.it/httpdocs/test-sviluppo
    [REMOTE_ADDR] => 81.208.11.32
    [SERVER_PORT] => 443
    [SERVER_ADDR] => 195.231.22.14
    [SERVER_NAME] => sviluppo.enigma3.it
    [SERVER_SOFTWARE] => Apache
    [SERVER_SIGNATURE] =>
    [PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
    [HTTP_COOKIE] => PHPSESSID=b774aelnkusu0c8thd0abgjmv8
    [HTTP_SEC_GPC] => 1
    [HTTP_SEC_FETCH_USER] => ?1
    [HTTP_SEC_FETCH_SITE] => none
    [HTTP_SEC_FETCH_MODE] => navigate
    [HTTP_SEC_FETCH_DEST] => document
    [HTTP_UPGRADE_INSECURE_REQUESTS] => 1
    [HTTP_ACCEPT_ENCODING] => gzip, deflate, br
    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
    [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0
    [HTTP_CONNECTION] => close
    [HTTP_X_ACCEL_INTERNAL] => /internal-nginx-static-location
    [HTTP_X_REAL_IP] => 81.208.11.32
    [HTTP_HOST] => sviluppo.enigma3.it
    [proxy-nokeepalive] => 1
    [HTTPS] => on
    [PERL5LIB] => /usr/share/awstats/lib:/usr/share/awstats/plugins
    [UNIQUE_ID] => Y1JY1Fhdr0V7DF1iQCnE@wAAAAQ
    [FCGI_ROLE] => RESPONDER
    [PHP_SELF] => /index.php
    [REQUEST_TIME_FLOAT] => 1666341076.8809
    [REQUEST_TIME] => 1666341076
    )

    Nessun riferimento alla lingua del browser.
    Luciano

  6. #6
    E questo?

    Quote Originariamente inviata da filippo.toso Visualizza il messaggio
    Prima cosa, usa F12 e verifica che cosa invia il tuo browser al server.
    Se usi https://www.php.net/apache_request_headers cosa ottieni?

    Non è che tra client e server c'è un proxy/load balancer/firewall che elimina l'header della lingua?

  7. #7
    Ho utilizzato questa istruzione:

    <?php
    $headers
    = apache_request_headers();

    foreach (
    $headers as $header => $value) {
    echo
    "$header: $value <br />\n";
    }
    ?>



    Ho ricevuto risultati diversi con Firefox e con Chrome:

    Cookie: PHPSESSID=b774aelnkusu0c8thd0abgjmv8
    Sec-Gpc: 1
    Sec-Fetch-User: ?1
    Sec-Fetch-Site: none
    Sec-Fetch-Mode: navigate
    Sec-Fetch-Dest: document
    Upgrade-Insecure-Requests: 1
    Accept-Encoding: gzip, deflate, br
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0
    Connection: close
    X-Accel-Internal: /internal-nginx-static-location
    X-Real-Ip: 81.208.11.32
    Host: sviluppo.enigma3.it


    Cookie: PHPSESSID=c86dfmtn9fqr4mcj3aftc7v72r; _gid=GA1.2.972631575.1666357652; _ga=GA1.1.453557358.1599055199; _ga_RP97K6FEVG=GS1.1.1666357651.6.1.1666357858.0.0 .0
    Accept-Language: it-IT,it;q=0.9,en-US;q=0.8,en;q=0.7
    Accept-Encoding: gzip, deflate, br
    Sec-Fetch-Dest: document
    Sec-Fetch-User: ?1
    Sec-Fetch-Mode: navigate
    Sec-Fetch-Site: cross-site
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36
    Upgrade-Insecure-Requests: 1
    Sec-Ch-Ua-Platform: "Windows"
    Sec-Ch-Ua-Mobile: ?0
    Sec-Ch-Ua: "Chromium";v="106", "Google Chrome";v="106", "Not;A=Brand";v="99"
    Cache-Control: max-age=0
    Connection: close
    X-Accel-Internal: /internal-nginx-static-location
    X-Real-Ip: 81.208.11.32
    Host: sviluppo.enigma3.it


    Quindi con Chrome (e con Edge) riesco a intercettare la lingua di default del browser, mentre con Firefox no.

    Perch� firefox si comporta cos�?
    Luciano

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.