php表单仅适用于邮寄的人

时间:2016-01-21 16:25:45

标签: php

我基本上尝试了我在标题中所说的内容,即:

我有一个php文件,你可以把你的电子邮件。之后,您会收到一封电子邮件,其中包含指向其他php文件的链接。第二个文件有一个表单,当您提交时,会创建一个包含该信息的.txt,我会收到一封包含该.txt的电子邮件。

我现在想要的是,只有点击我发送的链接的用户才能访问该表单。不只是通过写入导航http:myserverhost / mysite / myprivateform.php。

我在这里进行了一项研究,我想我必须使用会话,就像我习惯的那样,但现在我需要避免存储在服务器上的信息。

如何启动会话,用户可以在点击网址后访问表单1小时。

谢谢,

1 个答案:

答案 0 :(得分:1)

您可以使用$_SESSION变量执行此操作。有用的功能包括:session_startsession_destroy。如果我是你,我会创建一个这样的课程:

class SessionHandler {

    public static function start() {
        if (session_status() == PHP_SESSION_NONE) {
            session_start();
        }
        return true;
    }

    public static function destroy() {
        if (session_status() != PHP_SESSION_NONE) {
            session_destroy();
        }
    }

    public static function logIn($params) {
        start();
        $_SESSION["email"] = $params["email"];
        $_SESSION["token"] = $params["token"];
        $_SESSION["expiry"] = time() + 3600; //an hour later
    }

    public static function isValid() {
        return ((session_status() != PHP_SESSION_NONE) && 
                (intval($_SESSION["expiry"]) > time()));
    }

    public static function validate() {
        $valid = self::isValid();
        if (!$valid) {
            session_destroy();
        }
        return $valid;
    }

}

因此,您需要生成令牌并使用logIn将其链接到电子邮件地址。使用validate / isValid来确定用户是否应该访问某些内容。