Мне нужна помощь, как я могу остановить множественный вход пользователя с тем же адресом электронной почты и паролем, как только пользователь уже зарегистрировался на веб-сайте, у меня есть веб-сайт, но на моем веб-сайте у меня есть два типа подписки на подписку, 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 <?php echo $row['uemail']; ?> <br /> Your Password Is <?php echo $row['upass']; ?> <br /> Your Status Is <?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 <?php echo $row['uemail']; ?> <br /> Your Password Is <?php echo $row['upass']; ?> <br /> Your Status Is <?php echo $row['ustatus']; ?> <br /> Your Session_Id Is <?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 <?php echo $row['uemail']; ?> <br /> Your Password Is <?php echo $row['upass']; ?> <br /> Your Status Is <?php echo $row['ustatus']; ?> <br /> Your Session_Id Is <?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();
Я не уверен, что это сработает, но вы можете сохранить переменную сеанса в своей базе данных для платных пользователей. Если они снова войдут в систему, сначала отмените этот сеанс и создайте новый.