2013-07-25 84 views
0

我剛剛遇到了一個問題,這對我來說似乎很不尋常。使用PHP在Webkit瀏覽器中包含/需要渲染問題(Chrome,Safari,Opera)

我想在我的各種頁面中包含一個特定的PHP腳本(loggedStatus.php)。

它的內容是 -

<?php 

@session_start(); 

//$username,$password,$databaseName declared 

if(isSet($_COOKIE['myCookie'])) 
{ 
    $dbConnection = mysql_connect("localhost",$username,$password); 
    mysql_select_db($databaseName); 
    $userLoggedIn = mysql_fetch_array(mysql_query("SELECT * FROM usersList WHERE sessionVal='".$_COOKIE['myCookie']."'")); 
    mysql_close($dbConnection); 
    if(!$userLoggedIn['userID']) { echo header("location:../"); exit(); } 
} 
else { header("location:../"); exit(); } 

$relLink = "../"; 

?> 

我的網站的文件夾結構 -

mainFolder 

- social 

- - index.php 
- - profile.php 
- - messages.php 
- - album.php 
- - more files... 

- include 

- - loggedStatus.php 
- - more files...

在我的每一個頁面的頂部(的index.php,profile.php,等等),我「包括「上述使用include('../include/loggedStatus.php');

但是,只要我這樣做,我會在我的菜單欄出現之前找到頂部的空間。 這隻發生在webkit瀏覽器(Chrome,Safari,Opera)中,而不是在Firefox中。

其他一切似乎都很好。

但是,當我用完整腳本替換include('../include/loggedStatus.php');時,空間消失!

我錯過了什麼,或者它是否是webkit引擎中的錯誤?

+1

**警告**您的代碼易受sql注入攻擊! –

+0

您是否指$ _COOKIE ['myCookie']變量的值? – gdebojyoti

+0

正確。反映用戶輸入。 –

回答

0

include語句相對於文件在服務器上的位置。我會避免使用include語句的相對路徑,因爲如果您的代碼結構發生改變,它將會中斷。設置一個與您工作目錄相關的定義字符串,並使用該字符串包含文件。如果您的代碼每改變一次,您都可以快速更改定義的路徑。

define("BASE_DIR", "/var/www/"); 
include BASE_DIR . "includes/loggedStatus.php"; 

或查看autoloader

對於header重定向,反之亦然,使這些絕對。

header("location: /"); //Redirect to root page 
header("location: /profile.php"); //Redirect to profile page 

至於在頁面檢查每個文件的開始的空間,並確保它與<?php,而不是一個空格或製表符或空格任何其他形式的開始。

另請在瀏覽器中使用「查看源代碼」來嘗試跟蹤頁面中的空白處。

+0

每個頁面都以<?php開頭 – gdebojyoti

相關問題