Intereting Posts
Загрузите файл Google Диск с помощью javascript Symfony2 Doctrine2 – генерировать аннотацию Many-to-Many из существующей базы данных по доктрине: mapping: import Ошибка анализа: синтаксическая ошибка, неожиданное «else» (T_ELSE) Получать исходные данные mysql_fetch_assoc, не может показаться, что проблема CakePHP RequestHandler возвращает RSS / JSON вместо HTML Создание одного массива из другого массива в php session_id () не получает переменные сеанса Есть ли предел как max_input_vars в версиях до 5.3.9? Пользовательский фильтр в сетке кендо, передающий нулевые значения, когда фильтрация сбоку usere serevr Преобразуйте это цифровое подписание php в Delphi Любая причина, по которой этот фрагмент кода не будет устанавливать cookie правильно? Значок WAMP Server V 2.5 оранжевый, не отвечает и нет меню Отправить кнопку не будет показывать результат одним щелчком мыши, это покажет его вторым кликом Почему я не могу использовать openssl_encrypt?

как остановить множественный вход пользователя с тем же адресом электронной почты и паролем, как только пользователь уже зарегистрировался

Мне нужна помощь, как я могу остановить множественный вход пользователя с тем же адресом электронной почты и паролем, как только пользователь уже зарегистрировался на веб-сайте, у меня есть веб-сайт, но на моем веб-сайте у меня есть два типа подписки на подписку, free or paid бесплатные пользователи могут попробовать войти в систему с нескольких устройств или ПК или браузеры не имеют проблем с бесплатными пользователями.

но теперь проблема в том, что я хочу ограничить платных пользователей, потому что платные пользователи должны не только входить в систему с нескольких устройств или ПК или браузера после платного входа пользователя из любого места .. в то время как платный пользователь пытается войти в систему, тогда система должна автоматически выйти из уплаченного пользователя из предыдущего браузера или устройств или ПК?

Пример*

 if paid user already login from chrome and user trying to login from firefox then system should automatically destroy first session which is created from chrome. then allow paid users to use their account in firefox. 

Здесь Мой тестовый сценарий

Index.php

 <form action="verifylog.php" method="post"> <input type="text" name="email1" /><br /> <input type="password" name="password1" /><br /> <input type="submit" value="Submit" /> </form> 

Verifylog.php

 session_start(); include('config.php'); if(empty($_POST['email1'])) { header('Location:index.php'); } $email=$_POST['email1']; $password=$_POST['password1']; $querymysql=mysql_query("select * from users where uemail='$email' and upass='$password'") or die ("query problem"); $row=mysql_fetch_array($querymysql); $db_email1=$row['uemail']; $db_pass=$row['upass']; $db_status=$row['ustatus']; if($row>0){ $_SESSION['new_email']=$db_email1; $_SESSION['new_pass']=$db_pass; $_SESSION['new_status']=$db_status; $_SESSION['logged_in'] = 'active'; if(isset($_SESSION['logged_in']) || !empty($_POST['email1']) ) { $query_time=mysql_query("UPDATE users SET ustatus='".$_SESSION['logged_in']."' WHERE uemail='".$email."'"); header('Location:test.php'); } } if($db_status==$_SESSION['logged_in']) { header("location:logout.php"); } else { $msg="please check your email and password"; $_SESSION['error_msg']=$msg; header('Location:index.php?error='.$_SESSION['error_msg'].''); } в session_start(); include('config.php'); if(empty($_POST['email1'])) { header('Location:index.php'); } $email=$_POST['email1']; $password=$_POST['password1']; $querymysql=mysql_query("select * from users where uemail='$email' and upass='$password'") or die ("query problem"); $row=mysql_fetch_array($querymysql); $db_email1=$row['uemail']; $db_pass=$row['upass']; $db_status=$row['ustatus']; if($row>0){ $_SESSION['new_email']=$db_email1; $_SESSION['new_pass']=$db_pass; $_SESSION['new_status']=$db_status; $_SESSION['logged_in'] = 'active'; if(isset($_SESSION['logged_in']) || !empty($_POST['email1']) ) { $query_time=mysql_query("UPDATE users SET ustatus='".$_SESSION['logged_in']."' WHERE uemail='".$email."'"); header('Location:test.php'); } } if($db_status==$_SESSION['logged_in']) { header("location:logout.php"); } else { $msg="please check your email and password"; $_SESSION['error_msg']=$msg; header('Location:index.php?error='.$_SESSION['error_msg'].''); } 

