Sessão PHP não funciona com o JQuery Ajax?

Atualizar, resolvido: Depois de tudo isso, descobri que estava chamando uma versão antiga do meu código no ajax de atualização. 'boardControl.php' em vez de 'boardUpdate.php' Estes são os tipos de erros que tornam a programação divertida.

Estou escrevendo um navegadorgomoku jogos. Eu tenho a declaração ajax que permite ao jogador jogar uma peça.

$(document).ready(function() {
    $("td").live('click',function(){
        var value = $(this).attr('id');
        $.get('includes/boardControl.php',{play: value, bid: bid});
    });
});

value = board square location
lance = ID da placa

Antes de criar um login de usuário para identificação do jogador, o php do lado do servidor tinha uma solução temporária. Ele giraria o estado da peça para os quadrados quando clicado em vez de saber para qual jogador os criar.

Depois de criar coisas de login, eu configurei uma variável de sessão para o ID do jogador. Eu estava esperando para ler o ID da sessão do php durante o pedido de ajax e descobrir o que eles são de lá.

session_start();

...

    $playerId = $_SESSION['char'];
    $Query=("SELECT p1, p2 FROM board WHERE bid=$bid");
    $Result=mysql_query($Query);
    $p1 = mysql_result($Result,0,"p1");
    $p2 = mysql_result($Result,0,"p2");
    $newPiece = 0; //*default no player
    if($playerId == $p1)
        $newPiece = 1;
    if($playerId == $p2)
        $newPiece = 2;

Por alguma razão, quando executo o aplicativo da Web completo, as peças ainda são ativadas, mesmo depois que eu apaguei o código para fazê-lo circular. Além disso, após o login, se eu carregar manualmente a página do php no navegador, ele modifica o banco de dados corretamente (onde ele só reproduz peças pertencentes a esse jogador) e produz os resultados corretos.

Parece-me que a sessão não está sendo transportada quando usada com o Ajax. No entanto, as pesquisas do Google me dizem que as sessões funcionam com o Ajax.

Atualização: estou tentando fornecer mais informações.

O login funciona corretamente. Meu ID é reconhecido e imprimi ao lado do quadro para garantir que estava recuperando corretamente.

A solicitação do ajax atualiza a placa. Os valores passados ​​estão corretos e confirmados com o console do firebug. No entanto, em vez de colocar peças apenas para o jogador que pertencem a ele, os ciclos são determinados (0,1,2).

Ao navegar manualmente para boardUpdate.php e colocar os mesmos valores enviados do Ajax, os resultados vistos na resposta refletida indicam que a parte correspondente é jogada toda vez, conforme pretendido.

Mesmos resultados no meu laptop após nova carga do firefox.

Navegar manualmente para boardUpdate.php sem fazer login antes da mão deixa a placa inalterada (como esperado quando nenhum usuário é encontrado na sessão).

Eu verifiquei duas vezes que o session_start () está nos arquivos php e verifiquei duas vezes as variáveis ​​do ID da sessão.

Espero que esta informação extra ajude, estou ficando sem idéias do que te contar. Devo carregar o código completo?

Atualização 2:

Depois de verificar a resposta do Ajax no bug de fogo, percebi que a solicitação de 'play' não obtinha um resultado, e a placa não é atualizada até a próxima 'atualização'. Eu ainda estou olhando para isso, mas vou postar aqui para vocês também.

boardUpdate.php Lugares notáveis ​​são: Refresh Board (line6) placa de função Place Piece (line20) UpdateUpdate ($ turnCount) (line63)

