0

所以现在我正在为我的 C# 应用程序开发一个基本的会话系统。我有一个带有 id、用户名、密码的表和一个带有 id、代码、开始的会话表。

两个表的 id 列都与登录的用户相关(用户表的 id 与会话表相同)。我想要做的是,当它设置会话时,它首先检查会话是否已经处于活动状态,如果是,那么它只会更新当前的会话,如果没有,它将插入一个新的会话。这工作正常。我的问题是,无论我登录哪个用户,因为 id 总是设置为 0,所以我一次最多可以有一个会话处于活动状态。

这是我目前正在做的事情:

//get id of inputted user.
$id = getUserId($username);

//first check if a session already exists that is connected to this username
$query = mysql_query("SELECT * FROM sessions WHERE(`id`='$id')") or die("Couldn't query database: <br> <br> " . mysql_error());;

if(mysql_num_rows($query) > 0) {
    //session already exists, update it.
    mysql_query("UPDATE sessions SET `code`='$code', `start`='$date' WHERE(`id`='$id')") or die("Failed to update session: <br> <br> " . mysql_error());
} else {
    //session doesn't exist so lets create one
    mysql_query("INSERT INTO sessions (`id`,`code`,`start`) VALUES('$id','$code', '$date')") or die("Failed to create session: <br> <br> " . mysql_error());
}

还有我的 getUserId 函数:

function getUserId($username) {
    $query = mysql_query("SELECT * FROM users WHERE(`username`='$username')");
    $row = mysql_fetch_row($query);
    return $row[0];
}

我的问题,如果你还没有得到它。为什么即使 getUserId() 函数返回用户的正确 id,“id”总是设置为 0?

有什么建议么?

4

1 回答 1

0

刚刚发现我的错误。

我有这条线调用 setSession 函数。

//set session
setSession($username. $password);

它应该只是解析用户名,但我忘了把 $password 拿出来。因此,例如,当它正在寻找用户名“user1”时,它实际上会寻找“user1password”,因此由于没有包含这些详细信息的记录而返回 0。

于 2013-08-26T01:34:45.310 回答