目前我有一個非常基本的PHP登錄系統。我的index.php文件只是檢查是否設置了會話,如果不是,則會將它重定向到login.php。我看到很多網站都達到了相同的效果,但是完全通過網站的索引。使用index.php登錄和主要內容
例如,在http://twitter.com如果我沒有登錄,我只會在twitter.com登陸。如果我登錄了,我也會在twitter.com上登陸不同的內容。我怎樣才能在我的網站上達到同樣的效果?
我確定這是非常基本的,但這是我還沒有探索的東西。
感謝
目前我有一個非常基本的PHP登錄系統。我的index.php文件只是檢查是否設置了會話,如果不是,則會將它重定向到login.php。我看到很多網站都達到了相同的效果,但是完全通過網站的索引。使用index.php登錄和主要內容
例如,在http://twitter.com如果我沒有登錄,我只會在twitter.com登陸。如果我登錄了,我也會在twitter.com上登陸不同的內容。我怎樣才能在我的網站上達到同樣的效果?
我確定這是非常基本的,但這是我還沒有探索的東西。
感謝
一個簡單的例子,你如何處理你的歡迎/用戶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');
}
很多方法可以做到這一點,但下面是一個基本的例子。假設你的僞邏輯是一樣的東西......
if (!$logged_in) {
redirect('login.php');
}
else {
// show page content
}
你可以做...
if (!$logged_in) {
include('login.php');
}
else {
include('page-content.php');
}
的包括並不一定需要,但有利於保持它的整潔。
首先回答自己的問題,如果您的索引文件可以包含用戶提供的東西。如果有的話不要做!問題是可能來自該用戶的攻擊媒介提供了與您的登錄相關的東西。
那說讓我幫你:
<?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";
}
?>
我覺得你的想法在這裏。我們現在有一個文件處理所有事情。
你錯過了一個非常關鍵的組件。實際上放錯了位置。 –
你必須比這更具體。 – Fleshgrinder
你的index.php將持有大部分的文件/組件,不同之處在於,如果用戶登錄後,如果條件滿足/爲true,則會對文件執行「include」操作。 –
@ Fred-ii-啊,我明白了,這很有道理。因此,如果會話已設置,請包括bla.php(包含所有主要內容),如果未設置,則包括login.php等。 – jskidd3
是的,這是基本概念,並使用「else」條件。 –