PHP动态标题


PHP dynamic title

我希望用户能够动态更改网站的标题。

我已经在Stackoverflow上尝试了所有的动态网站标题问题,但没有一个能解决我的问题。

这是我的HTML

<fieldset>
    <legend style='width:500px;'><h3>Website Title</h3></legend>
    <label><h4> Change Website Title </h4></label>
    <form action='Config.php' method='POST'>
    <input type='text' name='websitetitle' placeholder='Website Title'/> <br />
    <input type='submit' value='Update' class='btn btn-small btn-primary' name='update'>
    </form>
  </fieldset>

Config.php

   <?php
if(isset($_REQUEST['update'])) {
$title=strip_tags(stripslashes($_REQUEST['websitetitle']));
}

Global.php(标题所在位置)

 <title><?php include 'Config.php'; echo $title; ?> </title>

提前感谢!

看起来$_REQUEST中的变量websitetitle有误???由于我不"相信"你可以传递"提交"的值。

<fieldset>
<legend style='width:500px;'><h3>Website Title</h3></legend>
<label><h4> Change Website Title </h4></label>
<form action='Config.php' method='POST'>
<input type='text' name='websitetitle' placeholder='Website Title'/> <br />
<input type='submit' value='Update' class='btn btn-small btn-primary' name='update'>
</form>
</fieldset>

然后

<?php
if(isset($_REQUEST['websitetitle'])) {
$title=strip_tags(stripslashes($_REQUEST['websitetitle']));
}

然后

<title><?php include 'Config.php'; echo $title; ?> </title>

上面的答案看起来不错,但我会使用php会话。你可以去掉global.php并将config.php改为

<?php 
    if (issest($_REQUEST['websitetitle'])) {
        $_SESSION['title'] = $_REQUEST['websitetitle'];
    }
?>

然后将$_SESSION['title']放置在需要动态标题的位置。此外,请确保在文档的顶部添加session_start();

<?php
    // config.php
    if(isset($_POST['update'])) {
        $title=strip_tags(stripslashes($_POST['websitetitle']));
    }
?>
 <title><?php require_once('Config.php'); echo $title; ?> </title>
<fieldset>
    <legend style='width:500px;'><h3>Website Title</h3></legend>
    <label><h4> Change Website Title </h4></label>
    <form method='POST'>
    <input type='text' name='websitetitle' placeholder='Website Title'/> <br />
    <input type='submit' value='Update' class='btn btn-small btn-primary' name='update'>
    </form>
  </fieldset>

您所做的是在提交表单后将用户重定向到config.php。您想要做的是重新加载实际页面,然后让包含的脚本在设置title标记之前执行它应该执行的操作。

没有在任何代码中保存值以供稍后重新迭代。每次你的浏览器加载一个新页面时,它都会忘记你没有特别告诉它要保留的一切。

您可以将信息写入数据库、文件、cookie或会话。

对于会话示例:

<?php
$title = ( isset($_SESSION) && isset($_SESSION['title']) ) ? $_SESSION['title'] : 'Original, unaltered page title here';
?>
<!DOCTYPE html>
<html>
  <head>
    <title><?php echo $title; ?></title>
  </head>

接收表单的页面:

<?php
if ( isset($_REQUEST['websitetitle']) && !empty($_REQUEST['websitetitle']) )
{
  if ( !isset($_SESSION) ) session_start();
  $_SESSION['title'] = $_REQUEST['websitetitle'];
}

!isset($_SESSION)条件为session_start();的原因是,如果在已经存在活动会话的情况下调用session_start(),它会引发错误。如果您所在的生产系统配置正确,则此错误将隐藏在站点外的日志文件中,但它仍然会在日志文件中充满毫无意义的警告。可以将PHP配置为自动生成会话,这使得我们调用session_start()也变得毫无意义。

在我的例子中,除非对方提交表格,否则我不会启动会话。你不需要为每个在你的页面上爬行的tom、dick、harry和bot都启动会话。您只需要单击"更新"的会话。

请记住,如果您希望网站标题永久更改和/或对所有用户更改,会话不是正确的答案。会话是服务器和客户端之间信息的独占存储。如果我将网站标题更改为"Hello World!",那么在我的会话期间我会看到"Hello世界!",但你不会。