Sesja PHP nie działa z JQuery Ajax?

Aktualizacja, rozwiązana: Po tym wszystkim dowiedziałem się, że dzwoniłem do starej wersji mojego kodu w aktualizacji ajax. 'boardControl.php' zamiast 'boardUpdate.php' Są to rodzaje błędów, które sprawiają, że zabawa programistyczna.

Piszę przeglądarkęgomoku gra. Mam instrukcję ajax, która pozwala graczowi zagrać kawałek.

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

value = lokalizacja kwadratu planszy
bid = identyfikator planszy

Przed utworzeniem loginu użytkownika do identyfikacji gracza php po stronie serwera miało rozwiązanie tymczasowe. Obracałby stan elementu dla kwadratów po kliknięciu, zamiast wiedzieć, dla którego gracza je utworzyć.

Po utworzeniu elementów logowania ustawiam zmienną sesji dla identyfikatora gracza. Miałem nadzieję odczytać identyfikator sesji z php podczas żądania ajax i dowiedzieć się, z jakiego odtwarzacza oni są.

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;

Z jakiegoś powodu, kiedy uruchamiam pełną aplikację internetową, części nadal się obracają, nawet po usunięciu kodu, aby je włączyć. Ponadto po zalogowaniu się Jeśli ręcznie załaduję stronę php w przeglądarce, poprawnie modyfikuje bazę danych (gdzie tylko odtwarza elementy należące do tego odtwarzacza) i wyświetla poprawne wyniki.

Wydaje mi się, że sesja nie jest przenoszona, gdy jest używana z Ajaxem. Jednak wyszukiwania Google mówią mi, że sesje działają z Ajaxem.

Aktualizacja: próbuję dostarczyć więcej informacji.

Logowanie działa poprawnie. Mój identyfikator został rozpoznany i wydrukowałem go obok tablicy, aby upewnić się, że prawidłowo go odzyskuję.

Żądanie ajax aktualizuje tablicę. Podane wartości są poprawne i potwierdzone za pomocą konsoli Firebug. Jednak zamiast umieszczania kawałków tylko dla gracza, do którego należą, cykl się zmienia, mimo że część wskazuje (0,1,2).

Po ręcznym przejściu do boardUpdate.php i wprowadzeniu tych samych wartości wysyłanych z Ajaxu wyniki widoczne w odpowiedzi echa wskazują, że odpowiedni kawałek jest odtwarzany za każdym razem zgodnie z przeznaczeniem.

Takie same wyniki na moim laptopie po świeżym załadowaniu Firefoksa.

Ręczne przeglądanie do boardUpdate.php bez zalogowania się przed rozdaniem pozostaw płytę bez zmian (zgodnie z przeznaczeniem, gdy w sesji nie zostanie znaleziony żaden użytkownik).

Sprawdziłem dwukrotnie, że session_start () jest w plikach php i dwukrotnie sprawdziłem zmienne identyfikatora sesji.

Mam nadzieję, że te dodatkowe informacje pomogą, zabrakło mi pomysłów, co ci powiedzieć. Czy powinienem załadować pełny kod?

Aktualizacja 2:

Po sprawdzeniu odpowiedzi Ajaxa w fire-bugu zdałem sobie sprawę, że żądanie „play” nie daje wyniku, a plansza nie jest aktualizowana do następnej „aktualizacji”. Nadal się tym zajmuję, ale opublikuję to tutaj dla was.

boardUpdate.php Godne uwagi miejsca to: Refresh Board (line6) Place Piece (line20) function boardUpdate ($ 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()


?>

Proszę o pomoc, chętnie udzielę więcej informacji w razie potrzeby. Z góry dzięki =)

questionAnswers(2)

yourAnswerToTheQuestion