test.php

 <?php $querymysql=mysql_query("select * from users where uemail='".$_SESSION['new_email']."'") or die ("query problem"); $row=mysql_fetch_array($querymysql); ?> Hello Mr. <?php echo $row['uemail']; ?> <br /> Your Email Is &nbsp; <?php echo $row['uemail']; ?> <br /> Your Password Is &nbsp; <?php echo $row['upass']; ?> <br /> Your Status Is &nbsp; <?php echo $row['ustatus']; ?> <br /> Here Your Can Logout Your Account: <a href="logout.php">Click Here</a> 

Logout.php

 <?php session_start(); include('config.php'); if(!empty($_SESSION['logged_in']) || !empty($_POST['email1']) ) { session_destroy(); $query_time=mysql_query("UPDATE users SET ustatus='inactive' WHERE uemail='".$_SESSION['new_email']."'"); header("location:index.php"); } ?> в <?php session_start(); include('config.php'); if(!empty($_SESSION['logged_in']) || !empty($_POST['email1']) ) { session_destroy(); $query_time=mysql_query("UPDATE users SET ustatus='inactive' WHERE uemail='".$_SESSION['new_email']."'"); header("location:index.php"); } ?> 

Спасибо всем, что я выполнил свой сценарий

Здесь My Completed If Any Web Developer Need It

 how to prevent multiple user login with same email and password once user already logged from multiple pc or browsers 

Index.php

 <form action="verifylog.php" method="post"> <input type="text" name="email1" /><br /> <input type="password" name="password1" /><br /> <input type="submit" value="Submit" /> </form> 

Verifylog.php

 session_start(); include('config.php'); if(empty($_POST['email1'])) { header('Location:index.php'); } $email=$_POST['email1']; $password=$_POST['password1']; $querymysql=mysql_query("select * from users where uemail='$email' and upass='$password'") or die ("query problem"); $row=mysql_fetch_array($querymysql); $db_email1=$row['uemail']; $db_pass=$row['upass']; $db_status=$row['ustatus']; $db_sessionid=$row['session_id']; $old_sessionid = session_id(); $new_sessionid = session_regenerate_id(true); $_SESSION['newregid']=$new_sessionid; $_SESSION['odlregid']=$old_sessionid; $_SESSION['new_email']=$db_email1; $_SESSION['new_pass']=$db_pass; $_SESSION['new_status']=$db_status; if(!empty($old_sessionid)) { $query_time=mysql_query("UPDATE users SET session_id='".$old_sessionid."' WHERE uemail='".$email."'"); header('Location:test.php'); } else if($db_sessionid!=$_SESSION['odlregid']) { $query_time=mysql_query("UPDATE users SET session_id='".$new_sessionid."' WHERE uemail='".$email."'"); header('Location:test.php'); } в session_start(); include('config.php'); if(empty($_POST['email1'])) { header('Location:index.php'); } $email=$_POST['email1']; $password=$_POST['password1']; $querymysql=mysql_query("select * from users where uemail='$email' and upass='$password'") or die ("query problem"); $row=mysql_fetch_array($querymysql); $db_email1=$row['uemail']; $db_pass=$row['upass']; $db_status=$row['ustatus']; $db_sessionid=$row['session_id']; $old_sessionid = session_id(); $new_sessionid = session_regenerate_id(true); $_SESSION['newregid']=$new_sessionid; $_SESSION['odlregid']=$old_sessionid; $_SESSION['new_email']=$db_email1; $_SESSION['new_pass']=$db_pass; $_SESSION['new_status']=$db_status; if(!empty($old_sessionid)) { $query_time=mysql_query("UPDATE users SET session_id='".$old_sessionid."' WHERE uemail='".$email."'"); header('Location:test.php'); } else if($db_sessionid!=$_SESSION['odlregid']) { $query_time=mysql_query("UPDATE users SET session_id='".$new_sessionid."' WHERE uemail='".$email."'"); header('Location:test.php'); } 

