在webkit浏览器(Chrome、Safari、Opera)中存在PHP渲染问题


Having rendering problems with PHP include/ require in webkit browsers (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-社会--index.php--profile.php--messages.php--白蛋白.php--更多文件。。。-包括--loggedStatus.php--更多文件

在我的每个页面(index.php、profile.php等)的顶部,我使用include('../include/loggedStatus.php'); "包含"了以上内容

但每当我这样做的时候,我都会在菜单栏出现之前在顶部找到一个空格。这种情况仅发生在webkit浏览器(Chrome、Safari、Opera)中,而不发生在Firefox中。

其他一切似乎都很好。

但是当我用完整的脚本替换include('../include/loggedStatus.php');时,空间就消失了!

我是遗漏了什么,还是webkit引擎中的错误?

include语句相对于文件在服务器上的位置。我会避免为include语句使用相对路径,因为如果您的代码结构发生更改,它就会中断。设置一个与您的工作目录相关的已定义字符串,并使用该字符串包含文件。如果您的代码每次都发生更改,您可以快速更改已定义的路径。

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

或者看看自动加载器。

header重定向的情况正好相反,请确保这些重定向是绝对的。

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

至于页面开头的空格,请检查每个文件,并确保它以<?php开头,而不是空格、选项卡或任何其他形式的空白。

还可以使用浏览器中的"查看源代码"来尝试跟踪页面中空白的位置。