2011-09-22 84 views
1

我目前正在嘗試使用確保用戶登錄中央登錄系統的腳本。.htaccess文件影響包含文件(包括圖像)

的問題是,當包含的任何文件,包括PHP和圖像文件,在該子文件夾都無法訪問,無論是簡單地使用<?php include 'file.php' ?>時,只是作爲一個圖像,即<img src="image.png" />

代碼我使用的.htaccess文件如下:

RewriteEngine on 
# The original URL is set as an environment variable SSO_REQUESTED rather than 
# a query parameter, so it's not vulnerable to hacking. 
# It shows up in PHP as $_SERVER['REWRITE_SSO_REQUESTED']. 
RewriteCond %{REQUEST_URI} !ssoclient 
RewriteRule (.+) /sso/ssoclientfilter.php [E=SSO_REQUESTED:$1,L] 

任何幫助在這裏將不勝感激。

回答

0

如果你的代碼的一點是要確保你的用戶登錄到中央的登錄系統不會PHP代碼:以前

<?php 

if (!isset ($_COOKIE[ini_get('session.name')])) { 
    session_start(); 
}else{ 
    print "<SCRIPT>window.location='/sso/ssoclientfilter.php';</SCRIPT>"; 
} 

在上面的代碼,未經會話開始被引導到你的ssoclientfilter.php,你的其他圖像和文件夾不會被觸及。這放在你的session_start()所在的位置應該覆蓋你的問題。

+1

最後,我發現的解決方案是在每個頁面的頂部簡單地包含登錄腳本,我想保護它。這意味着這些子文件夾中的任何其他文件都可以繼續訪問。 我無法將其作爲重定向,因爲腳本無法直接訪問。 – Ollie

0

使用include的相對路徑是非常不好的行爲。你真的應該在你的腳本中用文檔根路徑設置一些變量或常量。同樣的HTML:你應該在標題中包含BASE標記來爲你的圖像,樣式,腳本等的相對路徑設置基礎(根)。另外,在你的htaccess中設置RewriteBase也許很有用。

但是,奇怪的是,htaccess還影響php的include,它通常使用文件系統的路徑,而不是URI。