php куки

Discussion in 'PHP' started by barnaki, 18 Jul 2011.

  1. barnaki

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

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    140
    Reputations:
    4
    не устанавливает куку. и самое интересное если закоментировать нижний header то оно выводит bad bad bad а если не коментировать то почему то срабатывает редирект. хотя этот хедер должен ругатся на то что вывод уже был.
    <?php

    if (!isset($_GET["lang"])) {header("location: ../");}
    else {
    $lang = $_GET["lang"];
    var_dump($lang);
    switch ($lang){


    case "ru": if(!setcookie("lang", $lang,time()+3600)) {echo "немогу установить куку";break;}
    case "en": if(!setcookie("lang", $lang,time()+3600)){echo "немогу установить куку";break;}
    default : echo "bad bad bad";



    }


    }
    header("location: ../");


    ?>
     
  2. miako

    miako Member

    Joined:
    20 Jan 2010
    Messages:
    154
    Likes Received:
    13
    Reputations:
    5
    Бррр...Как хедер может ругаться? Что показывает var_dump? Код лучше всего оформлять как код.
     
  3. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    barnaki уберите var_dump($lang);
     
    _________________________
  4. Fuckel

    Fuckel Banned

    Joined:
    16 Jan 2008
    Messages:
    274
    Likes Received:
    59
    Reputations:
    6
    Да, нужно убрать var_dump, и зачем вы печатаете "bad bad bad", выставляйте по умолчание, например, русский язык.
     
  5. barnaki

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

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    140
    Reputations:
    4
    блин ребят не сетится кука. убрал var dump. смотрю даже в папке cookies там ее нет. :( . может в новом апаче или в php какая настройка нужна ? использую последний xampp.
    PHP:
    <?php

    if (!isset($_GET["lang"])) {header("location: ../");}
    else {
        
    $lang $_GET["lang"];

        switch (
    $lang){
            case 
    "ru": if(!setcookie("lang"$lang,time()+3600)) {echo "немогу установить куку";break;}
                case 
    "en": if(!setcookie("lang"$lang,time()+3600)){echo "немогу установить куку";break;}
                default : echo 
    "bad bad bad";
        }

    }
     
    header("location: ../");

    ?>
    вот файл котороый принимает. но он ведет себя так как будто кука не стоит. ( она и не ставится)
    PHP:
    <?php
    session_start
    ();
    include 
    $_SERVER['DOCUMENT_ROOT']."/"."config"."/"."config.php";

    if (!isset(
    $_COOKIE['lang'])) {
        
    $smarty -> template_dir 'templates'."/".'en'."/";

    }
    else {
        
    $lang $_COOKIE['lang'];
        
        switch (
    $lang) {
            case 
    "en" :$smarty->template_dir 'templates'."/".'en'."/";echo "en";break;
            case 
    "ru" :$smarty->template_dir 'templates'."/".'ru'."/";echo "ru";break;
                default : echo 
    "wrong language";
        }
      }
    $smarty -> display('index.tpl');
    $smarty -> display("login_body.tpl");
    ?>
    как куку заставить работать ?
    вот собственно сам html
    HTML:
    <body>
    <a href="puzles/lang.php?lang=ru">ru</a><br>
    <a href="puzles/lang.php?lang=en">en</a><br>
    
    
    </body>
     
  6. Fuckel

    Fuckel Banned

    Joined:
    16 Jan 2008
    Messages:
    274
    Likes Received:
    59
    Reputations:
    6
    Выполните такой скрипт и посмотрите выставляется ли кука
    PHP:
    <?
    setcookie("test""test"time()+3600);
    ?>
    <script>alert(document.cookie);</script>
     
    #6 Fuckel, 19 Jul 2011
    Last edited: 19 Jul 2011
  7. barnaki

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

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    140
    Reputations:
    4
    alert вывел
    HTML:
    Drupal.toolbar.collapsed=0; PHPSESSID=vmbas1sbu0nbdro6figd7tov95
    куки test невидно
    в IE тоже не работает.
    блин народ помогите. не пойму сам почему кука не ставится.
     
    #7 barnaki, 19 Jul 2011
    Last edited: 19 Jul 2011
  8. barnaki

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

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    140
    Reputations:
    4
    если в файл который пишет куку вписать alert То он ее выводит и отлично видит. но когда переключаем страницу она исчезает. получается кука видна только для этой страницы.
     
    #8 barnaki, 19 Jul 2011
    Last edited: 19 Jul 2011
  9. barnaki

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

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    140
    Reputations:
    4
    все решил. чтобы куки были видны в других директориях надо было написать четвертый параметр.
    PHP:
    case "ru": if(!setcookie("lang"$lang,2*time(),"/")) {echo "немогу установить куку";break;}else break;