PHP 表单仅适用于邮寄的人


php form just for the one who is mailed

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

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

我现在想要的是,只有单击我发送的链接的用户才能访问该表单。不仅仅是在 http:myserverhost/mysite/myprivateform.php 上写字。

在这里做了一个研究,我想我必须像以前一样处理会话,但现在我需要避免存储在服务器上的信息。

我如何开始会话,例如,在单击URL后,用户可以访问表单1小时。

谢谢

您可以使用

$_SESSION变量执行此操作。有用的功能是:session_start和session_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 来确定用户是否应有权访问某些内容。