ran*_*its 15 javascript php cookies
我感兴趣的是让用户能够在我的网络应用程序上登录并注销多个用户会话cookie.目前,身份验证是标准的,并且唯一标识符允许我在用户访问我们的站点时对其进行身份验证,如果他们提供了cookie中可用的身份验证令牌.典型用例适用于如果用户从一个选项卡注销,它会将其从另一个选项卡中注销.现在,它要求用户从两个独特的浏览器实例登录,以便能够登录到两个不同的帐户.
是否有非HTML5方式(使用标准javascript cookie)具有特定于标签的cookie标识符?我假设没有明确的方法来解决这个问题,它需要从后端进行某种黑客+合作.如果有一个没有使用HTML5的解决方案,那将是理想的.
Pra*_*eek 13
有办法处理这种情况,但没有一种是简单的.
如果你愿意,你必须告诉用户这样做:如何极客
从文档: 使用的数据sessionStorage
不会在浏览器选项卡中保留,即使两个选项卡都包含来自同一域的网页.换句话说,内部数据sessionStorage
不仅限于调用页面的域和目录,还包含页面所在的浏览器选项卡.与会话cookie形成对比,会话cookie将数据从选项卡保留到选项卡.
这是一个简单的示例,说明如何创建一个用户可以登录多个帐户的系统。这不是安全检查,必须添加。这段代码可以更好地编写和优化。
php
https://github.com/maksa9/multiple-user-login/blob/master/inc.php
该文件包含在每个 php 脚本中。
这部分检查哪个用户已登录以及哪个帐户处于活动状态。以下是根据活动帐户创建 php 脚本正确路径的函数
// check which user is logged and which account is active
if(isset($_GET['user'])) $id_user = (int)$_GET['user'];
if($id_user > 0)
{
if(isset($_SESSION['user'][$id_user]))
{
$user_name = $_SESSION['user'][$id_user]['name'];
$user_email = $_SESSION['user'][$id_user]['email'];
}
else
gotToLoginForm();
}
// If the user id is not specified and there is a user session, finds another id
if($id_user == 0 and isset($_SESSION['user']))
{
$sess = $_SESSION['user'];
$id_user = (int)key($sess);
if(isset($_SESSION['user'][$id_user]))
{
$user_name = $_SESSION['user'][$id_user]['name'];
$user_email = $_SESSION['user'][$id_user]['email'];
define('ID_USER',$id_user);
gotToIndex();
}
else
gotToLoginForm();
}
define('ID_USER',$id_user);
Run Code Online (Sandbox Code Playgroud)
登录表单.php
https://github.com/maksa9/multiple-user-login/blob/master/loginform.php
使用 post 方法登录的简单表单。
登录.php
https://github.com/maksa9/multiple-user-login/blob/master/login.php
登录用户。模拟对数据库的查询。
if(isset($_POST['email']))
if(isset($_POST['pass']))
{
$email = $_POST['email'];
$pass = $_POST['pass'];
$id_user = 0;
// simulates a query to the database
if($email === 'test1@test.com' and $pass === '111')
{
$id_user = 1;
$name='John Doe';
}
if($email === 'test2@test.com' and $pass === '222')
{
$id_user = 2;
$name = 'Doe John';
}
// login user
if($id_user > 0)
{
// checks if the user is already logged
if( !isset($_SESSION['user'][$id_user]))
{
$_SESSION['user'][$id_user] = array('email'=>$email, 'name'=>$name);
}
//go to main page
$page = ROOT.'user/'.$id_user.'/index.php';
header('Location: '.$page);
exit;
}
}
Run Code Online (Sandbox Code Playgroud)
索引.php
https://github.com/maksa9/multiple-user-login/blob/master/index.php
应用程序的主页。
<div>
<h1>Welcome: <?php echo $user_name ?> (<?php echo $user_email ?>) [<?php echo $id_user ?>]</h1>
<p><a href="<?php echo returnUrl('swap.php',$id_user) ?>">Choose an account</a></p>
<p><a href="<?php echo returnUrl('loginform.php',$id_user) ?>">Login with the another account</a></p>
<p><a href="<?php echo returnUrl('logout.php',$id_user) ?>">Log out</a></p>
</div>
Run Code Online (Sandbox Code Playgroud)
交换.php
https://github.com/maksa9/multiple-user-login/blob/master/swap.php
允许用户选择帐户。
foreach($_SESSION['user'] as $idus => $userA)
{
echo '<p><a href="'.returnUrl('index.php',$idus).'">'.$userA['name'].' ('.$userA['email'].') ['.$idus.']</a></p>';
}
Run Code Online (Sandbox Code Playgroud)
注销.php
https://github.com/maksa9/multiple-user-login/blob/master/logout.php
注销用户。检查活动用户帐户并重定向它们(如果有)。
unset($_SESSION['user'][ID_USER]);
if(count($_SESSION['user']) == 0)
unset($_SESSION['user']);
// checks for active user accounts and redirects them if any
if(isset($_SESSION['user']))
{
$sess = $_SESSION['user'];
$id_user = (int)key($sess);
if(isset($_SESSION['user'][$id_user]))
{
$page = ROOT.'user/'.$id_user.'/index.php';
header('Location: '.$page);
exit;
}
}
Run Code Online (Sandbox Code Playgroud)
.htaccess
https://github.com/maksa9/multiple-user-login/blob/master/.htaccess
Options +FollowSymlinks
RewriteEngine On
RewriteRule ^user\/([0-9]*)\/index.php$ index.php?user=$1 [NC,L]
RewriteRule ^user\/([0-9]*)\/logout.php$ logout.php?user=$1 [NC,L]
RewriteRule ^user\/([0-9]*)\/login.php$ login.php?user=$1 [NC,L]
RewriteRule ^user\/([0-9]*)\/loginform.php$ loginform.php?user=$1 [NC,L]
RewriteRule ^user\/([0-9]*)\/swap.php$ swap.php?user=$1 [NC,L]
RewriteRule ^user\/$ index.php [NC,L]
RewriteRule ^user$ index.php [NC,L]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10009 次 |
最近记录: |