Установить сеанс php через ajax

Я пытаюсь создать мою систему входа в систему 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; строка правильно отображает переменную сеанса.

Related of "Установить сеанс php через ajax"

Когда у меня возникла такая проблема, то, что ее решило, это использовать 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; вы будете назначать и получать доступ в одной строке, поэтому он, очевидно, будет работать.