我基本上在尝试我在标题中所说的,即:
我有一个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
来确定用户是否应有权访问某些内容。