Класс сеанса PHP

Я следил за учебником wikihow для создания безопасной системы управления сеансом: http://www.wikihow.com/Create-a-Secure-Session-Managment-System-in-PHP-and-MySQL

и он отлично работает.

Теперь у меня возникла проблема, связанная с тем, что cookie_имя session cookie _s меняет (и регистрирует информацию), когда два последовательных ajax вызываются следующим образом:

<input type="button" value="go" id="mybutton" /> <script> $("#mybutton").click( function() { $.get("ajax1.php"); $.get("ajax2.php"); }); </script> 

где оба ajax1.php и ajax2.php просто требуют файла класса сеанса

 <?php require('session.class.php'); $session = new session(); $session->start_session('_s', false); ?> 

при нажатии кнопки идентификатор сеанса, хранящийся в _s cookie, изменяется на новый. Я добавил предупреждение между двумя ajax, как это

 <input type="button" value="go" id="mybutton" /> <script> $("#mybutton").click( function() { $.get("ajax1.php"); alert("anything"); $.get("ajax2.php"); }); </script> - <input type="button" value="go" id="mybutton" /> <script> $("#mybutton").click( function() { $.get("ajax1.php"); alert("anything"); $.get("ajax2.php"); }); </script> 

разделяя два вызова ajax, идентификатор сеанса не изменился.

EDIT: фактический код не такой, но многие отдельные кнопки имеют аякс, но бывает, что пользователь нажимает кнопки подряд до ответа.

 <input type="button" value="go" id="mybutton" /> <script> $("#mybutton").click( function() { $.get("ajax1.php"); }); </script> <input type="button" value="go" id="mybutton2" /> <script> $("#mybutton2").click( function() { $.get("ajax2.php"); }); </script> 

есть идеи??

Когда вы делаете первый вызов AJAX, сервер запускает сеанс и отправляет идентификатор сеанса обратно в браузер в cookie. Чтобы второй вызов AJAX находился в одном сеансе, он должен отправить этот файл cookie обратно на сервер.

Но вы не дожидаетесь ответа на первый звонок перед отправкой второго вызова. Таким образом, cookie не был получен, и он не может быть отправлен со вторым вызовом. Все, что зависит от результата вызова AJAX, должно выполняться в его функции обратного вызова. Итак, вы должны сделать:

 $.get('ajax1.php', function() { $.get('ajax2.php'); });