<?php
session_start();
require '../../omok/dbConnect.php';

    //*** Refresh Board ***
    if(isset($_GET['update']))
    {
        $bid = $_GET['bid'];
        $Query=("SELECT turn FROM board WHERE bid=$bid");
        $Result=mysql_query($Query);
        $turnCount=mysql_result($Result,0,"turn");

        if($_GET['turnCount'] < $turnCount) //** Turn increased
        {
            boardUpdate($turnCount);
        }
    }

    //*** Place Piece ***
    if(isset($_GET['play'])) // turn order? player detect?
    {
        $squareID = $_GET['play'];
        $bid = $_GET['bid'];

        $Query=("SELECT turn, boardstate FROM board WHERE bid=$bid");
        $Result=mysql_query($Query);
        $turnCount=mysql_result($Result,0,"turn");
        $boardState=mysql_result($Result,0,"boardstate");

        $turnCount++;

        $playerId = $_SESSION['char'];
        $Query=("SELECT p1, p2 FROM board WHERE bid=$bid");
        $Result=mysql_query($Query);
        $p1 = mysql_result($Result,0,"p1");
        $p2 = mysql_result($Result,0,"p2");
        $newPiece = 0; //*default no player
        if($playerId == $p1)
            $newPiece = 1;
        if($playerId == $p2)
            $newPiece = 2;

//      if($newPiece != 0)
//      {
            $oldPiece = getBoardSpot($squareID, $bid);
            $oldLetter = $boardState{floor($squareID/3)};
            $slot = $squareID%3;

            //***function updateCode($old, $new, $current, $slot)***
            $newLetter = updateCode($oldPiece, $newPiece, $oldLetter, $slot);
            $newLetter = value2Letter($newLetter);
            $newBoard = substr_replace($boardState, $newLetter, floor($squareID/3), 1);

            //** Update Query for boardstate & turn
            $Query=("UPDATE board SET boardState = '$newBoard', turn = '$turnCount' WHERE bid = '$bid'");
            mysql_query($Query);
//      }
        boardUpdate($turnCount);


    }

    function boardUpdate($turnCount)
    {
            $json = '{"turnCount":"'.$turnCount.'",';           //** turnCount **


            $bid = $_GET['bid'];
            $Query=("SELECT boardstate FROM board WHERE bid='$bid'");
            $Result=mysql_query($Query);
            $Board=mysql_result($Result,0,"boardstate");
            $json.= '"boardState":"'.$Board.'"';            //** boardState **


            $json.= '}';
            echo $json;
    }

    function letter2Value($input)
    {
        if(ord($input) >= 48 && ord($input) <= 57)
            return ord($input) - 48;
        else
            return ord($input) - 87;
    }

    function value2Letter($input)
    {
        if($input >= 10)
            return chr($input += 87);
        else
            return chr($input += 48);
    }


    //*** UPDATE CODE *** updates an letter with a new peice change and returns result letter.
    //***** $old : peice value before update
    //***** $new : peice value after update
    //***** $current : letterValue of code before update.
    //***** $slot : which of the 3 sqaures the change needs to take place in.
    function updateCode($old, $new, $current, $slot)
    {
        if($slot == 0)
        {// echo $current,"+((",$new,"-",$old,")*9)";
            return letter2Value($current)+(($new-$old)*9);
        }
        else if($slot == 1)
        {// echo $current,"+((",$new,"-",$old,")*3)";
            return letter2Value($current)+(($new-$old)*3);
        }
        else //slot == 2
        {// echo $current,"+((",$new,"-",$old,")";
            return letter2Value($current)+($new-$old);
        }
    }//updateCode()


    //**** GETBOARDSPOT *** Returns the peice value at defined location on the board.
    //****** 0 is first sqaure increment +1 in reading order (0-254).
    function getBoardSpot($squareID, $bid)
    {
        $Query=("SELECT boardstate FROM board WHERE bid='$bid'");
        $Result=mysql_query($Query);
        $Board=mysql_result($Result,0,"boardstate");


        if($squareID %3 == 2) //**3rd spot**
        {
            if( letter2Value($Board{floor($squareID/3)} ) % 3 == 0)
                return 0;
            else if( letter2Value($Board{floor($squareID/3)} ) % 3 == 1)
                return 1;
            else
                return 2;
        }
        else if($squareID %3 == 0) //**1st spot**
        {
            if(letter2Value($Board{floor($squareID/3)} ) <= 8)
                return 0;
            else if(letter2Value($Board{floor($squareID/3)} ) >= 18)
                return 2;
            else
                return 1;
        }
        else //**2nd spot**
        {
            return floor(letter2Value($Board{floor($squareID/3)}))/3%3;
        }
    }//end getBoardSpot()


?>

Por favor me ajude, eu ficaria feliz em fornecer mais informações, se necessário. Obrigado antecipadamente =)

questionAnswers(2)

yourAnswerToTheQuestion