как создать передачу параметра в сессии

Тема в разделе "PHP", создана пользователем daniloff, 9 сен 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. daniloff

    daniloff Постоялец

    Регистр.:
    31 май 2008
    Сообщения:
    78
    Симпатии:
    3
    есть прблема.
    Имеется список параметров

    <select size="1" name="counter">
    <option value=""></option>
    <option value="1">1</option>
    <option value="2">2</option>
    </select>
    надо чтобы параметр counter передавалась посредствам сессии на всем сайте.
    2. Как вынять counter из сессии.
    Например если выбран 1 на любой странице селект должен быть выбран на 1.
    заранее спасибо за ответы!
     
  2. sotee

    sotee Создатель

    Регистр.:
    10 июл 2008
    Сообщения:
    17
    Симпатии:
    5
    Создание сессии и регистрация переменной $sCounter
    PHP:
    <?
      
    session_start();
      
    session_register("sCounter");
      
    $sCounter=$counter;
    ?>
    Теперь на любой другой странице можешь использовать эту переменную

    PHP:
    <?
      echo 
    $sCounter;
    ?>
     
  3. Jameson

    Jameson Читатель

    Заблокирован
    Регистр.:
    25 июн 2007
    Сообщения:
    406
    Симпатии:
    92
    Этот код не будет работать на конфигурациях с register_globals = off. Правильно так:

    PHP:
    <? 
      
    session_start(); 
      
    $_SESSION['sCounter'] = $counter

      
    $_SESSION['sCounter']++;
      echo 
    $_SESSION['sCounter']
    ?>
     
  4. uNknownMark

    uNknownMark

    Регистр.:
    22 сен 2007
    Сообщения:
    393
    Симпатии:
    169
    Или можно в таком варианте:
    PHP:
    <?php
    if (!isset($_SESSION)) session_start();/*Этот код не просто стартует сессию, а сначал проверят не была ли она запущена раньше что бы не было ошибки*/
    //Потом код занесения данных в сессию
    if (isset($_POST['Submit'])) {//Пользователь нажал кнопку Submit. Значит заносим данные в сессию
        
    $_SESSION['counter'] = $_POST['counter'];
    } else { 
    ?> <!-- Иначе это показ-->
        <select size="1" name="counter">
        <option value=""></option>
        <?php
            
    for ($i=1;$i<2;++$i) {
                if (
    $_SESSION['counter']==$i$select=' selected';
                else 
    $select='';
                echo 
    '<option value="'.$i.'" '.$select.'>'.$i.'</option>';
            }
        
    ?>
        </select>
    <?php ?>
     
    daniloff нравится это.
  5. ex3mer

    ex3mer Создатель

    Регистр.:
    19 ноя 2007
    Сообщения:
    21
    Симпатии:
    5
    А вот так делать НЕ правльно! Все советуют и так именно и должно быть, что переменные если не были определены ранее должны определяться обязательно. Если не залить явно из сессии в $sCounter значение то будет:
    1. не красиво (хз от куда эта байда взялась) - так движки не пишут!
    2. не удобно - можно легко запутаться
    3. на эту тему уже писали много материала про хаки :(
     
    daniloff нравится это.
  6. GwPlNicker

    GwPlNicker Создатель

    Регистр.:
    21 июн 2008
    Сообщения:
    22
    Симпатии:
    0
    Если уж на то пошло, то лучше сначала сделать чтобы работало, а потом модифицировать.
    Я сам использую $_SESSION['counter'], так проще, для меня по крайней мере.
     
  7. x@nder

    x@nder Постоялец

    Регистр.:
    3 апр 2007
    Сообщения:
    128
    Симпатии:
    5
    Согласен.
    Лучше хранить не в сессии
    А передавать постом или гетом
     
Статус темы:
Закрыта.