所以我正在尝试练习PHP而且我仍然坚持使用标头。我正在使用xampp这样做。我有一个简单的表单,其中用户现在登录“index.php”,当登录成功时,标题功能将启动并将页面重定向到“includes / profile.php”。现在这里是问题,在标题后我目前在“包含”文件夹中,所以当我使用其他.php或.css文件外包含文件夹时,我需要做“../example/example.php”。这会弄乱我的路径,因为我的CSS文件位于“css / example.css”中,所以我需要输入“../”。是否有任何方法总是使“指针”回到父目录,即使使用标题后,我不需要使用“../"?
index.php
<?php
session_start();
if(isset($_SESSION['username'])&& isset($_SESSION['password']))
{header("Location: includes/profile.php");exit;}
if (isset($_POST['submit'])) {
if($_POST['username']=="junji" && $_POST['password']=="secret"){
$_SESSION['username'] = $_POST['username'];
$_SESSION['password'] = $_POST['password'];
$_SESSION['expiry']=time();
$username = $_SESSION['username'];
$password = $_SESSION['password'];
header("Location:includes/profile.php");
exit;
}
else{
$username = "";
$password = "";
session_destroy();
}
}
?>
//end of index.php
现在位于profile.php
内 <?php
session_start();
if(isset($_SESSION['username'])&& isset($_SESSION['password']))
{if(time()-$_SESSION['expiry']<5){?>
<!DOCTYPE html>
<html lang="en">
<head>
<?php include_once('head.php');
?>
</head>
<body>
<div class="container">
<h1>Junji's Bio</h1>
<div class="row">
<div class="col-xs-8">
<h2>Content</h2>
<?php
include_once ('content.php');?>
</div>
<form method="POST">
<div class="col-xs-4 sidebar">
<div class="alert alert-success"> <?php print "You are currenly logged in as ";
print '<br><h3>';
print $_SESSION['username'];print "\t".'<input type="submit" class="btn btn-info" name="submit" value="Logout">'; ?></h3> </div>
</div></form>
</div>
</div>
</body>
</html>
<?php if(isset($_POST['submit'])){
session_destroy();
header("Location: ../index.php?msg=You have been successfully logged out!");
exit;
}
}else
{session_destroy();
header("Location:../index.php?msg2=Your session has expired! Please Log-in again.");
exit;
}
}
else
{session_destroy();
header("Location:../index.php");exit;
}
如您所见,直接调用包含,不需要“includes / example.php”。这意味着在我的“head.php”中,我需要制作两个
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="../css/bootstrap.min.css">
这样我就可以让css同时处理“index.php”和“includes / profile.php”
答案 0 :(得分:2)
如果您不介意使用绝对路径, 尝试使用“http://localhost/css/example.css”
答案 1 :(得分:1)
我处理这个的方法是在页面顶部设置一个级别变量:
QObject *obj = new QObject;
connect(obj,"2objectNameChanged(QString)",this,"1show()");//suppose this is a pointer to a QDialog subclass
obj->setObjectName("newNAme");
这将是顶级
$level = '';
这适用于顶级文件夹
$level = '../'
这将用于子目录中的文件......依此类推
然后您需要做的就是在路径中设置$level - '../../';
var:
$level
- 每次都有效
注意:如果您使用的是$level.'css/example.css
,则需要拨打.htaccess
和.css
文件的完整网址
答案 2 :(得分:1)
您可以定义一个包含绝对根的常量,并在每个路径中包含该常量。如果您将root保存在变量或常量中,而不是直接将其写入文件中,那么如果您的root将来发生更改,将会更容易。
define("ROOT", "http://localhost/");
include ROOT . 'example/example.php';
或者可以构建一个函数来调用?
function path($string, $echo = TRUE) {
$root = "http://localhost/";
if($echo === TRUE) {
echo $root . $string;
} else {
return $root . $string;
}
}
path('index.php');
header("Location: " . path('test.php', false));