как создать привязку,сессию куков к странице ?

Discussion in 'PHP' started by ReduKToR, 19 Sep 2009.

  1. ReduKToR

    ReduKToR Active Member

    Joined:
    5 Jan 2009
    Messages:
    257
    Likes Received:
    179
    Reputations:
    4
    Дело вот в чем, до сегодняшних дней мой сервис был русскоязычным....по многочисленным просьбам,я решил добавить поддержку Английского....
    В реализации всё получилось,
    допустим на главной выбираеш еглиш и все меняется,
    а вот при переходе на страницу регистрации все опять становится русским,хотя если и там нажать английский,то отображение тоже поменяется....

    Вот хочу посоветоваться и спросить, как можно привязать выбор языка, думаю без сессии куков тут не обойтись......
    для смены языков идет такой запрос...
    index.php?lang=en и index.php?lang=ru разумеется....

    в начале документа стоит
    session_start();
    set_time_limit(0);
    error_reporting(0);

    толку 0,при переходе на страницу регистрации- сессия не прописывается((((
     
  2. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    setcookie попробуй.

    Срок сессии истекает, а куки можно хранить до бесконечности.
     
  3. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    PHP:
    <script>
    function 
    SetCookie(name,value){
    var 
    argv=SetCookie.arguments;
    var 
    argc=SetCookie.arguments.length;
    var 
    expires=(argc>2)?argv[2]:null;
    var 
    path=(argc>3)?argv[3]:null;
    var 
    domain=(argc>4)? argv[4]:null;
    var 
    secure=(argc>4)? argv[5]:false;
    document.cookie=name+"="+escape(value)+((expires==null)?"":("; expires="+expires))+((path==null)?"":("; path="+path))+((domain==null)?"":("; domain="+domain));
    }
    function 
    getCookieVal(offset){
    var 
    endstr=document.cookie.indexOf(";",offset);
    if (
    endstr==-1)
    endstr=document.cookie.length;
    return 
    unescape(document.cookie.substring(offset,endstr))  ;
    }
    function 
    GetCookie(name){
    var 
    arg=name+"=";
    var 
    alen=arg.length;
    var 
    clen=document.cookie.length;
    var 
    i=0;
    while (
    i<clen){
    var 
    j=i+alen;
    if (
    document.cookie.substring(i,j)==arg)
    return 
    getCookieVal(j);
    i=document.cookie.indexOf(" ",i)+1;
    if (
    i==0)
    break;
    }
    return 
    null;
    }
    </script>
    <a onclick="SetCookie('lang','en')" href="#">Английский</a>
    <a onclick="SetCookie('lang','ru')" href="#">Русский</a>


    А в самом начале страницы GetCookie('lang') ну и небольшое знание js, а точнее if,then,else :)
     
    #3 Deathdreams, 19 Sep 2009
    Last edited: 19 Sep 2009
  4. ReduKToR

    ReduKToR Active Member

    Joined:
    5 Jan 2009
    Messages:
    257
    Likes Received:
    179
    Reputations:
    4
    тоже не помогло.........
     
  5. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    ReduKToR
    ты думаешь установил куки и всё?
    их проверять надо.

    PHP:
    switch($_COOKIE['lang']){

    case 
    "rus":

    //тут код или переадресация какаянибудь.
                    
    break;
    case 
    "eng":

    //тут тоже

                    
    break;
    default: 
    //тут переадресация на выбор языка
                    
    break;
       }
     
    1 person likes this.
  6. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    Получилось?
     
  7. oldsugar

    oldsugar New Member

    Joined:
    24 May 2009
    Messages:
    30
    Likes Received:
    0
    Reputations:
    0
    попробуй на странице регистрации что то типа

    session_start();

    if ($_SESSION['lang']=='en') {
    header("Location: ursite.ru/reg.php?lang=en ")
    }

    как записывать в сессию ,думаю, ты знаешь
     
    #7 oldsugar, 19 Sep 2009
    Last edited: 19 Sep 2009
  8. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    oldsugar
    лучше использовать конструкцию switch-case
     
  9. L I G A

    L I G A Banned

    Joined:
    27 Jul 2008
    Messages:
    482
    Likes Received:
    380
    Reputations:
    49
    если не устанвливать время действия куков, они будут действовавть как и сессии - до первого закрытия браузера.
     
  10. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    L I G A
    спасибо, Капитан Очевидность.