Сессия больше не существует при повторной отправке WWW Unity3d и PHP - PullRequest
0 голосов
/ 26 мая 2019

Я создал систему, которая отправляет идентификатор пользователя Unity3D, а на сервере создает сеанс и отправляет сеанс обратно клиенту (в Unity3D), так что все работает! Но когда я отправляю обратно с Unity3D на сервер, сессия просто пропала! Я уже проверил браузер, и он работает, он просто не работает на Unity3D! Кто-нибудь знает, что это такое?

C # на Unity3d

void Start () {
   WWW w = new WWW (url+ "?id=" + userId);    
   StartCoroutine (SessionWWW (w));
}

private IEnumerator SessionWWW (WWW _w){
    yield return _w;  

    PlayerPrefs.SetString("cookie", _w.text);

    Debug.Log (PlayerPrefs.GetString("cookie"));
    Debug.Log (_w.text);
}

void Update(){
    if (Input.GetKeyDown (KeyCode.P)) {
        string session= PlayerPrefs.GetString("cookie");
        WWW w = new WWW (url "?sessionid=" + session);    
        StartCoroutine (GetSessionWWW (w));
    }
}

private IEnumerator GetSessionWWW (WWW _w){
    yield return _w;  
    if (_w.text == "ok") {
        Debug.Log ("received!");
    } else {
        Debug.Log (_w.text);
    }
}

PHP скрипт:

<?PHP
session_start();

if(isset($_GET['id'])){
    $id = $_GET['id'];
    $_SESSION['session'] = $id;
    echo $_SESSION['session'];
}
if(isset($_GET['sessionid'])){
    if(isset($_SESSION['session'])){
        echo $_SESSION['session'];
    }

}
?>

1 Ответ

0 голосов
/ 26 мая 2019

Если вы хотите установить идентификатор сеанса текущего сеанса в PHP, используйте функцию session_id ($ id) BEFORE session_start. https://www.php.net/manual/en/function.session-id.php

<?php

//do you need both of these?
if(isset($_GET['id'])){
    $id = $_GET['id'];
    session_id($id);
}
if(isset($_GET['sessionid'])){
    $sessionid = $_GET['sessionid'];
    session_id($sessionid);
}

session_start();

print_r($_SESSION)
?>

session_id ([ string $id ] ) : string

Если указан идентификатор, он будет заменить текущий идентификатор сессии. session_id () должен быть вызван перед session_start () для этой цели. В зависимости от обработчика сеанса не все символы допускаются в рамках идентификатора сеанса. Например, Обработчик файлового сеанса допускает только символы в диапазоне a-z A-Z 0-9, (запятая) и - (минус)

вы также можете захотеть проверить его перед установкой идентификатора сеанса, чтобы предотвратить ошибки в вашем коде, и если он есть в Интернете, другие люди тоже могут его найти.

(по ссылке выше)

function session_valid_id($session_id)
{
    return preg_match('/^[-,a-zA-Z0-9]{1,128}$/', $session_id) > 0;
}


$id = $_GET['id'];
if (session_valid_id($id)) {
    session_id($id);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...