如何解决会话php的重复?

时间:2015-04-04 08:34:09

标签: php

我打算创建由

组成的访客登录
  • 昵称
  • 按钮提交

问题:如果用户1选择他的昵称为" KAKA",则其他用户无法使用昵称" KAKA"(在其他浏览器中),因为它已经是已被带走。

情况是这样的。

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

另一方面。如果user2想要登录(在其他浏览器中),她/他无法登录,因为昵称相同。

3 个答案:

答案 0 :(得分:1)

避免会话中的重复记录。您可以将数据库用于此类scnerio。

如果用户名存在,您可以检查数据库。赞:

$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.

答案 1 :(得分:0)

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

对于您的任务,请按以下步骤操作:

  • 成功登录后,将昵称存储在table以及Session中(以保持用户登录)。
  • Set time out让当前用户过期他/她的会话,超时后,也删除表项。 (如果用户登录但从未注销,则无需其他具有相同昵称的用户即可登录)
  • Before logging in,首先检查用户输入的昵称present中的table or not
  • 如果表中的昵称existsreject此用户的登录信息,因为具有此昵称的其他用户已登录。
  • 在退出阶段,delete来自tableclear的{​​{1}}昵称,以便用户成功退出。

答案 2 :(得分:-3)

您可以将随机字符串函数用于单独的会话。存储昵称和组合的组合字符串与登录进行通信。相比之下,不仅会比较昵称,还会比较随机字符串,以便为具有不同随机字符串的其他人提供相同的昵称...