我刚遇到一个对我来说很不寻常的问题。
我想在各种页面中“包含”特定的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引擎中的错误?
答案 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
开头,而不是空格或制表符或任何其他形式的空白区域。
还可以使用浏览器中的“查看源”来尝试跟踪页面中空白区域的位置。