使用 PHP Sessions/Cookies 保护下载路径?
Protect download path with PHP Sessions/Cookies?
我需要确保一个人在进入产品下载页面之前已经去过并填写了注册表。现在我通过 ajax 提交表单,如果返回 JSON = success 我相应地重定向到适当的下载页面。我想保护下载页面不被直接访问,以确保我们首先获得领先优势。我知道 PHP 会话和 cookie 可以被操纵,但它符合我们的需要,我知道后果等,只需要完成这项工作。
所以在“http://www.example/register.php”页面上,我想根据当前时间设置和散列一个 cookie:
<php
$time = ('Y-m-d H:i:s');
//set a new cookie with this value and hash it
?>
然后在 http://www.example.com/download.php 检查 cookie,如果已设置并在最后一个小时内设置显示下载内容,如果未设置或已过期,则重定向回注册页面
<php
if !$cookie or expred {
location('http://www.example.com/register.php');
die();
} else {
//download content
}
?>
我知道这个例子很粗鲁,但我需要一些帮助才能走上正确的道路。我很感激!
您需要在每个页面的顶部使用 session_start()
,否则您将无法读取或写入任何会话数据。
完成此操作后,您将更改 $_SESSION 全局中的会话变量。要设置时间,请尝试 $_SESSION['time'] = time()
。这将以秒为单位保存当前时间(Unix 时间戳)。要计算时间设置是否大于一个小时,请使用:
session_start();
// 60 seconds * 60 minutes = 3600, or 3600 = seconds in an hour
if(time() - $_SESSION['time'] > 3600) {
// Current time - survey_time is greater than one hour (expired)
header('Location: /survey/page/url/');
} else {
// Not expired - do stuff
}
如果您有任何问题,请告诉我!
我需要确保一个人在进入产品下载页面之前已经去过并填写了注册表。现在我通过 ajax 提交表单,如果返回 JSON = success 我相应地重定向到适当的下载页面。我想保护下载页面不被直接访问,以确保我们首先获得领先优势。我知道 PHP 会话和 cookie 可以被操纵,但它符合我们的需要,我知道后果等,只需要完成这项工作。
所以在“http://www.example/register.php”页面上,我想根据当前时间设置和散列一个 cookie:
<php
$time = ('Y-m-d H:i:s');
//set a new cookie with this value and hash it
?>
然后在 http://www.example.com/download.php 检查 cookie,如果已设置并在最后一个小时内设置显示下载内容,如果未设置或已过期,则重定向回注册页面
<php
if !$cookie or expred {
location('http://www.example.com/register.php');
die();
} else {
//download content
}
?>
我知道这个例子很粗鲁,但我需要一些帮助才能走上正确的道路。我很感激!
您需要在每个页面的顶部使用 session_start()
,否则您将无法读取或写入任何会话数据。
完成此操作后,您将更改 $_SESSION 全局中的会话变量。要设置时间,请尝试 $_SESSION['time'] = time()
。这将以秒为单位保存当前时间(Unix 时间戳)。要计算时间设置是否大于一个小时,请使用:
session_start();
// 60 seconds * 60 minutes = 3600, or 3600 = seconds in an hour
if(time() - $_SESSION['time'] > 3600) {
// Current time - survey_time is greater than one hour (expired)
header('Location: /survey/page/url/');
} else {
// Not expired - do stuff
}
如果您有任何问题,请告诉我!