Ajax не отправляет форму все время - PullRequest
0 голосов
/ 17 сентября 2011

Я отправляю форму через 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>    
<? } ?>

1 Ответ

1 голос
/ 17 сентября 2011

сначала убедитесь, что у вас есть элемент html с идентификатором 'login', а затем, во-вторых, убедитесь, что вы поместили функцию session_start () в начале вашего PHP-файла

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...