我如何在过期时间后将字符串设置为零


How can i set a string to zero after an expired time?

我正在创建一个登录/注册脚本,用户必须使用令牌激活他的帐户。现在我有一个函数,它调用一个随机字符串。

class.functions.php

public static function generateRandomString($length = 200) {
        $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $charactersLength = strlen($characters);
        $randomString = '';
        for ($i = 0; $i < $length; $i++) {
            $randomString .= $characters[rand(0, $charactersLength - 1)];
        }
        return $randomString;
    }

这将输出如下内容:jTq7tH4dKy66dmnhRev5EjbZDZygN1...

现在我的问题是,如何在24小时后将此字符串设置为空,以便用户必须再次激活他的帐户

我的想法是关于我的数据库中的update query,如下所示:

$statusN = "N" and $statusY = "Y"

数据库中的表字段:

`user_status` ENUM('Y','N') NOT NULL DEFAULT 'N',

sql语句:

$sql = "UPDATE formular SET user_status='" . $statusY . "' WHERE user_status='" . $statusN . "'";

但我不知道如何随时间推移

这是用户数据和activation_token 的插入

register.php

$activationToken = functions::generateRandomString();
    $stmt = $conn->prepare("INSERT INTO formular (firstname, second_firstname, lastname, zipcode, city, street, additionaladdress, country_id_from_apps_countries, username, email, hash, dday, dmonth, dyear, religion, housenumber, activation_token) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
    $stmt->bind_param("sssisssssssssssss", $firstname, $secondFirstname, $lastname, $zipcode, $city, $street, $additionaladdress, $country, $username, $email, $hash, $DOB, $MOB, $YOB, $religion, $houseNumber, $activationToken);
    $stmt->execute();
    if ($stmt->affected_rows) {
    }

检查时间戳和创建字符串是两回事。

一方面,您必须创建字符串并将其与实际的时间戳一起保存。

在第二步中,可能使用cronJob,您必须检查DB中的哪些令牌已过期(超过24小时(,并将其设置为null。

在两段不同的代码中有两个不同的操作。

要禁用所有过期的条目,只需从…执行SELECT*即可。。。。其中token>=XXX。Foreach结果,UPDATE表集标记=NULL,其中。。。。

等等。