Chrome操纵JavaScript参数



长话短说:我正在进行一个项目,该项目在登录到via steam的OpenID之后,寻找包含您的Steam ID的数据库条目。

我获得了带有PHP的Steam ID,该ID效果很好(我得到了正确的ID(。获得ID后,我将通过JavaScript转换为另一种ID。这也有效。

现在越来越奇怪了。如果我使用输入字段输入Steam ID并让JavaScript转换它,则一切都很好。但是它不使用Steam登录工作。登录名获取正确的ID(用回声线测试(,但是当我将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;
}

解决方案是将ID传递为字符串,我只是忘了设置引号:

if(!isset($_GET['steamID']) && !isset($_GET['armaID'])) {
    $steamID = SteamSignIn::validate();
    echo '<script language="JavaScript">
                forwardSteamLogin("'.$steamID.'");
            </script>';
    return;
}

感谢@felixkling。

最新更新