哟。我是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上的那些代码),我将非常感激。提前谢谢!
答案 0 :(得分:0)
如果您不需要来使用Cookie,您可以通过几种不同的方式轻松完成此操作:
让您的表单发布到包含以下代码的页面:
<?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" />
您的表单脚本:
<?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初学者,所以请告诉我,如果我在答案中犯了错误。