php用户重复登录怎么解决,怎样防止一个用户名重复登陆?

用户投稿 63 0

关于“Php用户重复登录”的问题,小编就整理了【3】个相关介绍“Php用户重复登录”的解答:

怎样防止一个用户名重复登陆?

这就要看这个用户名的用途了

一、如果要用用户名来区分用户,甚至用用户名来登录,那用户名肯定不能相同了,多半用户名也不能修改的,一般会提供可以随意修改的昵称。

1.比如微信,用户名不能相同,也不能修改,因为用户名唯一确定一个人,别人可以通过用户名快速查找到你。

2.淘宝用户名也是不能相同也不能修改的,因为要通过用户名登录。

二、用户名并不用来标识一个人,也不用来登录,其实就是昵称,这时用户名一般可以相同,可以修改

比如qq昵称,微博昵称

php如何创建一个带时效的token?

php创建一个带时效的token是在用户登陆时把token插入数据库,生成token方法代码,每个接口都必须调用的token验证代码,token验证方法,db::是数据库操作类,这里设置是token。如果七天没被调用则需要重新登陆(也就是说用户7天没有操作APP则需要重新登陆),如果某个接口被调用,则会重新刷新过期时间。

步骤是(1)数据库用户表添加token字段和time_out这个token过期时间字段 ,

(2)用户登陆时(注册时自动登陆也需要)生成一个token和过期时间存入表中 ,

(3)在其他接口调用前,判断token是否正确,正确则继续,错误则让用户重新登陆,

具体的原因是因为APP端没有和PC端一样的session机制,所以无法判断用户是否登陆,以及无法保持用户状态,所以就需要一种机制来实现session,这就是token的作用。

 token是用户登陆的唯一票据,只要APP传来的token和服务器端一致,就能证明你已经登陆。

php能实现模拟登陆吗?

这种模拟登陆其实很简单,php的话主要用curl来实现。仔细研究一下你要抓的站具体是怎么实现用户登录的,可以用wireshark或者burpsuite(建议用后者)抓包看看整个过程都有那几次请求,每次请求都发送了哪些数据,构造好发给他就可以实现登录了。之后获取个人信息就很容易了,找找php解析html库,或者最简单粗暴的就是字符串截取函数加正则表达式,把你想要的数据提取出来就好了。对于你给出的这种验证码属于非常容易识别的验证码了,基本的识别原理参看使用Canvas进行验证码识别。当然比较蛋疼的问题就是网页编码问题,经常爬过来全是乱码,网上找找看转码的方法,都试一下,这是一门玄学,能不能成功看你人品和耐心吧。

用php模拟登陆主要分为三部分

1. post数据。

2.根据返回的http头,从中截出cookie段。

3.伪造http头发送请求。 我这里以用php抓取163相册的需要密码才能访问的目录为例。 <?php function posttohost($url, $data) //post数据 { $url = parse_url($url); if (!$url) return "couldn't parse url"; if (!isset($url['port'])) { $url['port'] = ""; } if (!isset($url['query'])) { $url['query'] = ""; } $encoded = ""; foreach ($data as $k=>$v) { $encoded .= ($encoded ? "&" : ""); $encoded .= rawurlencode($k)."=".rawurlencode($v); } $fp = fsockopen($url['host'], $url['port'] ? $url['port'] : 80); if (!$fp) return "Failed to open socket to $url[host]"; fputs($fp, sprintf("POST %s%s%s HTTP/1.0\n", $url['path'], $url['query'] ? "?" : "", $url['query'])); fputs($fp, "Host: $url[host]\n"); fputs($fp, "Content-type: application/x-www-form-urlencoded\n"); fputs($fp, "Content-length: " . strlen($encoded) . "\n"); fputs($fp, "Connection: close\n\n"); fputs($fp, "$encoded\n"); $line = fgets($fp,1024); if (!eregi("^HTTP/1\.. 200", $line)) return; $results = ""; $inheader = 1; while(!feof($fp)) { $line = fgets($fp,1024); if ($inheader && ($line == "\n" || $line == "\r\n")) { $inheader = 0; } elseif ($inheader) { $results .= $line; } } fclose($fp); return $results; }

到此,以上就是小编对于“Php用户重复登录”的问题就介绍到这了,希望介绍关于“Php用户重复登录”的【3】点解答对大家有用。

抱歉,评论功能暂时关闭!