2011-02-28 19 views
1

jquery ajaxを使用してlogginでセッションを設定していますが、何らかの理由でajaxの目的に反するページを更新しない限りセッションが設定されません。私はこれを解決する方法を知りません。ここに私のコードです: $( "#のサインインは")をクリックします(関数(){ するvarメール= $( "#のloginemail")のattr( '値');jquery ajaxの問題を使用してセッションを設定する

 var password=$("#loginpassword").attr('value'); 

     if(email==""&&password=="") 
     { 
      $("#loginemail").animate({backgroundColor:"red"},4000); 
      $("#loginpassword").animate({backgroundColor:"red"},4000); 
      return false; 
     } 
     if(email=="") 
     { 
      $("#loginemail").animate({backgroundColor:"red"},4000); 
      return false; 
     } 
     if(password=="") 
     { 
      $("#loginpassword").animate({backgroundColor:"red"},4000); 
      return false; 
     } 
     if(email!=""&&password!="") 
     { 
      var loginemail=$("#loginemail").attr('value'); 

      var loginpassword=$("#loginpassword").attr('value'); 

      $.post("phpfiles/loginvalidation.php",{loginemail:loginemail,loginpassword:loginpassword},function(data){ 
       if(data.success) 
       { 
     $("#theuser").html(data.loggedinuser); 

    $("#loginerror").html("<p>You are logged in.</p>").slideDown(); 

        $("#SignUpandIn").fadeOut(); 

       } 
       else 
       { 
    $("#loginerror").html("<p>Wrong email or password.</p>").slideDown(); 
       } 
      },'json'); 

      return false; 
     } 
    }); 

PHP:。。

あなたは、それが配列でcomplemetedされることを期待するので、AJAX呼び出しが完了されることを保証コールバックであなたのロジックを持つことはできませんので
<?php 
require_once('../Connections/gamesRusconn.php'); 
error_reporting(E_ALL^E_NOTICE); 

if(!isset($_SESSION)) 
{ 
     session_start(); 
} 

mysql_select_db($database_gamesRusconn, $gamesRusconn); 

$emailaddress=$_POST['loginemail']; 

$password=$_POST['loginpassword']; 

$hashedPassword=$password; 

//This query compares login details entered by user against the details in the database. 
$loginSQL=mysql_query("SELECT * FROM customers WHERE EmailAddress='".$emailaddress."' AND CustPassword='".$hashedPassword."'",$gamesRusconn) or die(mysql_error()); 

$customers=mysql_fetch_assoc($loginSQL); 

$loginrows=mysql_num_rows($loginSQL); 

$activeSQL=mysql_query("SELECT * FROM customers ",$gamesRusconn) or die(); 

if($loginrows>0) 
{ 

    $fullname=$customers['FirstName']." ".$customers['Surname']; 

    $email=$customers['EmailAddress']; 

    $_SESSION['loggedInName']= $fullname; 

    $_SESSION['username']=$email; 

    $data['success']=true; 

    $data['loggedinuser']=$fullname; 

} 

elseif($loginrows==0) 
{ 
    $data['success']=false; 

} 
echo json_encode($data); 
?> 

答えて

2

jqueryのAJAXは、paralleyをたまたまasynrounousです。

私はいくつかのサンプルコードを与えています以下。

$.ajax({ 
    url: "test.html", 
    context: document.body, 
    success: function(){ 
    **write your session related logic here** 
    } 
}); 
+0

意味がありますが、PHPでjavascriptのように見えるので、コールバックメソッド内で$ _SESSION変数をどのように割り当てるのでしょうか。少し光を照らしてください。 – John