2014-03-29 14 views
0

我一直負責對站點進行一些更改。特別是要更改輸入網站URL時用戶重定向到的主頁面。目前的情況是,在我的「的index.php」中描述的用戶被立即傳送到「登錄」頁面:更改PHP「必需」參數中斷站點結構

的index.php

<?php 

session_start(); 
$all_url = explode('?', $_SERVER['REQUEST_URI']); 
$url = explode('/', $all_url[0]); 

//Homepage 
if (empty($url[1])) { 
$url[1] = 'home'; 
} 

//DB connect 
$config = array(
'host' => 'localhost', //CHANGE THIS, DB SERVER 
'user' => 'xxx', //CHANGE THIS, DB USER 
'password' => 'xxx', //CHANGE THIS, DB PASSWORD 
'database' => 'xxx' //CHANGE THIS, DB NAME 
); 
$DB = new PDO('mysql:host=' . $config['host'] . ';dbname=' . $config['database'], $config['user'], $config['password']); 
$DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); 
$DB->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 
$DB->exec("SET names utf8"); 

if (file_exists('controller/' . $url[1] . '.php')) { 

$gtpl = 'main'; 
if (empty($_SESSION['uid']) && $url[1]!='register') { 
    //login 
    require 'controller/login.php'; 

}else{ 
    require 'controller/' . $url[1] . '.php'; 
} 

require 'view/' . $gtpl . '.php'; 
} else { 
echo 'ERROR - File not found!!!'; 
} 
?> 

我想讓它使用戶被轉移到「家」而不是「登錄」,並稍後在網站中使用登錄表單。問題是 - 當我更改需要'controller/login.php';需要'controller/home.php';,它將我重定向到該頁面,但我無法移動到網站中的任何其他地址。應該做些什麼改變才能使它工作起來?我公司還提供 「main.php」,以防萬一

main.php

<!DOCTYPE HTML> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title></title> 
    <meta name="description" content=""> 

    <link rel="stylesheet" href="/css/bootstrap.css"> 
    <link rel="stylesheet" href="/css/bootstrap-theme.css"> 
    <link rel="stylesheet" href="/css/style.css"> 
    <link rel="stylesheet" href="/css/jquery-ui-1.10.3.css"> 
    <link rel="stylesheet" href="/css/colpick.css"> 
    <!--[if lt IE 9]> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script> 
    <![endif]--> 
</head> 
<body> 

    <div class="container"> 

     <?php require 'view/frontend/'.$tpl.'.php';?> 

    </div> 

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
    <script>window.jQuery || document.write('<script src="/js/jquery-1.10.2.min.js"><\/script>')</script> 
    <script src="/js/jquery-ui-1.10.3.js"></script> 
    <script src="/js/jquery.migrate.js"></script> 
    <script src="/js/farbtastic.js"></script> 
    <script src="/js/crop.img.js"></script> 
    <script src="/js/colpick.js"></script> 
    <script src="/js/dropdown.js"></script> 
    <script src="/js/jquery.numeric.js"></script> 
    <script src="/js/init.js"></script> 
</body> 

+0

你是什麼意思與「我不能移動到任何網站中的其他地址「? –

+0

該腳本將始終重定向到home.php,因爲用戶未登錄。這是一個邏輯問題,而不是腳本問題。嘗試自動登錄作爲客人或其他東西。 – 2014-03-29 13:02:31

+0

@HüseyinBABAL這是一個商店網站,有一個「購物車」功能,註冊等。這些都不起作用。 – user2315641

回答

0

問題是SESSIONuid屬性從未設置。這可能是由登錄控制器完成的。

這意味着您的代碼的其他子句永遠不會被調用。 解決方案:使用另一個標誌,並在用戶未設置時將其重定向到家中。將用戶重定向到主頁後設置標誌。

if (!isset($_SESSION['firstVisit']) && $url[1]!='home') { 
    $_SESSION['firstVisit'] = false; //ensures we never enter this clause again 
    require 'controller/home.php'; 

}else{ 
    require 'controller/' . $url[1] . '.php'; 
} 

不過,如果你想要一些頁面無法訪問的,只有當用戶登錄時,你應該處理這樣的:

$restricted = array('page1','page2'); // restricted pages behind login 

if (!isset($_SESSION['firstVisit']) && $url[1]!='home') { 
    $_SESSION['firstVisit'] = false; //ensures we never enter this clause again 
    require 'controller/home.php'; 
}else if (empty($_SESSION['uid']) && in_array($url[1], $restricted)) { 
    //not logged in, but trying to access restricted page. 
    require 'controller/login.php'; 
}else{ 
    require 'controller/' . $url[1] . '.php'; 
} 
0
if (empty($_SESSION['uid']) && $url[1]!='register') { 
    //login 
    require 'controller/login.php'; 
} 

你可以改變成:

$notrestricted = array('register','home'); 

if (empty($_SESSION['uid']) && !in_array($url[1], $notrestricted)) { 
    //login 
    require 'controller/login.php'; 
} 
+0

這不會改變任何內容。我不希望用戶在登錄時被轉移到「家庭」,如果他不是,則登錄。我想完全忽視「登錄」作爲一個選項。 – user2315641