2015-11-11 92 views
1

我正在使用php和會話概念登錄註銷。創建4個文件在php中使用會話登錄/註銷

  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瀏覽器進行測試。 – maxhb

+0

謝謝@maxhb,但仍然面臨同樣的問題,當我在我的本地機器運行dis程序時,我嘗試在鉻和mozilla謝謝! – Sjay

回答

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致謝! – Sjay

+0

@Sjay確保你的session_start()在第一行。並再試一次 – Shan

+0

@Abdulla包含session_start()在所有頁面的第一行仍然im面臨同樣的問題是瀏覽器的問題謝謝! – Sjay