2011-09-16 116 views
0

我通過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... 

任何想法?

編輯: 下面是一些代碼 -

的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

我們可以看到開始一些適用的代碼可以使用? –

+0

你會''session_start();'在你的php的頂部嗎? – roselan

+0

請在您的問題中添加一些代碼... – Timur

回答

1

首先確保您有HTML元素「登錄」的ID,然後其次確保你放置session_start()函數在你的PHP文件