Я отправляю форму через ajax на страницу кода PHP, которая будет либо устанавливать сеанс, либо нет. Вот что происходит:
- Форма отправлена через ajax на login.php
- login.php устанавливает сеанс или нет
- loginform.php перезагружается в div на странице (сама страница не перезагружается (
$('#login').load('loginform.php');
)
- loginform.php проверяет, установлен ли сеанс, затем либо отображает форму входа в систему, либо кнопку выхода из системы
.
Если я захожу на новую страницу, она работает нормально.
Если я уже вошел в систему, выйдите из системы, это работает, и форма входа снова отображается.
Однако, если я попытаюсь снова войти в систему с этой же страницы, сеанс не будет установлен.
Я вывожу свой сеанс на PHP, и когда я вышел из системы, у меня есть это:
Notice: Undefined index: log in...
При попытке войти после выхода на той же странице, я получаю это:
Notice: Undefined variable: _SESSION in...
Есть идеи?
EDIT:
Вот код:
index.php
<script language="javascript">
$(document).ready(function()
{
$("#login_form").submit(function(event)
{
$.post("login.php",{emai:$('#emai').val(),pass:$('#pass').val()} ,function(data)
{
//if login.php echos "no" then an error box is displayed, else it refreshes the login div to hopefully display a log out link
if(data!='no') {$('#login').load('loginform.php');}
if(data =='no') {$("#loginerror").show();}
});
})
//the session is destroyed in logout.php, then the form reloaded.
$("#logout").click(function()
{
$.post("logout.php");
$('#login').load('loginform.php');});
});
</script>
</head>
<body>
<?
include ('inc/classes.php');
session_start();
?>
<div class="header">
<div id="login"><? include ('inc/headerlogin.php');?></div>
</div>
login.php
//just searching the database for a match and setting the session. Echos yes or no.
<?
session_start();
include ('../inc/classes.php');
$emai=$_POST['emai'];
$pass=$_POST['pass'];
$Query="SELECT * FROM users WHERE emai ='".$emai."' AND pass='".$pass."'";
$Sel = new Database;
$Sel->nextRecord();
$Sel->Query($Query);
if ($Sel->numRows() == 1) {$_SESSION['log'] = $Sel->Record['id']; $login = "yes";}
else {$login = "no";}
echo $login;
?>
LoginForm.php
<?
echo $_SESSION['log'];
//if session is set display sign out link
if(isset($_SESSION['log']))
{
?>
<a id="logout">sign out</a>
<? } //else display form again
else
{?>
<div id="loginerror">Wrong password</div>
<form method="post" action="" id="login_form">
<input name="email" type="text" value="" id="emai"/>
<input name="pass" type="password" id="pass"/>
<input name="signin" type="submit" value="sign in" id="signbutton"/>
</form>
<? } ?>