PHP头函数更改目录

时间:2015-07-23 13:58:28

标签: php html css

所以我正在尝试练习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”

3 个答案:

答案 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));