2013-10-15 52 views
0

目前我有一個非常基本的PHP登錄系統。我的index.php文件只是檢查是否設置了會話,如果不是,則會將它重定向到login.php。我看到很多網站都達到了相同的效果,但是完全通過網站的索引。使用index.php登錄和主要內容

例如,在http://twitter.com如果我沒有登錄,我只會在twitter.com登陸。如果我登錄了,我也會在twitter.com上登陸不同的內容。我怎樣才能在我的網站上達到同樣的效果?

我確定這是非常基本的,但這是我還沒有探索的東西。

感謝

+0

你的index.php將持有大部分的文件/組件,不同之處在於,如果用戶登錄後,如果條件滿足/爲true,則會對文件執行「include」操作。 –

+0

@ Fred-ii-啊,我明白了,這很有道理。因此,如果會話已設置,請包括bla.php(包含所有主要內容),如果未設置,則包括login.php等。 – jskidd3

+0

是的,這是基本概念,並使用「else」條件。 –

回答

2

一個簡單的例子,你如何處理你的歡迎/用戶index.php網站:

的index.php

require_once('configFile.php'); // session_start();.. and other stuff 

if ($logged) { 

    require_once('userLogedIn/index.php'); 

} else { 

    require_once('welcome/index.php'); 
} 
0

很多方法可以做到這一點,但下面是一個基本的例子。假設你的僞邏輯是一樣的東西......

if (!$logged_in) { 
    redirect('login.php'); 
} 
else { 
    // show page content 
} 

你可以做...

if (!$logged_in) { 
    include('login.php'); 
} 
else { 
    include('page-content.php'); 
} 

的包括並不一定需要,但有利於保持它的整潔。

0

首先回答自己的問題,如果您的索引文件可以包含用戶提供的東西。如果有的話不要做!問題是可能來自該用戶的攻擊媒介提供了與您的登錄相關的東西。

那說讓我幫你:

<?php 

$session_id = session_id(); 

if (!empty($_COOKIE[$session_id]) && session_start() !== false && isset($_SESSION["user_id"])) { 
    echo "index page"; 
} 
elseif (isset($_POST["login"])) { 
    // validate login ... 
    if ($valid_login === true) { 
    if (session_status() === PHP_SESSION_ACTIVE) { 
     session_regenerate_id(); 
    } 
    else { 
     session_start(); 
    } 
    $_SESSION["user_id"] = $user_id; 
    } 
} 
else { 
    echo "login page"; 
} 

?> 

我覺得你的想法在這裏。我們現在有一個文件處理所有事情。

+0

你錯過了一個非常關鍵的組件。實際上放錯了位置。 –

+0

你必須比這更具體。 – Fleshgrinder