【问题标题】:Re-get icon for website重新获取网站图标
【发布时间】:2016-04-15 00:12:56
【问题描述】:

我正在使用 PHP 来设置我的网站图标

<link rel="shortcut icon" href="<?php echo "/SysFiles/img/ico/". $favicon; ?>">

这将在 Firefox 上正常工作,但在 Chrome 上不能正常工作。更改图标时如何让 Chrome 重新获取图标?

编辑:这个文件位于 /SysFiles/navbar.php,它是 PHP 包含在服务器上的每个页面上,包括我正在测试的页面

编辑: 导航栏.php

    <?php
        session_start();
        if ($_COOKIE['darktheme'] == "1") {
          $_SESSION['darktheme'] = true;
          $_SESSION['SETHEME'] = 1;
        } else {
          $_SESSION['darktheme'] = false;
          $_SESSION['SETHEME'] = 1;
        }
    $addr = "http://" . $_SERVER['SERVER_ADDR'];
    $myfile = fopen("$addr/Data/Points/makarios", 'r');
    $makarios = fgets($myfile);
    fclose($myfile);

    $myfile = fopen("$addr/Data/Points/sozo", 'r');
    $sozo = fgets($myfile);
    fclose($myfile);

    $myfile = fopen("$addr/Data/Points/kaleo", 'r');
    $kaleo = fgets($myfile);
    fclose($myfile);

    $myfile = fopen("$addr/Data/Points/katharos", 'r');
    $katharos = fgets($myfile);
    fclose($myfile);

    $myfile = fopen("$addr/Data/Points/charis", 'r');
    $charis = fgets($myfile);
    fclose($myfile);

    $myfile = fopen("$addr/Data/Points/agape", 'r');
    $agape = fgets($myfile);
    fclose($myfile);

    $cookie_name = "REENT";
    $cookie_value = $makarios + $sozo + $kaleo + $katharos + $charis;
    if ($cookie_value != $_COOKIE["REENT"]) {
    $newcooksit = true;
    }
    setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
    if ($newcooksit == true) {
      echo '<br><br><br><div class="alert alert-info"><strong>Look!</strong> Points have changed since your last visit! Check the new values <a href="results.php">here!</a> </div>';
    } else {
      echo '<br><br><br>';
    }
    ?>


<?php
$sid = $_SERVER['SERVER_ADDR'];
$items = ["/SysFiles/img/ico/makarios.ico", "/SysFiles/img/ico/agape.ico", "/SysFiles/img/ico/kaleo.ico", "/SysFiles/img/ico/charis.ico", "/SysFiles/img/ico/sozo.ico", "/SysFiles/img/ico/katharos.ico"];
//echo $items[array_rand($items)];
$ico = $items[array_rand($items)];
 ?>
<head>
  <meta charset="utf-8">
  <?php $favicon = $_COOKIE['houseicn']; ?>
<link rel="icon" href="<?php echo "/SysFiles/img/ico/". $favicon; ?>">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
  <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
  <?php
  if ($_SESSION['darktheme'] == true) {
  ?>
  <link rel="stylesheet" type="text/css" href="SysFiles/sys/darktheme.css">
  <?php
}
?>
</style>
</head>
<?php
if ($_SESSION['darktheme'] == true) {
?>
<font color='white'>
  <?php
}
if ($_SERVER['SETHEME'] == 1) {
  if ($_SERVER['SETHEMED'] !== 1) {
  header("Refresh:0");
}
  $_SERVER['SETHEMED'] == 1;
}
 ?>



<?php
if ($_SESSION['ACCESS'] > 0) {
 ?>
 <nav class="navbar navbar-inverse navbar-fixed-top">
   <div class="container-fluid">
     <div class="navbar-header">
       <a class="navbar-brand" href="index.php">House Points</a>
     </div>
     <ul class="nav navbar-nav">
       <li><a href="http://<?php echo $_SERVER['SERVER_ADDR']; ?>/index.php">Home</a></li>
       <li><a href="http://<?php echo $_SERVER['SERVER_ADDR']; ?>/results.php">Current Results</a></li>
       <li><a href="http://<?php echo $_SERVER['SERVER_ADDR']; ?>/archive.php">Old Results</a></li>
       <li><a href="http://<?php echo $_SERVER['SERVER_ADDR']; ?>/submit.php">Teacher Submission</a></li>
       </ul>
     <ul class="nav navbar-nav navbar-right">
       <li><a href="http://<?php echo $_SERVER['SERVER_ADDR']; ?>/logout.php"><span class="glyphicon glyphicon-log-out" aria-hidden="true"></span> Logout</a></li>
       <li class="dropdown">
   <a class="dropdown-toggle" data-toggle="dropdown" href="#">About
   <span class="caret"></span></a>
   <ul class="dropdown-menu">
 <?php include "sysinfo"; ?>
   </ul>
 </li>
 </ul>
   </div>
 </nav>
 <?php } else { ?>
<nav class="navbar navbar-inverse navbar-fixed-top">
  <div class="container-fluid">
    <div class="navbar-header">
      <a class="navbar-brand" href="index.php">House Points</a>
    </div>
    <ul class="nav navbar-nav">
      <li><a href="http://<?php echo $_SERVER['SERVER_ADDR']; ?>/index.php">Home</a></li>
      <li><a href="http://<?php echo $_SERVER['SERVER_ADDR']; ?>/results.php">Current Results</a></li>
      <li><a href="http://<?php echo $_SERVER['SERVER_ADDR']; ?>/archive.php">Old Results</a></li>
      <li><a href="http://<?php echo $_SERVER['SERVER_ADDR']; ?>/submit.php">Teacher Submission</a></li>
    </ul>
    <ul class="nav navbar-nav navbar-right">
      <li class="dropdown">
  <a class="dropdown-toggle" data-toggle="dropdown" href="#">About
  <span class="caret"></span></a>
  <ul class="dropdown-menu">
<?php include "sysinfo"; ?>
  </ul>
</li>
</ul>
  </div>
</nav>
<?php }  ?>

