使用PHP会话/ Cookies保护下载路径?

时间:2015-06-01 16:33:06

标签: php cookies session-cookies

我需要确保一个人在进入产品下载页面之前已经填写并填写了一份注册表。现在我通过ajax提交表单,如果返回的JSON =成功,我会相应地重定向到相应的下载页面。我想保护下载页面不被直接访问,以确保我们首先捕获潜在客户。我知道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
    }
?>

我知道这个例子非常粗鲁,但我可以帮助我走上正确的道路。我很感激!

1 个答案:

答案 0 :(得分:1)

您需要在每个页面的顶部使用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
}

如果您有任何疑问,请与我联系!