2011-09-16 15 views
0

セッションを設定するかどうかを指定するPHPコードのページにajaxでフォームを送信します。これは何が起こるかです:(ページ自体が再ロードされていないセッションを設定しますか Ajaxは常にフォームを送信していません

  • loginform.phpがページ上のdivに再ロードされるか
  • login.phpをlogin.phpするために、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>  
    <? } ?> 
    
  • +1

    でのsession_start()関数を配置することを確認して、私たちが見ることができることを確認してくださいいくつかの適用可能なコードは動作する? –

    +0

    あなたのPHPの上部に 'session_start();'を実行しますか? – roselan

    +0

    質問にいくつかのコードを追加してください... – Timur

    答えて

    1

    まずあなたが「ログイン」のIDを持つHTML要素を持っているし、その後、第二に、あなたのPHPファイルの先頭

    関連する問題