Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过PHP动态页面标题_Php - Fatal编程技术网

通过PHP动态页面标题

通过PHP动态页面标题,php,Php,我正在尝试通过PHP动态设置页面标题。我的页面标题位于head.php文件中,该文件包含在每个页面上,因此单独执行此操作不是一个选项 我编写了以下代码,我无法理解它为什么不起作用: <?php $currentUrl = $_SERVER['SERVER_NAME']; $currentpage = $_SERVER["SCRIPT_NAME"]; if("hoosiermommapcs.com"==$currentUrl) { $currentTitle = "Home"; } els

我正在尝试通过PHP动态设置页面标题。我的页面标题位于head.php文件中,该文件包含在每个页面上,因此单独执行此操作不是一个选项

我编写了以下代码,我无法理解它为什么不起作用:

<?php
$currentUrl = $_SERVER['SERVER_NAME'];
$currentpage = $_SERVER["SCRIPT_NAME"];
if("hoosiermommapcs.com"==$currentUrl) {
 $currentTitle = "Home";
}
else if("/index.php"==$currentpage) {
 $currentTitle = "Home";
}
else if("/dispatch.php"==$currentpage) {
 $currentTitle = "Request Pilot Cars";
}
else if("/invoice.php"==$currentpage) {
 $currentTitle = "Submit Invoice";
}
else if("/gallery.php"==$currentpage) {
 $currentTitle = "Image Gallery";
}
else if("/contact.php"==$currentpage) {
 $currentTitle = "Contact Us";
}
$siteTitle = "Hoosier Momma Pilot Car Services | ";
?>

我的页面标题代码为:

<title><?php echo($siteTitle . $currentTitle); ?></title>

该代码用于设置“Home”,但不适用于任何其他代码。如果我转到invoice.php,它仍然在标题中显示“Home”

非常感谢您的帮助。

有两个问题:

  • $currentUrl.$currentpage
    将包含完整的主机名和查询字符串,但您只能在if-else中对照查询字符串进行检查
  • 如果URL有参数,例如
    /index.php?rel=xxx
    ,您的解决方案可能无法工作。尝试使用
    $\u服务器[“脚本\u名称”]
    代替
    $\u服务器['REQUEST\u URI']

  • 要仅获取文件本身,可以使用:

    $_SERVER['ORIG_PATH_INFO'];
    
    这与URL参数无关。它还独立于include,并获取您在地址栏中看到的信息。以下是一些结果:

    URL                                     RESULT
    http://example.com/index.php            /index.php
    http://example.com/about.php?a=dsa      /about.php
    http://example.com/t/t.php?t=t          /t/t.php
    
    如您所见,这也与URL参数无关。从那里,您可以执行以下操作:

    switch( $_SERVER['ORIG_PATH_INFO'] )
    {
        default:
            $title = "";
            break;
        case "/index.php":
            $title = "Home";
            break;
        case "/about.php":
            $title = "About";
            break;
    }
    
    或者,如果开关/案例令人生畏,您也可以使用字典:

    $file = $_SERVER['ORIG_PATH_INFO'];
    $titleDict = [
        "/index.php" => "Home",
        "/about.php" => "About"
    ];
    
    if( array_key_exists($file,$titleDict) )
        $title = $titleDict[$file];
    else
        $title = "";
    

    我拆下一根线,让它工作起来。如果其他人遇到此问题,请发布作为答案:

    我删除了:

    if("hoosiermommapcs.com"==$currentUrl) {
     $currentTitle = "Home";
    }
    
    并制作了我的代码:

    <?php
    $currentpage = $_SERVER["SCRIPT_NAME"];
    if("/index.php"==$currentpage) {
     $currentTitle = "Home";
    }
    else if("/dispatch.php"==$currentpage) {
     $currentTitle = "Request Pilot Cars";
    }
    else if("/invoice.php"==$currentpage) {
     $currentTitle = "Submit Invoice";
    }
    else if("/gallery.php"==$currentpage) {
     $currentTitle = "Image Gallery";
    }
    else if("/contact.php"==$currentpage) {
     $currentTitle = "Contact Us";
    }
    $siteTitle = "Hoosier Momma Pilot Car Services | ";
    ?>
    
    
    
    标题:

    <title><?php echo($siteTitle . $currentTitle); ?></title>
    
    
    
    switch($\u SERVER[“SCRIPT\u NAME”]){}
    非常适合此功能。直到现在才想到使用switch case函数。你可以试试看。谢谢。我把它从标题上删除了。接受答案会自动将其标记为已解决。发布您自己的答案,接受给定的答案,或者(将其标记为)删除该问题。我使用此更新了我的代码,但它不起作用。我会用新的代码更新我的问题,这样你可以看看我做得对不对。使用
    var\u dump($currentpage)
    打印
    $currentpage
    var\u dump($currentpage)
    值,并告诉我你从
    invoice.php
    string(12)“/invoice.php”中得到了什么。在我看来他们是一样的。试试这个:
    var\u dump(“/invoice.php”=$currentpage)导致bool(true)尝试了它。已替换$_服务器[“脚本_名称”];拿着它,去掉了斜线,仍然没有改变。可能是其他原因吗?如果你所做的只是更换,你将看不到任何结果。查看“我的更新”中的开关/大小写或字典选项。完全重做实现。
    \uuuu FILE\uuuuu
    我相信在这种情况下会返回head.php而不是index.php或其他。你明白为什么会修复它吗?是和否。我假设我的原始代码严格匹配URL,因为每个页面上的URL都是相同的,变量也保持不变。您使用的是
    else if
    。因此,一旦URL匹配,就不会考虑任何其他条件,我假设URL会匹配任何页面。@Devon是正确的,$\u SERVER[“SERVER\u NAME”]将始终是您的主机名,“hoosiermommapcs.com”假设这是您的主机,而不是您访问的完整URL。所以不管你访问哪个页面,$currentUrl总是等于“hoosiermommapcs.com”。是的,这就是我搞砸的地方。