Я пытаюсь создать мою систему входа в систему AJAX, но у меня возникают проблемы с сеансами PHP.
 Это код AJAX, который я использую в своем index.php : 
 $("#buttonLogin").click(function(){ $.post("<?php echo $AJAX ?>/ajaxLogin.php",{ Username : $("#loginUsername").val(), Password : $("#loginPassword").val() }, function(result){ if(result == "OK"){ window.location.href = "<?php echo $PUBLIC?>/home.php"; } else { $("#loginMessageError").show(); } }); }); 
  И это ajaxLogin.php который вызывается через AJAX: 
 <?php require_once("../settings.php"); require_once($ABS_ENGINE."/classUser.php"); $user = new User(); if($user->loginUser($_POST["Username"], $_POST["Password"])){ $UserID = $user->getUserId($_POST["Username"]); session_start(); $_SESSION['UserID'] = $UserID; echo "OK"; } else { echo "ERROR"; } ?> 
  Когда я нахожусь в home.php и я пытаюсь повторить $_SESSION["UserID"] , я получаю следующую ошибку: 
Примечание. Неопределенный индекс: UserID в C: \ xampp \ htdocs \ webname \ resources \ templates \ headerHome.php в строке 23
  Вероятно, это неверно, потому что сеанс должен быть установлен перед любым выходом, но если я попытаюсь выполнить echo $_SESSION['UserID'] = $UserID;  строка правильно отображает переменную сеанса. 
  Когда у меня возникла такая проблема, то, что ее решило, это использовать exit(); 
 <?php require_once("../settings.php"); require_once($ABS_ENGINE."/classUser.php"); $user = new User(); if($user->loginUser($_POST["Username"], $_POST["Password"])){ $UserID = $user->getUserId($_POST["Username"]); session_start(); $_SESSION['UserID'] = $UserID; echo "OK"; exit(); } else { echo "ERROR"; } ?> 
Сначала необходимо запустить сеанс, например session_start (), а затем вы можете получить доступ к переменным сеанса. Взгляните на этот простой пример, это может помочь вам:
aj.php
 <script src="jquery.js"></script> <script type="text/javascript"> $(document).ready( function(){ $.ajax({ type : 'GET', url : 'sess.php', data: { user : 'guna', }, success : function(data){ alert(data); }, error : function(XMLHttpRequest, textStatus, errorThrown) {alert ("Error Occured");} }); }); </script> </html> 
sess.php
 <?php session_start(); $_SESSION['user']=$_GET['user']; echo $_SESSION['user']; ?> 
Как отмечали другие ребята, лучше вы также можете проверить session_start () на странице, где вы читаете переменные сеанса.
  Лучше проверьте, присутствует ли session_start() в home.php.  Без этого вы не сможете прочитать данные сеанса. 
  Когда вы выполняете echo $_SESSION['UserID'] = $UserID;  вы будете назначать и получать доступ в одной строке, поэтому он, очевидно, будет работать.