0

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

我已经尝试了 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>

配置文件

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

Global.php(标题所在的位置)

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

提前致谢!

4

4 回答 4

0

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

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

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

于 2013-07-23T20:38:43.623 回答
0
<?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。您要做的是重新加载您的实际页面,然后让包含的脚本在设置标题标签之前执行它应该做的事情。

于 2013-07-23T20:32:13.210 回答
0

看起来你的变量错websitetitle$_REQUEST???因为我不“相信”你可以传递“提交”的价值。

<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>
于 2013-07-23T20:26:56.023 回答
0

您在任何代码中都没有保存要稍后重新迭代的值。每次您的浏览器加载新页面时,它都会忘记您没有明确告诉它保留的所有内容。

您可以将信息写入数据库、文件、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()也毫无意义。

在我的示例中,除非该人提交表单,否则我不会开始会话。您不需要为爬过您的页面的每个汤姆、迪克、哈利和机器人创建一个会话。您只需要那些单击“更新”的会话。

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

于 2013-07-23T21:50:14.433 回答