gpt4 book ai didi

php - 重新发送 WWW Unity3d 和 PHP 时 session 不再存在

转载 作者:行者123 更新时间:2023-11-30 16:17:12 25 4
gpt4 key购买 nike

我创建了一个系统,通过 Unity3D 发送用户 ID,并在服务器上创建一个 session 并将 session 发送回客户端(在 Unity3D 上),所以一切正常!但是当我从 Unity3D 发送回服务器时, session 就消失了!我已经检查过浏览器并且它可以工作,只是在 Unity3D 上不起作用!有谁知道这是什么吗?

Unity3d 上的 C#

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'];
}

}
?>

最佳答案

如果您想在 PHP 中设置当前 session 的 session ID,请在 session_start 之前使用函数 session_id($id)。 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

If id is specified, it will replace the current session id. session_id() needs to be called before session_start() for that purpose. Depending on the session handler, not all characters are allowed within the session id. For example, the file session handler only allows characters in the range a-z A-Z 0-9 , (comma) and - (minus)

您可能还想在设置 session ID 之前进行验证,以防止代码出现错误,如果这是在互联网上,其他人也可以找到它。

(来自上面的链接)

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);
}

关于php - 重新发送 WWW Unity3d 和 PHP 时 session 不再存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56316573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com