0
セッションを設定するかどうかを指定するPHPコードのページにajaxでフォームを送信します。これは何が起こるかです:(ページ自体が再ロードされていないセッションを設定しますか Ajaxは常にフォームを送信していません
- フォーム(
$('#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>
<? } ?>
でのsession_start()関数を配置することを確認して、私たちが見ることができることを確認してくださいいくつかの適用可能なコードは動作する? –
あなたのPHPの上部に 'session_start();'を実行しますか? – roselan
質問にいくつかのコードを追加してください... – Timur