За последние 24 часа нас посетили 54423 программиста и 1768 роботов. Сейчас ищут 1095 программистов ...

Сессия пропадает

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

  1. seifer

    seifer Новичок

    С нами с:
    27 май 2017
    Сообщения:
    76
    Симпатии:
    2
    Помогите разобраться почему сессия пропадает.
    Код (Text):
    1.  
    2. ...
    3. $_SESSION['access'] = $list;
    4. $a = file_get_contents('php://input');
    5. if(isset($a)){
    6. $list_answer=json_decode($a, true);
    7.  
    8. $r_value = array();
    9. $r_value = array_pop($list_answer);
    10.  
    11.  
    12. $w_value = array();
    13. $w_value = array_pop($list_answer);
    14.  
    15.     $result_r = array_intersect($list_answer, $r_value);      
    16.        
    17.         $r = count($r_value);        
    18.         $r_w = count($result_r);      
    19.         $percent_r = ($r_w/$r)*100;    
    20.        
    21.  
    22. $result_w = array_intersect($list_answer, $w_value);      
    23.        
    24.  
    25.         $r_wr = count($r_value);      
    26.         $r_w = count($result_w);  
    27.         $percent_w = ($r_w/$r_wr)*100;    
    28.         $common_res = $percent_r - $percent_w/2;
    29.  
    30.  
    31.             var_dump($_SESSION['access']); //Видит
    32.  
    33.             if(count($r_value)>0){
    34.                
    35.                  var_dump($_SESSION['access']); //NULL
    36. }  
    37.  
    38. }
    39.   ...
     
  2. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    фигня какая то.. не может такого быть.
     
  3. seifer

    seifer Новичок

    С нами с:
    27 май 2017
    Сообщения:
    76
    Симпатии:
    2
    Вот то-то же
     
  4. villiwalla

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

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Ты бы показал что ДО а не после
     
  5. seifer

    seifer Новичок

    С нами с:
    27 май 2017
    Сообщения:
    76
    Симпатии:
    2
    Файл целиком
    Код (Text):
    1.  
    2. function get_tests(){
    3.  
    4. $query = "SELECT text, diag FROM ther";
    5.  
    6. $res = mysql_query($query) or die(mysql_error());
    7. if(!$res) return false;
    8.  
    9.  
    10. $data = array();
    11.  
    12. while($row = mysql_fetch_array($res)){
    13.    
    14.     $data[] = $row['diag'];
    15.     //echo "<input type='submit' class='but01' name='submit_q[]'  value='".$row['text']."'/>";  
    16.     }  
    17. return $data;  
    18. //    $que = $_POST['submit_q'];
    19. //if(isset($_POST['submit_q'])){$g_que = get_question();}
    20. //else{echo "Выберите тест";}
    21. }
    22.  
    23. function print_test($data){
    24.     foreach($data as $list){
    25.     echo "<input type='submit' class='but01' name='submit_q[]'  value='".$list."'/>";
    26.     }
    27. }
    28.  
    29. if(count($_POST['submit_q'])>0 ){
    30.  
    31. $get_que = get_question();
    32.     $r_value = $get_que[0];
    33.     $w_value = $get_que[1];
    34.     $result = $get_que[2];
    35.    
    36. ?>
    37.  
    38. <script>
    39.  
    40. var arr = '<?= json_encode ( $r_value ); ?>';
    41. var arr_w = '<?= json_encode ( $w_value ); ?>';
    42.  
    43. arr = JSON.parse(arr);
    44. arr_w =  JSON.parse(arr_w);
    45.  
    46.  
    47. console.log(arr);
    48.  
    49.     window.onload = function(){
    50.     var elem = document.querySelectorAll('input[type=checkbox]');
    51.     var params = [];
    52.    
    53.  
    54.     document.querySelector('#send').onclick = function(){
    55.    
    56.         for(var i = 0; i < elem.length; i++){
    57.  
    58.             if(elem[i].checked){
    59.                
    60.         params[i] = elem[i].value;
    61.             }
    62.     }
    63.     var data = params;
    64.     if (data.length < 1){alert ('Ничего не выбрано');}
    65.     else{
    66.     for (var i = data.length; i >= 0; i--) {
    67.     if (!data[i]) data.splice(i, 1);
    68.     var tab = data.concat(arr_w, arr);
    69.     tab = JSON.stringify( tab );
    70. }
    71.     console.log(tab);
    72.        
    73. ajaxPost( tab);
    74. document.querySelector('#send').disabled=true;
    75.     document.querySelector('.mainwindow2').style.display = 'none';
    76.         document.querySelector('.result').style.display = 'block';
    77.        
    78.    
    79. }
    80. }
    81.         }
    82. function ajaxPost(tab){
    83.     var request = new XMLHttpRequest();
    84.    
    85.     request.onreadystatechange = function(){
    86.         if(request.readyState == 4 && request.status == 200){
    87.             document.querySelector('.result23').innerHTML = request.responseText;
    88.        
    89.         }
    90.     }
    91.     request.open('POST', '../modules/mod_test/tmpl/chkbox.php');
    92.     console.log( tab);
    93.     request.send( tab);
    94.    
    95. }
    96.  
    97.  
    98. </script>
    99.  
    100. <?
    101. }
    102.  
    103. $a = file_get_contents('php://input');
    104. if(isset($a)){
    105. $list_answer=json_decode($a, true);
    106.  
    107. $r_value = array();
    108. $r_value = array_pop($list_answer);
    109.  
    110.  
    111. $w_value = array();
    112. $w_value = array_pop($list_answer);
    113.  
    114.  
    115.     $result_r = array_intersect($list_answer, $r_value);      
    116.        
    117.        
    118.         $r = count($r_value);    
    119.         $r_w = count($result_r);      
    120.         $percent_r = ($r_w/$r)*100;  
    121.        
    122.          
    123.        
    124. $result_w = array_intersect($list_answer, $w_value);      
    125.        
    126.        
    127.         $r_wr = count($r_value);      
    128.         $r_w = count($result_w);  
    129.         $percent_w = ($r_w/$r_wr)*100;    
    130.         $common_res = $percent_r - $percent_w/2;
    131.      
    132.             var_dump($_SESSION['access']);
    133.                 if(count($r_value)>0){
    134.             var_dump($_SESSION['access']);
    135. }  
    136.  
    137.  
    138.    
    139.  
    140.    
    141.        
    142. function print_quest($result){
    143.     $q = $_POST['submit_q'];
    144.         echo "<div class='pict'>picture</div>";
    145.         echo "    <div class='sim' >";
    146.         echo "Выберите  -" .$q[0];
    147.         echo "</div>";
    148.            
    149.     foreach ($result as $data){
    150.             echo "<div class='answer_frame'><label class='lab01'><input type='checkbox'  name='sim[]'  value='".$data."'/> ".$data."</label></div>";
    151.         }
    152.         echo "<input type='button' id='send' name='simSubmit'  value='Submit'  /> ";
    153.        
    154. }
     
  6. villiwalla

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

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    И где тут установка сессии? session_start()?
     
  7. seifer

    seifer Новичок

    С нами с:
    27 май 2017
    Сообщения:
    76
    Симпатии:
    2
    Это просто подключаемый файл, сессия же есть, просто она какого-то фига не видится после скобок..
     
  8. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    @seifer Где-то со 135 по 142 строку потеряли одну закрывающую фигурную скобку.
    Прям var_dump() выводит null?
     
  9. seifer

    seifer Новичок

    С нами с:
    27 май 2017
    Сообщения:
    76
    Симпатии:
    2
    А если условие заменить на, то все работает.
    Код (Text):
    1.  
    2. if(true){
    3.                 var_dump($_SESSION);
    4.             }
    --- Добавлено ---
    Скобку при копировании потерял, выводит NULL. Выход что получает данные от ajax'a, и на этом моменте уже сессии не видит.

    Код (Text):
    1.  
    2. [LIST=1]
    3. [*]$a = file_get_contents('php://input');
    4. [*]if(isset($a)){
    5. [*]$list_answer=json_decode($a, true);
    6. [*]
    7.  
    8. [*]$r_value = array();
    9. [*]$r_value = array_pop($list_answer);
    10. [*]
    11.  
    12. [*]
    13.  
    14. [*]$w_value = array();
    15. [*]$w_value = array_pop($list_answer);
    16. [*]
    17.  
    18. [*]
    19.  
    20. [*]    $result_r = array_intersect($list_answer, $r_value);      
    21. [*]      
    22. [*]      
    23. [*]        $r = count($r_value);    
    24. [*]        $r_w = count($result_r);      
    25. [*]        $percent_r = ($r_w/$r)*100;  
    26. [*]      
    27. [*]        
    28. [*]      
    29. [*]$result_w = array_intersect($list_answer, $w_value);      
    30. [*]      
    31. [*]      
    32. [*]        $r_wr = count($r_value);      
    33. [*]        $r_w = count($result_w);  
    34. [*]        $percent_w = ($r_w/$r_wr)*100;    
    35. [*]        $common_res = $percent_r - $percent_w/2;
    36. [*]    
    37. [*]            var_dump($_SESSION['access']);
    38. [*]                if(count($r_value)>0){
    39. [*]            var_dump($_SESSION['access']);
    40. [*]}  
    41. [/LIST]
    --- Добавлено ---
    Делаю на локалке, может быть проблема в денвере или все же код корявый?
     
  10. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    На сколько я понял сессия у Вас теряется после проверки количества элементов в $r_value

    Что выведется, если закомментировать первый var_dump?
     
    #10 Maputo, 25 июл 2017
    Последнее редактирование: 25 июл 2017
  11. seifer

    seifer Новичок

    С нами с:
    27 май 2017
    Сообщения:
    76
    Симпатии:
    2
    Верно. Выдает NULL.
     
  12. seifer

    seifer Новичок

    С нами с:
    27 май 2017
    Сообщения:
    76
    Симпатии:
    2
    Попробовал посмотреть что происходит наблюдая за числами, выходит что сессия пропадает после проверки количества элементов в $r_value, а вот числа рандомные сохраняются.
    Код (Text):
    1.  
    2. $rnd = rand(5, 100);
    3. $_SESSION['num'] = $rnd;
     
  13. seifer

    seifer Новичок

    С нами с:
    27 май 2017
    Сообщения:
    76
    Симпатии:
    2
    Будто та часть кода как-то изолируется от всего что вокруг происходит..
     
  14. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    Такие чудеса всегда у новичков. Но так не бывает два вывода, между ними код ничего не делающий с сессиями и сессия жива, а переменной нету.

    Варианта всего 2:
    1. Там либо в обоих случаях одно значение и ты не туда смотришь.
    2. Либо ты где то перезаписываешь.
    3. Не дано!

    давай вардамп, всей сессии и сюда копируй оба результата вардампа.
     
  15. seifer

    seifer Новичок

    С нами с:
    27 май 2017
    Сообщения:
    76
    Симпатии:
    2
    Код (Text):
    1.  
    2. array(2) { ["__default"]=> array(8) { ["session.client.browser"]=> string(114) "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" ["session.counter"]=> int(6) ["registry"]=> object(JRegistry)#22 (1) { ["data:protected"]=> object(stdClass)#23 (0) { } } ["user"]=> object(JUser)#24 (25) { ["isRoot:protected"]=> bool(false) ["id"]=> int(0) ["name"]=> NULL ["username"]=> NULL ["email"]=> NULL ["password"]=> NULL ["password_clear"]=> string(0) "" ["usertype"]=> NULL ["block"]=> NULL ["sendEmail"]=> int(0) ["registerDate"]=> NULL ["lastvisitDate"]=> NULL ["activation"]=> NULL ["params"]=> NULL ["groups"]=> array(0) { } ["guest"]=> int(1) ["lastResetTime"]=> NULL ["resetCount"]=> NULL ["_params:protected"]=> object(JRegistry)#25 (1) { ["data:protected"]=> object(stdClass)#26 (0) { } } ["_authGroups:protected"]=> array(1) { [0]=> int(1) } ["_authLevels:protected"]=> array(2) { [0]=> int(1) [1]=> int(1) } ["_authActions:protected"]=> NULL ["_errorMsg:protected"]=> NULL ["_errors:protected"]=> array(0) { } ["aid"]=> int(0) } ["session.token"]=> string(32) "af8b72a5f2c9704a63c3b422b2d96027" ["session.timer.start"]=> int(1501021356) ["session.timer.last"]=> int(1501021412) ["session.timer.now"]=> int(1501021416) } ["num"]=> int(82) }
    а потом NULL
    Завтра попробую на хост закинуть проверить, не знаю почему такая фигня может быть.
    Хм..тут подумал, это типа модуль для джумлы, может косяк сессий в самой джумле?
    Будто после проверки что-то отграничивает от сессии.
     
    #15 seifer, 26 июл 2017
    Последнее редактирование: 26 июл 2017
  16. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    И где $_SESSION['access']?
     
  17. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    7 и 17 строка, подскажи мне кто так делает ?
     
  18. seifer

    seifer Новичок

    С нами с:
    27 май 2017
    Сообщения:
    76
    Симпатии:
    2
    Но какая разница, если сессию целиком не видит?


    Код (Text):
    1. array(2) { ["__default"]=> array(9) { ["session.counter"]=> int(8) ["session.timer.start"]=> int(1501046234) ["session.timer.last"]=> int(1501046531) ["session.timer.now"]=> int(1501046540) ["session.client.browser"]=> string(114) "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" ["registry"]=> object(JRegistry)#22 (1) { ["data:protected"]=> object(stdClass)#23 (1) { ["users"]=> object(stdClass)#24 (1) { ["login"]=> object(stdClass)#25 (1) { ["form"]=> object(stdClass)#26 (2) { ["return"]=> string(20) "index.php?Itemid=102" ["data"]=> array(0) { } } } } } } ["user"]=> object(JUser)#27 (25) { ["isRoot:protected"]=> bool(true) ["id"]=> string(3) "623" ["name"]=> string(10) "Super User" ["username"]=> string(5) "admin" ["email"]=> string(14) "sseiferr@bk.ru" ["password"]=> string(65) "53789e498c1fdc4d6a7393e4323d83f7:Sl1DtHmIJsJxlVg010dhV354CiuBg73n" ["password_clear"]=> string(0) "" ["usertype"]=> string(10) "deprecated" ["block"]=> string(1) "0" ["sendEmail"]=> string(1) "1" ["registerDate"]=> string(19) "2017-02-28 18:09:03" ["lastvisitDate"]=> string(19) "2017-07-25 17:46:37" ["activation"]=> string(1) "0" ["params"]=> string(0) "" ["groups"]=> array(1) { [8]=> string(1) "8" } ["guest"]=> int(0) ["lastResetTime"]=> string(19) "0000-00-00 00:00:00" ["resetCount"]=> string(1) "0" ["_params:protected"]=> object(JRegistry)#28 (1) { ["data:protected"]=> object(stdClass)#29 (0) { } } ["_authGroups:protected"]=> array(2) { [0]=> int(1) [1]=> int(8) } ["_authLevels:protected"]=> array(4) { [0]=> int(1) [1]=> int(1) [2]=> int(2) [3]=> int(3) } ["_authActions:protected"]=> NULL ["_errorMsg:protected"]=> NULL ["_errors:protected"]=> array(0) { } ["aid"]=> int(0) } ["session.token"]=> string(32) "47ec918d31e1222f7f10212236b5a84f" ["session.client.forwarded"]=> string(14) "209.141.53.254" } ["access"]=> string(20) "Super_User_admin_623" }
    Ну я только учусь, но к ошибке они не имеют отношения.
     
  19. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    Как будто я парад клоунов смотрю.

    return что делает ?
     
  20. seifer

    seifer Новичок

    С нами с:
    27 май 2017
    Сообщения:
    76
    Симпатии:
    2
    Попробовал кусок с ретурном инклудить, таже фигня
     
  21. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    --- Добавлено ---
    У ТЕБЯ ЗАВЕРШАЕТСЯ СКРИПТ РАНЬШЕ
    --- Добавлено ---
    ой
     
  22. seifer

    seifer Новичок

    С нами с:
    27 май 2017
    Сообщения:
    76
    Симпатии:
    2
    Как исправить-то не пойму, вынес в отдельный файл и заинклюдил, не помогло
     
  23. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    PHP:
    1. <?php
    2.  
    3. echo 2;
    4.  
    5. return 7;
    6.  
    7. echo 1;
    что выведет? и не вывелось почему?
     
  24. seifer

    seifer Новичок

    С нами с:
    27 май 2017
    Сообщения:
    76
    Симпатии:
    2
    Это я понял, но как тогда без ретурна сделать?
     
  25. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    что понял?
    --- Добавлено ---
    ты мне утром заливал что это ничего не значит
    --- Добавлено ---
    научись кодить с умом, себя в гроб завел. Или скрипт с инета спи.. ?
     
    seifer нравится это.