我正在尝试在我的电子商务网站上实现一项功能,但我不知道该怎么做或从哪里开始。
我想提醒已经验证并登录我网站的客户,如果其他人使用他们的(登录用户)登录凭据以打算黑客或任何其他安全风险,请尝试再次登录其他任何计算机或浏览器。我可以提醒已登录的用户尽快更改密码以提高安全性,或者如果是同一个用户尝试从多个客户端登录,那么他将受到限制。
我将在我的数据库中维护已登录用户的列表,并将验证用户是否已登录。但是如何动态发送警报,而无需用户从客户端提出任何回发因为只要进行其他登录尝试,我的脚本就会立即警告已登录的用户。
我希望我的要求清楚。如果有什么含糊不清的请评论,我会清楚。
我使用的是PHP 5.3和MySQL 5.5。该网站将托管在linux主机上。
我认为AJAX会有所帮助。我现在正在寻找解决方案很多天但没有运气。
请帮忙。
答案 0 :(得分:2)
"长期投票"是用于描述以下技术的名称:
这实质上模拟了从客户端到服务器的连续实时流。出于多种原因,我不会在PHP中这样做。以下是一些:
但是你可以使用sleep,轮询数据库(或者更好的缓存APC / Memcache)。
如果你想做类似的事情跳进一些可以处理事件的技术:Python(Tornado,gevent,eventlet,Twisted,...),Ruby(Eventmachine,...),Erlang,Scala,Server Side JavaScript(节点) .js,...),Comet ......
看一下这张桌子。
你可以做那样的事情
为ex创建一个名为db的表。当用户登录您的网站时,log
并记录一些不同的数据(例如IP,登录日期......)。将signout_date字段留空。 (当用户注销时只需更新此表并放置当前日期)因此,如果有人在您的网站上,则注销日期字段必须为空
然后在每个用户活动中,检查您的表格user_id
:是否有多个行具有相同的user_id
和空的登出日期字段。然后只需通知用户,另一台用您的凭据登录的电脑。
答案 1 :(得分:0)
您正在寻找一种名为Server Push的技术。
TLDR:创建一个服务器方法,该方法将接受请求,然后阻止执行,直到某个定义的时间过去或发生某些服务器端事件。返回对客户端的不同响应,具体取决于它是服务器端事件还是仅超时。从客户端 - 使用长超时设置对此方法进行AJAX调用并处理响应。
请检查my answer for similar question。
UPD:另外,正如@AndreiG建议的那样,您可以通过持续轮询实现类似的功能。这不太复杂,但对服务器端事件的响应速度较慢。
答案 2 :(得分:0)
使用ajax,您可以在网址上进行连续轮询,您可以在其中显示是否需要触发警报。你可以每隔几秒钟或你选择的间隔做一次。
答案 3 :(得分:0)
当用户在用户表中登录写入用户会话ID时。并使用ajax请求检查每5-10秒或您想要的值是当前会话ID与数据库中的相等。
如果这些值不相同,则表示有人使用相同的用户凭据登录。
答案 4 :(得分:0)
ASP中有一种名为Signalr的技术。你必须在php中找到它的替代品,我认为Sockets.Maybe Ratchet或Wrench做的工作。 Read Here