PHP随机生成的id与数据库不匹配

时间:2012-06-24 18:44:59

标签: php mysql

我的网站中集成了登录系统,但我是一名视频游戏程序员,希望将我的网站整合到我的游戏中。我正在使用PHP来检查用户的密码,并假设它返回一个随机用户ID,我稍后可以使用它来验证用户。我正在从游戏到网络服务器发出POST请求以验证用户信息,我无法为用户auth托管专用服务器,而且我当前的webhost不允许远程访问MYSQL数据库,所以这是我唯一的选项。这是给我配合的最后一段代码。

$userid = $this->generateRandID();
$time = time();

$database->updateUserField($_POST["username"], "userid", $userid);
$database->addActiveUser($_POST["username"], $time);
$database->removeActiveGuest($_SERVER['REMOTE_ADDR']);
echo($userid);

假设将用户添加为活动用户并更新mysql数据库中的userid字段,然后为我回显用户ID然后保存在游戏中。问题是用户标识回显似乎与数据库中的不同。 这是updateUserField,它只是我的一个快捷方式,所以如果我因任何原因需要更改它,我不必更改大量的代码行。

function updateUserField($username, $field, $value){
    return mysqli_query( $this->connection, "UPDATE ".TBL_USERS." SET ".$field." = '$value' WHERE username = '$username'");
}

1 个答案:

答案 0 :(得分:0)

从你的comment听起来,你试图用随机数替换用户ID的原因是为你的应用程序添加一定的安全级别。我认为更好的方法是与用户数据持久性分开处理会话。 目前,管理第三方应用程序对您系统的编程访问的行业标准是oAuth。您可以查看official oAuth docsbeginner's guide to oAuth。虽然标准oAuth工作流程假定用户将直接在您网站的网页上进行身份验证,但还有"two-legged oAuth"允许用户在第三方应用程序本身(在您的情况下,您的游戏)中提供其凭据。 实施oAuth的一些原因是安全性,授权与数据的分离或您的网站,客户和提供商的目的library support