2016-01-19 36 views
3

當用戶先登錄索引時,它將重定向到登錄頁面。當進入登錄頁面時,如果已經登錄,則重定向到索引

但如何讓系統重定向用戶索引,如果他們試圖打開登錄頁面時,他們已經登錄?

它自己的登錄PHP:

<?php 
if(isset($_POST["button_login"]))   //FUNGSI LOGIN 
{ 

    $user = $_POST["name"]; 
    $pass = $_POST["password"]; 

    $sql_login  = "SELECT * FROM user WHERE username='$user' AND password='$pass'"; 
    $result_login = $conn->query($sql_login); 
    $row_login  = $result_login->fetch_assoc(); 
    $numrow_login = $result_login->num_rows; 

    if($numrow_login==1) 
    { 
     session_start(); 
     $_SESSION['user'] = $user; 
     header('Location:index.php?'); 
    } 
} 
?> 
+0

似乎你有一種方法......它工作嗎? – jkalden

回答

3

你應該測試,如果他們已經登錄開始它也最好session_start()在腳本文件的開頭

<?php 
session_start(); 

// If user already logged in, send them to index 
if (! empty($_SESSION['user'])) { 
    header('Location:index.php?'); 
    exit; 
} 

if(isset($_POST["button_login"]))   //FUNGSI LOGIN 
{ 

    $user = $_POST["name"]; 
    $pass = $_POST["password"]; 

    $sql_login  = "SELECT * FROM user WHERE username='$user' AND password='$pass'"; 
    $result_login = $conn->query($sql_login); 
    $row_login  = $result_login->fetch_assoc(); 
    $numrow_login = $result_login->num_rows; 

    if($numrow_login==1) 
    { 
     $_SESSION['user'] = $user; 
     header('Location:index.php?'); 
     exit; 
    } 
} 
?> 
2

基本上,你有兩種情況:

1)如果用戶沒有登錄和訪問index.php,他應該被重定向到login.php

- 您已經實施此檢查。

2)如果用戶已經登錄並訪問login.php,他應該被重定向到index.php

login.php最頂部添加一個檢查:

這將檢查會話已被設置,重定向到index.php

if (isset($_SESSION['user'])) { 
    header('Location:index.php?'); 
} 

此外,不要添加結尾?>標記。

如果您添加它,某些FTP客戶端可能會在其中添加空格,導致header("Location:xyz.php")不會發生,原因是頁面上已有輸出。

1

你需要在你的指數是這樣的:

if (isset($_SESSION['user'])) { 
    header('Location:index.php'); 
} 
相關問題