【问题讨论】:

  • 您可能只需要在链接元素中设置type="image/ico"
  • 很遗憾,这没有用。
  • @JamesPaterson - 取决于正在使用的文件类型(扩展名)。 OP,$favicon的扩展名(文件类型)是什么?
  • 它等于 hiddeniconname.ico
  • @Marcus 我猜是 .ico 因为文件路径。根据bugs.chromium.org/p/chromium/issues/detail?id=51270 的说法,有一个错误阻止 chrome 不通过 web 路径获取 favicon。尝试完全限定 URL,例如“somewebsite.com/SysFiles/img/ico”。 $favicon;

标签: php html google-chrome favicon


【解决方案1】:

根据bugs.chromium.org/p/chromium/issues/detail?id=51270 的说法,有一个错误阻止 Chrome 不通过网络路径获取网站图标。

尝试完全限定 URL,例如:

<link rel="shortcut icon" href="<?php echo "http://example.com/SysFiles/img/ico/". $favicon; ?>">

【讨论】:

  • 尝试使用 &lt;link rel="shortcut icon" href="&lt;?php echo "127.0.0.1/SysFiles/img/ico/". $favicon; ?&gt;"&gt; 并保留相同的旧图标
【解决方案2】:

就我个人而言,只要我记得,我就没有使用过rel="shortcut icon"。简单地使用:

<link rel="icon" href="<?php echo "/SysFiles/img/ico/". $favicon; ?>">

应该做的伎俩。刚刚在 Chrome 和 Firefox 中测试并工作(对我来说一直如此)。相对路径也是。不是绝对的。

破坏缓存的方法,如果需要的话:

  • 更改文件名,例如。 /favicon.icofavicon2.ico
  • 在浏览器中输入.ico的直接路径,多次刷新页面,即。打开 Chrome/Firefox/whatever 并在地址栏中输入http://example.com/path/to/favicon.ico。点击输入。然后多次按 Ctrl+Shift+R 直到它改变。
  • 将查询字符串附加到&lt;link&gt; 中的.ico 路径,例如。 &lt;link rel="icon" href="http://example.com/path/to/favicon.ico?foo=bar"&gt;

参考:https://en.wikipedia.org/wiki/Favicon

【讨论】:

  • &lt;link rel="icon" type="image/x-icon" href="&lt;?php echo "/SysFiles/img/ico/". $favicon; ?&gt;"&gt; 没有更改图标。我确保 /favicon.ico 中没有任何内容
  • 好的,尝试通过附加查询字符串来强制刷新:&lt;link rel="icon" type="image/x-icon" href="&lt;?php echo "/SysFiles/img/ico/". $favicon; ?&gt;?foo=bar"&gt;
  • 你为什么不尝试完全更改文件名然后为新图标,即。 favicon.icomyNewFavIcon.ico。您确定根据您指向的文件夹,用服务器上的新版本覆盖正确的旧文件吗?
  • 我只是试图删除链接图标的行,尽管根目录中没有 favicon.ico,但由于某种原因,Firefox 会返回到第一个图标。所有 .icos 都在同一个文件中。
  • 那我不知道,伙计。此时,您所能做的就是确保没有错误的 .ico 浮动,并且您正在使用新版本正确覆盖任何现有的 favicon.ico 文件,并且您通过&lt;link&gt; 正确指向它。除此之外,如果我没有进入你的系统并环顾四周,我无能为力,因为我认为你忽略了一些非常微不足道的事情。
猜你喜欢
  • 2015-07-08
  • 1970-01-01
  • 1970-01-01
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
  • 2021-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多