我基本上尝试了我在标题中所说的内容,即:
我有一个php文件,你可以把你的电子邮件。之后,您会收到一封电子邮件,其中包含指向其他php文件的链接。第二个文件有一个表单,当您提交时,会创建一个包含该信息的.txt,我会收到一封包含该.txt的电子邮件。
我现在想要的是,只有点击我发送的链接的用户才能访问该表单。不只是通过写入导航http:myserverhost / mysite / myprivateform.php。
我在这里进行了一项研究,我想我必须使用会话,就像我习惯的那样,但现在我需要避免存储在服务器上的信息。
如何启动会话,用户可以在点击网址后访问表单1小时。
谢谢,
答案 0 :(得分: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
来确定用户是否应该访问某些内容。