在webkit浏览器(Chrome,Safari,Opera)中使用PHP包含/ require的渲染问题

时间:2013-07-25 18:04:28

标签: php webkit

我刚遇到一个对我来说很不寻常的问题。

我想在各种页面中“包含”特定的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 个答案:

答案 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开头,而不是空格或制表符或任何其他形式的空白区域。

还可以使用浏览器中的“查看源”来尝试跟踪页面中空白区域的位置。