Bu başarabilmek için PHP oturumları veya çerezleri nasıl kullanılır?

3 Cevap php

Benim web sitesi dil bağımsız, ben kullanıcı seçimine dayalı dahil birçok dil paketleri var.

Kullanıcı seçim formu:

<form action='' method='POST'>
        <select name='language' onchange='this.form.submit();'>
         <optgroup>
            <option>Language</option>
         <option value='eng'>English</option>
         <option value='esp'>Español</option>
            <option value='fra'>Français</option>
            </optgroup>
        </select>
</form>

Komut:

 $language = $_POST['language'];

 if($language == "esp")
  include("languages/esp.php");
 else if($language == "fra")
  include("languages/fra.php");
 else
  include("languages/eng.php");

Ben sitede yeni bir sayfa tıkladığınızda sorun,, seçilen dil bir kez daha unutulmuş ve varsayılan İngilizce yüklemektedir. Ben bu yüzden tüm sayfaları bu dil paketini yüklemek ben seçilen dil kaydedilmiş tutmak için çerezleri veya oturumları kullanarak gerektiğini biliyorum. Ama nasıl?

3 Cevap

Sayfanın üstünde:

session_start();
if(isset($_SESSION['language']))
{
     $language = $_SESSION['language'];
}
else
{
     $language = "en";
}

include("languages/".$language.".php");

Form sayfasında:

session_start() // assuming you haven't already done this from the above code

$languages = array("en", "esp", "fra");
if(in_array($_POST['language'], $languages))
{
    $_SESSION['language'] = $_POST['language'];
}

session_start() sadece sayfanın sırasında bir kez çağrılması gerektiğini unutmayın. Normalde başlangıcına yakın.

Sanırım dil seçimi bahsediyoruz beri olsa çerezleri kullanmak istiyorsunuz ve kullanıcı onun / dil seçimini değiştirmek olası değildir. Kullanıcı / tarayıcısını kapatır eğer oturumları ile, dil seçim sıfırlanır. Bu biraz daha fazla kod @ dışında Chacha102 çözümü benzer olacaktır. Sen işlevini kullanarak çerez dil seçimini saklayabilirsiniz

setcookie()

Çerez sonra kullanıcının bilgisayarında saklanır. Çerez sona erecek zaman da belirtebilirsiniz. Sonra kullanarak çerez değerini (dil seçimi) alabilirsiniz $_COOKIE (benzer $_SESSION).

Definitely read this: http://www.w3schools.com/PHP/php_cookies.asp

Eğer oturumları kullanmak istiyorsanız, her sayfada session_start () kullanmak zorunda.