За последние 24 часа нас посетил 17401 программист и 1272 робота. Сейчас ищут 1413 программистов ...

беда с сесиями(session)

Тема в разделе "PHP для новичков", создана пользователем PeaceDuke, 20 ноя 2008.

  1. PeaceDuke

    PeaceDuke Активный пользователь

    С нами с:
    8 ноя 2008
    Сообщения:
    32
    Симпатии:
    0
    Доброй времени суток=)Помогите пожалуйста...не знаю почему так происходит ...вроде всё как в учебнике==)
    Проблема вот в чём..Пхп ругаеться на сессию
    PHP:
    1.  
    2.  
    3. if (isset($_GET['summa']))  
    4.  {
    5.    header("Content-type: text/html; charset=windows-1251");
    6.  $summa=$_GET['summa'];
    7.  
    8.  if ($summa==$_SESSION['c']) echo 'true'; else cobra() ;}
    9.  else cobra();
    10.  
    11.  
    12. function cobra(){
    13. $a = rand(1,10);
    14. $b = rand(1,10);
    15. $c=$a+$b;
    16. function word($n) {
    17. if ($n==1) $s ='ОДИН'; else  
    18.  if ($n==2) $s ='ДВА'; else  
    19.   if ($n==3) $s ='ТРИ'; else  
    20.    if ($n==4) $s ='ЧЕТЫРЕ'; else
    21.     if ($n==5) $s ='ПЯТЬ'; else  
    22.      if ($n==6) $s ='ШЕСТЬ'; else  
    23.       if ($n==7) $s ='СЕМЬ'; else  
    24.        if ($n==8) $s ='ВОСЕМЬ'; else
    25.         if ($n==9) $s ='ДЕВЯТЬ'; else  $s ='ДЕСЯТЬ'; return $s;}
    26.        
    27. $_SESSION['c']=$c;
    28. //print $c+"<br>";
    29. //echo $a."+".$b;
    30. echo word($a)."+".word($b);}
    31. ?>
    Но если пишу её вот здесь
    PHP:
    1.  
    2. if (isset($_GET['summa']))  
    3.    header("Content-type: text/html; charset=windows-1251");
    4.  $summa=$_GET['summa'];
    5.  
    То всё работает.. тоже самое и с header("Content-type: text/html; charset=windows-1251"); всё бы ничего но надо начать её до ветвления...как быть?...выручите пожалуйста
    Зарание благодарю..
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Щас позвонил телепату, он сказал, что примерно прочитал текст возникающей ошибки и рекомендовал http://phpfaq.ru/headers хотя он не уверен.
     
  3. Frozen

    Frozen Активный пользователь

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
    function cobra(){
    $a = rand(1,10);
    $b = rand(1,10);
    $c=$a+$b;
    function word($n) {
    if ($n==1) $s ='ОДИН'; else
    if ($n==2) $s ='ДВА'; else
    if ($n==3) $s ='ТРИ'; else
    if ($n==4) $s ='ЧЕТЫРЕ'; else
    if ($n==5) $s ='ПЯТЬ'; else .....


    незакрытая скобка, не возвращаеш значение.
    используй IDE с подсветкой синтаксиса
     
  4. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Может лучше
    PHP:
    1.  
    2. <?
    3. function word($n){
    4. words = array ("НОЛЬ", "ОДИН", "ДВА", "ТРИ", "ЧЕТЫРЕ", "ПЯТЬ", "ШЕСТЬ", "СЕМЬ", "ВОСЕМЬ", "ДЕВЯТЬ", "ДЕСЯТЬ");
    5. if (isset(words[$n])) return words[$n];
    6. return false;
    7. }
    8.  
     
  5. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Сессии вроде по другому регистрируются - через функцию session_register имхо.
     
  6. PeaceDuke

    PeaceDuke Активный пользователь

    С нами с:
    8 ноя 2008
    Сообщения:
    32
    Симпатии:
    0
    Сппасибо большое.. оказались руки кривые=)
    И функция да=) спасибо за решение....самому своё не нравилось.
    Ну тогда ещё один вопрос :oops:
    то есть вместо session_start(); пишем session_register ?
     
  7. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Можно и вместо нее писать. Если session_start() не была вызвана до
    session_register(), то session_start() будет вызвана неявно без параметров.
     
  8. Петр

    Петр Активный пользователь

    С нами с:
    20 мар 2006
    Сообщения:
    1.253
    Симпатии:
    0
    Адрес:
    Центр Вселенной
  9. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Я это читал ващето
     
  10. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Стааарьё
     
  11. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    У меня таким макаром передается код для картинки с кодом
    PHP:
    1.  
    2. <?
    3. session_register("img_code");
    4. $_SESSION['img_code'] = rand(1000, 9999);
    5.  
    И все работет. С удовольствием посмотрю на другие варианты=)
     
  12. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
  13. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    видать нет...
     
  14. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Sergey89, спасибо за вариант. А чем он лучше?
     
  15. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    session_register применялась во времена register_globals.
     
  16. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Так и надо писать.
     
  17. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Ок, приму к сведению
     
  18. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    admyx оба варианта выдают одинаковый результат. Для меня ничего не изменилось от того что я изменил пару букв. Все равно сессии у меня используются только в этом месте
     
  19. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Зачем предварительно регистрировать каждую переменную сессии, если можно один раз объявить session_start и все переменные добавлять в массив?
     
  20. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Я полностью согласен с тобой=) но она у меня и так регистрировалась только один раз. видимо когда я делал этот участок кода мне попался старый мануал=)
     
  21. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Я в принципе говорю)))
    Допустим, когда переменных много.
     
  22. PeaceDuke

    PeaceDuke Активный пользователь

    С нами с:
    8 ноя 2008
    Сообщения:
    32
    Симпатии:
    0
    Возможно прописать чтоб сесия уничтожалась.. когда пользователь уходит в офф...?
    Или это не к чему?..(просто зачем сервак засорять)
     
  23. Frozen

    Frozen Активный пользователь

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
    не парься. Там все чистится автоматом
     
  24. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    http://phpfaq.ru/sessions