0

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

我想在我的各个页面中“包含”一个特定的 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 = "../";

?>

我网站的文件夹结构是 -

主文件夹

- 社会的

- - 索引.php
--profile.php
--messages.php
- - 专辑.php
- - 更多文件...

- 包括

- - 登录状态.php
- - 更多文件...

在我的每个页面(index.php、profile.php 等)的顶部,我使用“包括”上述内容include('../include/loggedStatus.php');

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

其他一切似乎都很好。

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

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

4

1 回答 1

0

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

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

于 2013-07-25T18:19:49.820 回答