如何解决php会话的重复


How to solve the repetition of session php?

我计划创建由组成的访客登录

  • 昵称
  • 按钮提交

问题是:如果用户1选择自己的昵称为"KAKA",那么另一个用户就不能使用昵称"KAKA"(在其他浏览器中),因为它已经被占用了。

场景是这样的

在浏览器中,如果user1必须登录,它将把他的昵称存储到会话变量中。

在另一边。如果user2想要登录(在其他浏览器中),她/他不能登录,因为有相同的昵称。

避免会话中的重复记录。您可以使用数据库进行此类搜索。

如果用户名存在,则可以签入数据库。类似:

$temp_username = $_POST['username'];//Get the username
if($this->Is_username_available($temp_username))//call the function and check from table that the user name is available. 
{
    //Create session with posted username.
}
else
{
  // show message that Username is already taken for current session.
}

注销时:

Delete_Username($_SESSION['username']);//or you may take $_SESSION['username_id'] if you stored at the time of creation.

实现这一点的唯一有效方法是使用数据库。因为会话独立于服务器。它们是在客户端(即浏览器)建立的。它们是通过从服务器获取数据在浏览器中创建的。每个浏览器都有自己的会话副本。这就是所有浏览器的会话都是独立于其他会话的如果没有任何服务器端语言的支持,浏览器之间就不可能进行会话通信

对于您的任务,请按以下步骤进行:

  • 成功登录后,将昵称存储在tableSession中(以保持用户登录)
  • 当前用户的Set time out使他/她的会话过期,超时后也删除表条目。(如果用户登录但从未注销,则没有其他具有相同昵称的用户能够登录,则需要这样做)
  • Before logging in,首先检查用户在table or not中输入的昵称为present
  • 如果表中的昵称为exists,则reject表示该用户的登录,因为具有该昵称的另一个用户已经登录
  • 在注销阶段,delete是来自table的昵称,clear是使用户成功注销的session

您可以为单独的会话使用随机字符串函数。存储昵称&与登录通信的字符串。相比之下,不仅会比较昵称,还会比较随机字符串,以便使用不同的随机字符串将相同的昵称分配给其他人。。。