Помогите разобраться почему сессия пропадает. Код (Text): ... $_SESSION['access'] = $list; $a = file_get_contents('php://input'); if(isset($a)){ $list_answer=json_decode($a, true); $r_value = array(); $r_value = array_pop($list_answer); $w_value = array(); $w_value = array_pop($list_answer); $result_r = array_intersect($list_answer, $r_value); $r = count($r_value); $r_w = count($result_r); $percent_r = ($r_w/$r)*100; $result_w = array_intersect($list_answer, $w_value); $r_wr = count($r_value); $r_w = count($result_w); $percent_w = ($r_w/$r_wr)*100; $common_res = $percent_r - $percent_w/2; var_dump($_SESSION['access']); //Видит if(count($r_value)>0){ var_dump($_SESSION['access']); //NULL } } ...
Файл целиком Код (Text): function get_tests(){ $query = "SELECT text, diag FROM ther"; $res = mysql_query($query) or die(mysql_error()); if(!$res) return false; $data = array(); while($row = mysql_fetch_array($res)){ $data[] = $row['diag']; //echo "<input type='submit' class='but01' name='submit_q[]' value='".$row['text']."'/>"; } return $data; // $que = $_POST['submit_q']; //if(isset($_POST['submit_q'])){$g_que = get_question();} //else{echo "Выберите тест";} } function print_test($data){ foreach($data as $list){ echo "<input type='submit' class='but01' name='submit_q[]' value='".$list."'/>"; } } if(count($_POST['submit_q'])>0 ){ $get_que = get_question(); $r_value = $get_que[0]; $w_value = $get_que[1]; $result = $get_que[2]; ?> <script> var arr = '<?= json_encode ( $r_value ); ?>'; var arr_w = '<?= json_encode ( $w_value ); ?>'; arr = JSON.parse(arr); arr_w = JSON.parse(arr_w); console.log(arr); window.onload = function(){ var elem = document.querySelectorAll('input[type=checkbox]'); var params = []; document.querySelector('#send').onclick = function(){ for(var i = 0; i < elem.length; i++){ if(elem[i].checked){ params[i] = elem[i].value; } } var data = params; if (data.length < 1){alert ('Ничего не выбрано');} else{ for (var i = data.length; i >= 0; i--) { if (!data[i]) data.splice(i, 1); var tab = data.concat(arr_w, arr); tab = JSON.stringify( tab ); } console.log(tab); ajaxPost( tab); document.querySelector('#send').disabled=true; document.querySelector('.mainwindow2').style.display = 'none'; document.querySelector('.result').style.display = 'block'; } } } function ajaxPost(tab){ var request = new XMLHttpRequest(); request.onreadystatechange = function(){ if(request.readyState == 4 && request.status == 200){ document.querySelector('.result23').innerHTML = request.responseText; } } request.open('POST', '../modules/mod_test/tmpl/chkbox.php'); console.log( tab); request.send( tab); } </script> <? } $a = file_get_contents('php://input'); if(isset($a)){ $list_answer=json_decode($a, true); $r_value = array(); $r_value = array_pop($list_answer); $w_value = array(); $w_value = array_pop($list_answer); $result_r = array_intersect($list_answer, $r_value); $r = count($r_value); $r_w = count($result_r); $percent_r = ($r_w/$r)*100; $result_w = array_intersect($list_answer, $w_value); $r_wr = count($r_value); $r_w = count($result_w); $percent_w = ($r_w/$r_wr)*100; $common_res = $percent_r - $percent_w/2; var_dump($_SESSION['access']); if(count($r_value)>0){ var_dump($_SESSION['access']); } function print_quest($result){ $q = $_POST['submit_q']; echo "<div class='pict'>picture</div>"; echo " <div class='sim' >"; echo "Выберите -" .$q[0]; echo "</div>"; foreach ($result as $data){ echo "<div class='answer_frame'><label class='lab01'><input type='checkbox' name='sim[]' value='".$data."'/> ".$data."</label></div>"; } echo "<input type='button' id='send' name='simSubmit' value='Submit' /> "; }
@seifer Где-то со 135 по 142 строку потеряли одну закрывающую фигурную скобку. Прям var_dump() выводит null?
А если условие заменить на, то все работает. Код (Text): if(true){ var_dump($_SESSION); } --- Добавлено --- Скобку при копировании потерял, выводит NULL. Выход что получает данные от ajax'a, и на этом моменте уже сессии не видит. Код (Text): [LIST=1] [*]$a = file_get_contents('php://input'); [*]if(isset($a)){ [*]$list_answer=json_decode($a, true); [*] [*]$r_value = array(); [*]$r_value = array_pop($list_answer); [*] [*] [*]$w_value = array(); [*]$w_value = array_pop($list_answer); [*] [*] [*] $result_r = array_intersect($list_answer, $r_value); [*] [*] [*] $r = count($r_value); [*] $r_w = count($result_r); [*] $percent_r = ($r_w/$r)*100; [*] [*] [*] [*]$result_w = array_intersect($list_answer, $w_value); [*] [*] [*] $r_wr = count($r_value); [*] $r_w = count($result_w); [*] $percent_w = ($r_w/$r_wr)*100; [*] $common_res = $percent_r - $percent_w/2; [*] [*] var_dump($_SESSION['access']); [*] if(count($r_value)>0){ [*] var_dump($_SESSION['access']); [*]} [/LIST] --- Добавлено --- Делаю на локалке, может быть проблема в денвере или все же код корявый?
На сколько я понял сессия у Вас теряется после проверки количества элементов в $r_value Что выведется, если закомментировать первый var_dump?
Попробовал посмотреть что происходит наблюдая за числами, выходит что сессия пропадает после проверки количества элементов в $r_value, а вот числа рандомные сохраняются. Код (Text): $rnd = rand(5, 100); $_SESSION['num'] = $rnd;
Такие чудеса всегда у новичков. Но так не бывает два вывода, между ними код ничего не делающий с сессиями и сессия жива, а переменной нету. Варианта всего 2: 1. Там либо в обоих случаях одно значение и ты не туда смотришь. 2. Либо ты где то перезаписываешь. 3. Не дано! давай вардамп, всей сессии и сюда копируй оба результата вардампа.
Код (Text): 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 Завтра попробую на хост закинуть проверить, не знаю почему такая фигня может быть. Хм..тут подумал, это типа модуль для джумлы, может косяк сессий в самой джумле? Будто после проверки что-то отграничивает от сессии.
Но какая разница, если сессию целиком не видит? Код (Text): 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" } Ну я только учусь, но к ошибке они не имеют отношения.
что понял? --- Добавлено --- ты мне утром заливал что это ничего не значит --- Добавлено --- научись кодить с умом, себя в гроб завел. Или скрипт с инета спи.. ?