我正在尝试重定向用户,如果这是他们第一次访问那天。 我发现了这个:Show different page if first time visit
我试过了:
if (!isset($_COOKIE['visited'])) { // no cookie, so probably the first time here
setcookie ('visited', 'yes', time() + 3600); // set visited cookie
header("Location: http://example.com/index.php");
exit(); // always use exit after redirect to prevent further loading of the page
}
?>
我也尝试过:
session_start();
if (!isset($_SESSION['FirstVisit'])) {
//show site for the first time part
$_SESSION['FirstVisit] = 1;
header("Location: http://example.com/index.php");
// Don't forget to add http colon slash slash www dot before!
} else { Show normal site }
?>
这对我不起作用。我已将此代码粘贴到我的HTML网页中,并更新了链接以便为我的项目工作。该页面什么都不做,我想弄明白为什么。
目标是在我的网站上添加一个motd,每天一次将用户重定向到一个motd页面。在motd页面上会有一个历史记录后退按钮,让他们到达他们首先去的地方。我不做javascript或php,更不用说cookie,所以任何帮助都是值得赞赏的。
答案 0 :(得分:2)
所需结果的完整规格尚不清楚,但对于国际使用,我建议如下:
为了为每个页面加载此特定脚本,它可能会变得非常复杂,具体取决于服务器端处理的设置方式。
如果您只需要1个特定URL(页面),那么就像在该页面的HTML中添加此脚本一样简单。
我没有足够的信息来了解您的要求是什么 - 或者您的服务器设置如何运作,但这里是整个9码:
以下代码段假设如下:
.htaccess
个文件)mod_rewrite
docroot
如果您按照以下步骤操作,则可以让它完全按照您的预期运行;只需更改代码并将其放在需要的位置。无论用户访问的页面如何,这都将为您提供适用于每个请求的解决方案。
在您服务器的docroot
文件夹中,创建以下文件:
.htaccess
handler.php
cookie.js
<强>的.htaccess 强>
在您喜欢的文本编辑器中打开.htaccess
文件,输入以下内容,然后保存:
RewriteEngine On
RewriteCond %{REQUEST_URI} !handler.php$
RewriteRule (.*) handler.php
<强> handler.php 强>
在.handler.php
文件中键入以下内容,然后保存:
<?
$over = $_SERVER['SERVER_PROTOCOL'];
$path = explode('?',$_SERVER['REQUEST_URI']);
$path = (($path == '/') ? '/home.html');
$extn = array_shift((explode('.',$path)));
$list = # array
[
'html' => 'text/html',
'css' => 'text/css',
'png' => 'image/png',
'js' => 'application/javascript',
];
$type = (isset($mime[$extn]) ? $mime[$extn] : 'text/plain');
if (file_exists(".${path}"))
{
if (is_dir(".${path}") || ($path == '/.htaccess'))
{
header("${over} 403 Forbidden");
echo "path: `$path` is forbidden";
exit;
}
header("${over} 200 OK");
header("Content-Type: ${type}");
if (extn !== 'html')
{
header("Content-Length: ".filesize($path));
readfile($path);
exit;
}
$text = file_get_contents($path);
$text.= '<script>'.file_get_contents('./cookie.js').'</script>';
header("Content-Length: ".strlen($text));
echo $text;
exit;
}
header("${over} 404 Not Found");
echo "path: `$path` is undefined";
exit;
?>
<强> cookie.js 强>
在.cookie.js
文件中键入以下内容,然后保存:
function cookie(name,data,days)
{
if (data === undefined)
{
var prts;
data = "; " + document.cookie;
prts = data.split("; " + name + "=");
if (prts.length == 2)
{ return prts.pop().split(";").shift(); }
return null;
}
if (data)
{
var gone = "";
var date = new Date();
if (days)
{
date = (date.setTime(date.getTime()+(days*24*60*60*1000))).toGMTString();
gone = "; expires="+date.toGMTString();
}
document.cookie = name+"="+data+gone+"; path=/";
return true;
}
if (data === false)
{
cookie(name,'',-1);
}
}
.htaccess
文件将所有请求指向handler.php
文件
handler.php
文件根据请求的路径处理请求。
如果是HTML文档请求,它会提供请求的HTML文档以及可用于管理cookie的JavaScript
cookie
功能非常简单:
cookie('some_name','some_value');
cookie('some_name');
cookie('some_name',false);
通过使用上面的说明和代码示例,您可以获得足够的信息来构建您需要的内容 您需要一个简明的mime类型列表,并且比PHP代码建议的安全性更好,但您可以使用它来开始。
如果您对上述所有问题有任何疑问,请在下面发表评论。