Установить и получить PHP-сессию на / с сервера, а не на клиенте - PullRequest
0 голосов
/ 26 марта 2011

У меня проблема с тем, чтобы сильно зависеть от сеансов, чтобы получать обновления в реальном времени на разных компьютерах.Итак, вот сценарий:

[Компьютер A] Страница администратора: при нажатии кнопки определенный текст будет отображаться на каждой странице сайта, независимо от того, чей компьютер к нему обращается.

[Компьютер B] Страница клиента: я должен видеть текст на своей странице в режиме реального времени, не загружая его всякий раз, когда администратор нажимает кнопку.

Вот мой код:

Страница администратора: admin.php

$("#newFight").click(function(){
                var newFight = "newFight="+1;
                $.ajax({
                    type:       "post",
                    url:        "../includes/newfight.php",
                    data:       newFight,
                    cache:      false,
                    success:    function(html){
                        if(html == 0){
                            alert("Open a Game First");
                        }
                        else if(html == 1){
                            $("#newFight").attr('disabled', 'disabled');
                            // Real time update of fight sequence
                            $("td#fightId").load('../includes/getfight_id.php');
                            $("td#fightHead").html("<em>Fight is on.</em>");
                        }
                    }
                });
            });

Страница администратора: newfight.php

session_start();
require_once('dbconn.php');
 if(isset($_POST['newFight'])){
        if($_POST['newFight'] == $_SESSION['gameActive']){
            // Make a new fight
            echo $msg = 1;
            $query = "INSERT INTO fights(fight_game_id) VALUES(".$_SESSION['game_id'].")";
            $execQuery = mysql_query($query);
            $last_id = mysql_insert_id();
            $_SESSION['fight_id'] = $last_id;
            $_SESSION['fight_active'] = 1;
        }
        if($_POST['newFight'] != $_SESSION['gameActive']){
            $msg = 0;
            echo $msg;
        }
    }
?>

Процесс здесь такой: при нажатии кнопки jQuery через AJAX будетобработайте его и установите сеанс ex: $ _SESSION ['button_clicked'] = 1;для справки пользователя, чтобы страница пользователя могла обновляться в режиме реального времени с помощью setInterval (клиента).

А вот страница клиента, которая должна получать обновление в режиме реального времени всякий раз, когда администратор нажимает кнопку.

Страница клиента: client.php

 $(function(){
            var auto_refresh = setInterval(
               function (){
                  $("td#fightHeadUser").load('../includes/fightheaduser.php');
               }, 1000);
 });

Страница клиента: fightheaduser.php

session_start();
if(isset($_SESSION['fight_active']) && $_SESSION['fight_active'] == 1){
    echo "<em>Fight is on.</em>";
}
if(!isset($_SESSION['fight_active']) && $_SESSION['fight_active'] != 1){
    echo "<em>No fight yet.</em>";
}

Так что моя проблема заключается в том, что ...работает только на одном компьютере, поэтому, когда я открываю два браузера (admin и client) и нажимаю кнопку, я вижу, что страница клиента обновляется в режиме реального времени, НО, когда другой компьютер обращается к странице клиента через LAN, это не такработая над ними.Поэтому я подозреваю, что это потому, что сессии хранятся только на моем компьютере, поэтому он не работает на другом компьютере.

Как вы думаете, что я должен делать?Если вы можете предложить мне хорошее, но другое решение, то я бы с удовольствием попробовал.

Извините за мой очень длинный вопрос.ТИА.

Ответы [ 2 ]

2 голосов
/ 26 марта 2011

Я предполагаю, что клиент должен войти в систему, когда он хочет посмотреть или ссорится? Почему бы не использовать БД? Так что вы можете зарегистрироваться, который включен, и вы можете смотреть историю и т. Д. И т. Д.

2 голосов
/ 26 марта 2011

Я думаю, что вы не можете работать с сеансами, чтобы решить эту проблему, поскольку каждый пользователь (соединение) получает другой сеанс и не может получить данные из сеанса администратора.

вы можете использовать переменные среды.каждое соединение может прочитать это.

$_ENV
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...