代碼頁:
<?php
//initializing script, do not modify
session_start();
define('IN_SCRIPT', true); //so that global.php cannot be accessed directly
$_SCRIPTNAME = 'default.php';
include 'global.php';
$db = new MyDB(); //mysql class
if(isset($_GET['action'])) {
$action = $_GET['action'];
} elseif(isset($_SESSION['user']) && $action == "login") {
header("Location: {$_SCRIPTNAME}?action=overview");
exit;
} elseif($action == 'logout') {
session_unset();
header("Location: {$_SCRIPTNAME}?action=login");
exit;
} else {
header("Location: {$_SCRIPTNAME}?action=login");
exit;
}
//display proper template for the action defined (if none found, 404)
$template = $db->selectFrom("template", null, array("name" => mysql_real_escape_string($action)));
if(!empty($template['result']['0'])) {
$template = $template['result']['0'];
eval("echo \"".$template['html']."\";");
} else {
$template = $db->selectFrom("template", null, array("name" => "404"));
$template = $template['result']['0'];
eval("echo \"".$template['html']."\";");
}
?>
在數據庫中,我有一個表templates
與格式name/html
一對夫婦行,其中name
是模板的名稱和html
是模板本身。評估是必需的AFAIK和模板中沒有用戶輸入,所以它應該是安全的。
樣本網址是:http://localhost/default.php?action=login
我的問題是:爲什麼會
if(isset($_GET['action'])) {
$action = $_GET['action'];
} elseif(isset($_SESSION['user']) && $action == "login") {
header("Location: {$_SCRIPTNAME}?action=overview");
exit;
} elseif($action == 'logout') {
session_unset();
header("Location: {$_SCRIPTNAME}?action=login");
exit;
} else {
header("Location: {$_SCRIPTNAME}?action=login");
exit;
}
不是重定向到如default.php行動=登錄,如果「用戶」會議沒有設定和動作?是不是註銷?我試圖做到這一點,因此用戶未登錄無法訪問「概述」頁面。
謝謝。
一開始我認爲這是錯誤的:$行動==「登錄」){ 它不應該是$ _GET [「行動」] ==「登錄」? $ action被初始化,但第一個'elseif'還不知道它。 – 2012-06-15 22:05:50