使用PHP无法正常工作的CSS转换器

时间:2014-02-17 23:36:57

标签: php html css

哟。我是PHP的初学者,但我想为我的网站(tbex.info)制作一个CSS转换器。我在about.com上发现了一个漂亮的脚本,它基本上说我应该将它放在head标签中:

<link rel="stylesheet" type="text/css" href="<?php echo (!$style)?'main':$style ?>.css" />

然后页面上的表单如下所示:

<form action="changestyle.php" method="post">
<select name="choice">
<option value="main" selected>Classic View</option>
<option value="small">Smaller (for smaller resolutions)</option>
</select>
<input type="submit" value="Go">
</form>

然后表单加载此脚本:

<?php 
  $Year =31536000 + time();
  setcookie('style', $_GET['choice'], $year);
  header('Location: ' . $_SERVER['HTTP_REFERER']);
?>

我目前在Dreamweaver工作。当我输入所有这些时,Dreamweaver中的样式消失了(正如预期的那样,因为它是PHP)然后我将它上传到我的服务器进行beta测试。代码应该加载默认的CSS,然后当用户使用表单更改它时,PHP脚本应该写一个cookie然后重新加载页面。然后,head标签中的代码将读取cookie并相应地更改CSS。到目前为止,除了编写cookie之外,每个SEEMS都有效。我进入了我的浏览器设置(谷歌浏览器)并查看了我的所有cookie。没有来自我的网站。我检查了各种论坛,但没有找到任何真正的帮助。如果有人可以帮我解决这个问题,甚至可以帮我写一个CSS更改代码(我正在寻找类似于4Chan.org上的那些代码),我将非常感激。提前谢谢!

2 个答案:

答案 0 :(得分:0)

如果您不需要来使用Cookie,您可以通过几种不同的方式轻松完成此操作:

1。使用会话变量

让您的表单发布到包含以下代码的页面:

<?php

    session_start();
    $_SESSION["css"] = $_POST["choice"];

?>

然后在标题中检索它:

<link rel="stylesheet" type="text/css" href="<?php
    session_start();
    if(isset($_SESSION["css"]))
        $style = $_SESSION["css"];
    else
        $style = "main";
    echo $style; ?>.css" />

2。使用$ _GET变量

您的表单脚本:

<?php

    header("Location:".$_SERVER["HTTP_REFERER"]."?css=".$_POST["choice"]);

?>

然后访问它:

<link rel="stylesheet" type="text/css" href="<?php
    $style = $_GET["css"];
    echo (!$style)?'main':$style ?>.css" />

初学者理解的一些澄清:

选项#1将表单中选择的字符串存储在所谓的“会话”中。这是服务器在用户活动期间维护的短期变量。大多数服务器的会话设置为在不活动约20分钟后过期,但这可以更改为任何数字。

应该注意,会话是天生的cookie ,但PHP会为您管理,而您在会话中访问或更改变量所需要做的只是$_SESSION["var_name"]。关于会话的好处是它们被传播到您网站上实现session_start();的任何PHP页面。不太好(在您的情况下)方面是它们是临时的,并且在不活动期后不会保留在用户的设备上。


当使用$ _GET变量时,如选项#2所示,您将每个页面单独发送变量。这是您在获得这样的URL时看到的内容:

http://www.example.com/index.php?someVar=blah

这为您的页面index.php提供了名为“someVar”的$ _GET变量,其值为“blah”。要检索此内容,只需使用$_GET["someVar"]即可。关于这一点的好处是可以通过直接URL或AJAX调用以相对简单的方式发送和检索它,但不好的是它必须在每个URL上指定。 不会在所有PHP页面之间自动共享。在许多情况下,这是一件好事,例如,如果您想在每个页面上指定不同的CSS或特定于每个页面的ID号,但在您的情况下,这不是最容易实现的选项。


因此:

我会使用会话变量。它们易于在所有页面之间进行访问,修改和共享。

饼干是一种需要处理的动物。如果我是你,我会坚持这样简单的事情。如果您需要长期存储选择,例如在会话之间,我会使用SQL数据库来保存数据,而不是cookie。

答案 1 :(得分:0)

这可以是表单加载的脚本。

<?php 
session_start();
$_SESSION['choice'] = $_GET['choice'];
header('Location: ' . $_SERVER['HTTP_REFERER']);
?>

这可以是你的链接。

<?php session_start(); ?>
<link rel="stylesheet" type="text/css" href="<?php echo (!isset($_SESSION['choice']))?'main':$_SESSION['choice'] ?>.css" />

我也是一名php初学者,所以请告诉我,如果我在答案中犯了错误。