【发布时间】:2017-04-19 01:02:49
【问题描述】:
长话短说:我正在做一个项目,在通过 Steam 的 OpenID 登录后查找包含您的 Steam ID 的数据库条目。
我使用 PHP 获得了 Steam ID,它运行良好(我获得了正确的 ID)。获得 ID 后,我通过 JavaScript 将其转换为另一种 ID。这也有效..基本上。
现在变得越来越奇怪了。如果我在输入字段中输入 Steam ID 并让 JavaScript 转换它,一切都很好。但它不能使用 Steam 登录。登录获得了正确的 id(用 echo 行测试),但是当我将 id 作为参数提供给 JavaScript 时,它实际上是 ID + 10,我不知道为什么。有趣的是,这只发生在 Chrome 和 Firefox 中,Microsoft Edge 一切正常,但 Chrome 和 Firefox 将 ID 提高了 10。
PHP:
if(!isset($_GET['steamID']) && !isset($_GET['armaID'])) {
$steamID = SteamSignIn::validate();
//Steam ID is correct here
echo "<script>
forwardSteamLogin(".$steamID.");
</script>";
//Steam ID still correct afterwards
return;
}
JS:
function forwardSteamLogin(uid) {
//UID / SteamID magically increased by 10 in FF and Chrome, but still correct in Edge
var guid = getUid(uid);
var urlToDirect = "?steamID="+uid+"&armaID="+guid;
window.location.href = urlToDirect;
}
【问题讨论】:
-
JavaScript 仅支持 53 位整数。如果蒸汽 ID 大于 2^53,您将失去精度。我只能猜测这就是问题所在。而是将字符串传递给 JavaScript,因为它没有理由必须是数字。
-
您检查过打印的 javascript 代码吗?参数是正确的id还是增加的?
-
@FelixKling 谢谢。我知道 JavaScript 无法将其作为整数处理,只是忘记了将引号作为字符串传递。
标签: javascript php jquery google-chrome microsoft-edge