Trafiłem na taki problem: mam napisaną własną procedurę obsługi sesji, która zapisuje zmienne w bazie danych MySQL. Procedura działa bardzo dobrze w normalnym php, natomiast w momencie, w którym do gry wchodzi AJAX, nie jest przekazywany identyfikator, ani żadne zmienne. Nawet próby przekazania identyfikatora w zmiennej kończą się tym, że owszem, procedura odczytuje wszystkie dane z bazy, sesja dostaje właściwy identyfikator, ale tablica zmiennych $_SESSION jest pusta (i potem pusta zostaje zapisana do bazy, kasując całą sesję).
W momencie, w którym korzystam ze standardowego mechanizmu obsługi sesji, wszystko hula.
Czy ktoś jeszcze się natknął na podobny problem? Używam php 5.2.3.
Obsługa sesji (session.inc):
class Session { . . . function read($id) { $id = $this->dbHandle->getSQLValues($id); $data = $this->dbHandle->loadObject("SELECT data FROM wmh_sessions WHERE id = $id", false); return ''; } function verify() { } } . . . } $Session_class = new Session(); $Session_class->verify(); } else
Zabezpieczenie w pliku przed nieautoryzowanym dostępem:
require_once('../../config/config.inc'); require_once($rootDir.'classes/session.inc'); }
Wywołanie AJAXa z JQuery:
<script type="text/javascript"> $("#sortable").sortable({ opacity: 0.6, cursor: 'move', update: function() { var sid = '<?php echo session_id() ?>'; var order = $(this).sortable("serialize") + '&sid=' + sid + '&act=rearrange&n=0'; $.post("host/models/menuManipulation.php", order, function(theResponse){ $("#message").html(theResponse); }); } }); </script>