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

时间:2016-10-26 14:03:13

标签: php string random

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

  

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 statment:

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

但我不知道怎么用时间handel它

这是插入userdata和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) {

    }

1 个答案:

答案 0 :(得分:1)

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

一方面,您必须创建字符串并使用实际时间戳保存它。

第二步,可能使用cronJob,您必须检查数据库中的令牌已过期(超过24小时)并将它们设置为空。

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

要禁用所有过期的条目,只需从....执行SELECT *,其中token&gt; = XXX。 Foreach结果,UPDATE表设置标记= NULL其中....

等等。