【发布时间】:2011-09-16 20:32:19
【问题描述】:
我正在通过 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>
<? } ?>
【问题讨论】:
-
我们能看到一些适用的代码吗?
-
你会在你的 php 顶部做一个
session_start();吗? -
请在您的问题中添加一些代码...
-
您是否在注销后破坏了您的会话?确保在 loginform.php 中再次启动它
-
嗨,我已经添加了一些代码。希望这能让事情变得更清楚一些。我正在正确地开始和销毁我的会话。