test.php

 <?php $querymysql=mysql_query("select * from users where uemail='".$_SESSION['new_email']."'") or die ("query problem"); $row=mysql_fetch_array($querymysql); $new_id=$row['session_id']; if($new_id!=$_SESSION['odlregid']){ unset($_SESSION['odlregid']); session_destroy(); header("location:index.php"); } else { ?> Hello Mr. <?php echo $row['uemail']; ?> <br /> Your Email Is &nbsp; <?php echo $row['uemail']; ?> <br /> Your Password Is &nbsp; <?php echo $row['upass']; ?> <br /> Your Status Is &nbsp; <?php echo $row['ustatus']; ?> <br /> Your Session_Id Is &nbsp; <?php echo $row['session_id']; ?> <br /> Here Your Can Logout Your Account: <a href="logout.php">Click Here</a> <?php }?> с <?php $querymysql=mysql_query("select * from users where uemail='".$_SESSION['new_email']."'") or die ("query problem"); $row=mysql_fetch_array($querymysql); $new_id=$row['session_id']; if($new_id!=$_SESSION['odlregid']){ unset($_SESSION['odlregid']); session_destroy(); header("location:index.php"); } else { ?> Hello Mr. <?php echo $row['uemail']; ?> <br /> Your Email Is &nbsp; <?php echo $row['uemail']; ?> <br /> Your Password Is &nbsp; <?php echo $row['upass']; ?> <br /> Your Status Is &nbsp; <?php echo $row['ustatus']; ?> <br /> Your Session_Id Is &nbsp; <?php echo $row['session_id']; ?> <br /> Here Your Can Logout Your Account: <a href="logout.php">Click Here</a> <?php }?> 

Logout.php

  <?php session_start(); include('config.php'); header("location:index.php"); ?> в  <?php session_start(); include('config.php'); header("location:index.php"); ?> 

Поместите идентификатор сеанса в вашу базу данных с пользователем и напишите новый идентификатор сеанса при каждом входе в систему. Как часть вашего запроса select, используйте session_id в качестве критерия, и любые недействующие сеансы больше не будут действительны.

Это простой способ сделать это, что вы можете попробовать:

1.) Храните имя_страницы и mac_address вместе с именем пользователя, паролем, статусом (1-> loggedin; 0-> notloggedin) в таблице.

2.) Во время входа в систему сохраните файл cookie с именем пользователя, именем браузера, mac_address, статусом и также обновите те же значения в столбцах таблицы.

Перед загрузкой страницы проверьте это –

3.) В заголовке каждой страницы введите имя пользователя, имя_буфера, mac_address из db и сопоставьте его со значениями, хранящимися в файле cookie. Если совпадения продолжаются, то сеанс, если не завершающий сеанс.

Всякий раз, когда пользователь пытается войти в систему с chrome, он будет обновлять значения в db, и если обновление Firefox происходит в Firefox, значения cookie и db не совпадают, что приведет к автоматическому выходу из системы. Надеюсь, это поможет.

Или вы можете сделать это с сохранением и сопоставлением случайно сгенерированного уникального идентификатора сеанса.

Ваш ответ почти прав, но в них есть некоторые ошибки, и ниже необходимо внести изменения в ваши файлы:

1) test.php

 session_start(); include('config.php'); 

2) Logout.php

 session_start(); unset($_SESSION['odlregid']); session_destroy(); с session_start(); unset($_SESSION['odlregid']); session_destroy(); 

Я не уверен, что это сработает, но вы можете сохранить переменную сеанса в своей базе данных для платных пользователей. Если они снова войдут в систему, сначала отмените этот сеанс и создайте новый.

  1. Сохраните сеанс PHP в базе данных. Вы можете сослаться на подробности здесь, в PHP-сессиях в базе данных
  2. Свяжите сеанс пользователя с идентификатором сеанса в базе данных и с передней стороны, активируйте вызов ajax, который проверяет правильность сеанса.
  3. Если в какой-то момент времени это действие прерывается, принудительно выйдите из системы и покажите сообщение пользователю, что вы вошли в другое устройство / браузер.