За последние 24 часа нас посетили 48007 программистов и 1807 роботов. Сейчас ищут 1343 программиста ...

Помощь в работе с сессиями

Тема в разделе "PHP для новичков", создана пользователем RazerVG, 2 июл 2014.

  1. RazerVG

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

    С нами с:
    5 дек 2013
    Сообщения:
    103
    Симпатии:
    0
    У меня есть к примеру две страницы(код одной ниже)

    С первой страницы я из формы методом POST посылаю на следующую страницу переменные:

    Код (Text):
    1.  
    2. $_POST['Down']
    3. $_POST['Up']
    4. $_POST['Left']
    5. $_POST['Right']
    6. $_POST['resolution_litron']
    Вот страница на которой я их получаю

    Код (Text):
    1.  
    2. <!-- СКРИПТ ДЛЯ ЗАПИСИ ЗНАЧЕНИЙ ИЗ ФОРМЫ В ПЕРЕМЕННУЮ -->
    3. <?php
    4.     session_start(); // Старт сессии
    5.  
    6.     if($_POST['resolution_litron']){
    7.         $res_lit = $_POST['resolution_litron'];
    8.  
    9.         if($res_lit == '1') // Скрипт задания ширины и высоты ==>
    10.         {$width = 615; $height = 460;}
    11.         elseif($res_lit == '2') { $width = 700; $height = 500;}
    12.         elseif($res_lit == '3') { $width = 600; $height = 416;}
    13.         elseif($res_lit == '4') { $width = 540; $height = 520;}
    14.         elseif($res_lit == '5') { $width = 610; $height = 430;}
    15.         else echo "Значение не выбрано";  // <== Конец скрипт задания ширины и высоты
    16.  
    17.         $_SESSION['width'] = $width; // Запись значений в Сессию
    18.         $_SESSION['height'] = $height; // Запись значений в Сессию
    19.  
    20.         unset($_POST['resolution_litron']);
    21.     }
    22.     else{
    23.         $width = $_SESSION['width'];
    24.         $height = $_SESSION['height'];
    25.     }
    26. ?> <!-- КОНЕЦ СКРИПТА ДЛЯ ЗАПИСИ ЗНАЧЕНИЯ ИЗ ФОРМЫ В ПЕРЕМЕННУЮ -->
    27.  
    28. <html>
    29.     <head>
    30.         <title>LITRON-28</title>
    31.         <link rel="stylesheet" type="text/css" href="index.css">
    32.     </head>
    33.  
    34.     <body>
    35.  
    36.         <!-- ФОРМА ДЛЯ ЕСЛИ НЕОБХОДИМО ИЗМЕНЕНИЯ ДЛЯ УСЛОВИЙ ПЕЧАТИ -->
    37.  
    38.         <form name="conditions" action="index.php" method="POST">
    39.             <table>
    40.                 <tr>
    41.                     <th>Условия печати</th>
    42.                     <th></th>
    43.                     <th></th>
    44.                 </tr>
    45.                 <tr>
    46.                     <th>Нижний отступ</th>
    47.                     <th><input type="text" name="Down" value="<?php if($_POST['Down'])
    48.                                                                     {
    49.                                                                         $_SESSION['down'] = $_POST['Down'];
    50.                                                                         echo $_POST['Down'];
    51.                                                                         unset($_POST['Down']);
    52.                                                                     }
    53.                                                                     elseif($_SESSION['down'])
    54.                                                                     {
    55.                                                                         echo $_SESSION['down'];
    56.                                                                     }
    57.                                                                     else echo 0;?>"/></th>
    58.                     <th>мм</th>
    59.                 </tr>
    60.                 <tr>
    61.                     <th>Верхний отступ</th>
    62.                     <th><input type="text" name="Up" value="<?php if($_POST['Up'])
    63.                                                                     {
    64.                                                                         $_SESSION['up'] = $_POST['Up'];
    65.                                                                         echo $_POST['Up'];
    66.                                                                         unset($_POST['Up']);
    67.                                                                     }
    68.                                                                     elseif($_SESSION['up'])
    69.                                                                     {
    70.                                                                         echo $_SESSION['up'];
    71.                                                                     }
    72.                                                                     else echo 0;?>"/></th>
    73.                     <th>мм</th>
    74.                 </tr>
    75.                 <tr>
    76.                 <th>Левый отступ</th>
    77.                     <th><input type="text" name="Left" value="<?php if($_POST['Left'])
    78.                                                                     {
    79.                                                                         $_SESSION['left'] = $_POST['Left'];
    80.                                                                         echo $_POST['Left'];
    81.                                                                         unset($_POST['Left']);
    82.                                                                     }
    83.                                                                     elseif($_SESSION['left'])
    84.                                                                     {
    85.                                                                         echo $_SESSION['left'];
    86.                                                                     }
    87.                                                                     else echo 0;?>"/></th>
    88.                     <th>мм</th>
    89.                 </tr>
    90.                 <tr>
    91.                     <th>Правый отступ</th>
    92.                     <th><input type="text" name="Right" value="<?php if($_POST['Right'])
    93.                                                                     {
    94.                                                                         $_SESSION['right'] = $_POST['Right'];
    95.                                                                         echo $_POST['Right'];
    96.                                                                         unset($_POST['Right']);
    97.                                                                     }
    98.                                                                     elseif($_SESSION['right'])
    99.                                                                     {
    100.                                                                         echo $_SESSION['right'];
    101.                                                                     }
    102.                                                                     else echo 0;?>"/></th>
    103.                     <th>мм</th>
    104.                 </tr>              
    105.                 <tr>
    106.                     <th></th>
    107.                     <th><input type="submit" name="POST_1" value="ИЗМЕНИТЬ"></th>
    108.                     <th></th>
    109.                 </tr>    
    110.             </table>  
    111.         </form> <!-- КОНЕЦ ФОРМА ДЛЯ ЕСЛИ НЕОБХОДИМО ИЗМЕНЕНИЯ ДЛЯ УСЛОВИЙ ПЕЧАТИ -->
    112.  
    113.         <?php // Скрипт для формы "conditions" ==>    
    114.            
    115.             $left = $_SESSION['left'];
    116.             $right = $_SESSION['right'];
    117.             $down = $_SESSION['down'];
    118.             $up = $_SESSION['up'];
    119.  
    120.             // <== // Расчет печатного поля // ==>
    121.  
    122.             $width_field = $width - ( $left + $right );
    123.             $height_field = $height - ( $down + $up );
    124.  
    125.             // <== // Конец расчет печатного поля // ==>
    126.  
    127.         ?>
    128.        
    129.         <!-- ВЫВОД ПЕЧАТНОГО ПОЛЯ -->
    130.        
    131.         <table>
    132.             <tr>
    133.                 <th>Печатное поле, мм</th>
    134.                 <th><?php echo "$width_field x $height_field";?></th>
    135.             </tr>
    136.         </table> <!-- КОНЕЦ ВЫВОД ПЕЧАТНОГО ПОЛЯ -->
    137.      </body>
    138. </html>
    И проблема в том что при нажатии на кнопку изменить, происходит расчет всех остальных параметров только почему то это можно сделать всего несколько раз дальше система почему то ломается и куда то пропадают переменные $width и $height ? Перегрузка ПК только помогает.

    И еще один вопрос на какую страницу разместить?

    Код (Text):
    1. session_start();
    Ну как я понял работу сессий. У меня при переходе на эту страницу $_POST['resolution_litron'] существует и к примеру он равен 1 то есть получается :

    Код (Text):
    1.  
    2. $width = 615;
    3. $height = 460;
    Их помещаю в сессию.

    А само значение $_POST['resolution_litron'] удаляю.

    То есть после перезагрузки страницы при помощи кнопки изменить, я помещаю эти значения из сессии в переменные.
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Там где работаете с ними.
     
  3. RazerVG

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

    С нами с:
    5 дек 2013
    Сообщения:
    103
    Симпатии:
    0
    Ок, а как тогда при обновлении страницы новую сессию не создавать, а продолжить работать с существующей? И как решить описанную проблему?
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    ты видимо не понимаешь как работает механизм сессий php.
    http://ru2.php.%6eet/manual/ru/book.session.php

    основа всего — сессионная кука, которую скрипт однажды выставляет, а браузер запоминает и отсылает вместе с новыми запросами. пока значение этой куки неизменно, php идентифицирует "текущую сессию".

    кука выставляется в особом заголовке (header), а заголовок можно выставить только тогда, когда еще не было никакого вывода — ни echo ни "простого текста до <?php" — это тоже команда вывода, на самом деле.
    убери нафиг <!-- --> до команды start_session() !!!

    Добавлено спустя 1 минуту 29 секунд:
    и вообще включи вывод ошибок и предупреждений И НЕ ИГНОРИРУЙ ИХ. каждый Warning это ценная подсказка тебе о твоих проблемах.

    http://phpfaq.ru/debug
     
  5. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Если ты используешь сессии т.е. твой проект предполагает повсеместное использование сессий, то вставляй этот код во все файлы, в самое начало.

    Перезапустить сессию не возможно, если ее нет, то она запустится, если она есть то запуск новой будет пропущен (грубо говоря так).
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Эхехе. И что это даст? Ну вот инклудит он 30 файлов. Надо 30 раз сессию дернуть? Сессия должна отрабатывать только в точке входа.
     
  7. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Я забыл дописать - "что бы наверняка"
    PS мы не знаем структуру его проекта, если там единая точка входа тогда в самом начале этой точки, а раз не дает точной информации и не читает описание функции, пускай ставить везде.