Войти / Выйти используя сеанс в php

1

Я работаю над регистрацией входа в систему, используя php с концепцией сеанса. Создано 4 файла

  1. login.php
  2. checklogin.php
  3. securepage.php
  4. logout.php

Я могу войти в систему с определенным именем пользователя и паролем, когда я вошел в сессию. Login.php перейдет к securepage.php, если я скопирую файл securepage.php в каком-то другом браузере, который он не откроет, он будет перенаправлен на login.php vch прекрасно работает.

Но если я открою securepage.php в том же браузере на другой вкладке, он будет перенаправлен на login.php, вместо этого он должен показать securepage.php, может кто-нибудь помочь мне в достижении этого Спасибо!

1.Login.php

<html>
    <head>
        <title>Login Form</title>
    </head>
    <body>
        <h2>Login Form</h2>
        <form method="post" action="checklogin.php">
            USER ID: <input type="text" name="uid"/><br>
            PASSWORD: <input type="password" name="pw"/><br>
            <input type="submit" value="Login"/>
        </form>
    </body>
</html>

2.checklogin.php

<?php 
    $uid = $_POST['uid'];
    $pw = $_POST['pw'];

    if($uid == 'arun' and $pw == 'arun123')
    {
        session_start();
        $_SESSION['sid'] = session_id();
        header('location:securepage.php');
    }
?>

3. securepage.php

<?php 
    session_start();
    if($_SESSION['sid'] == session_id())
    {
        echo "welcome to you<br>";
        echo "<a href='logout.php'>Logout</a>";
    }
    else
    {
        header('location:login.php');
    }
?>

4.logout.php

<?php 
    echo "Logged out successfully";

    session_start();
    session_destroy();
    setcookie(session_id(),time()-1);
?>
  • 0
    Ваш код работает, протестирован с браузером IE и Chrome.
  • 0
    Спасибо @maxhb, но все еще сталкиваюсь с той же проблемой, когда я запускаю программу dis на моей локальной машине, которую я пробовал в chrome и mozilla Спасибо!
Теги:
session

1 ответ

0

Попробуй это

В checklogin.php

<?php 
    session_start();
   $uid = $_POST['uid']; 
   $pw = $_POST['pw'];
   if($uid == 'arun' and $pw == 'arun123')
   {      
      $_SESSION['sid'] = '$uid'; # need to set user id instead of session_id()
      if (isset($_SESSION['sid'])) {
        header('Location: securepage.php');
      }
      else
      {
        echo "Error";
      }
   }
?>

В securepage.php

<?php 
   session_start();
   if(isset($_SESSION['sid']))
   {
    echo "welcome to you<br>";
      echo "<a href='logout.php'>Logout</a>";
   }
   else
   {
    header('Location: login.php');
   }
?>

В logout.php

<?php 

    session_start();
    if(!session_destroy())
    {
        echo "Failed to log out";
    }
    else
    {
        echo "Logged out successfully";
    }
?>
  • 0
    Спасибо @Abdulla, я заменил твой код, но все же я сталкиваюсь с той же проблемой, я не знаю почему. login.php ----> войдя в систему, он будет перенаправлен на securepage.php, когда я скопирую login.php и вставлю в другую вкладку в том же браузере, он откроет login.php вместо securepage.php Спасибо!
  • 0
    @Sjay, убедитесь, что ваша session_start () находится в первой строке. и попробуй еще раз
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню