【问题标题】:How can i set a string to zero after an expired time?如何在过期时间后将字符串设置为零?
【发布时间】:2016-10-26 14:03:12
【问题描述】:

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

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

注册.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) {

    }

【问题讨论】:

  • 也插入一个时间戳,并将其包含在您的查询中。
  • 添加activate_by 列。那么如果在那之前没有激活,就不允许从激活脚本激活
  • 好的,谢谢你的提示,我会试试的

标签: php string random


【解决方案1】:

检查时间戳和创建字符串是两件不同的事情。

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

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

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

要禁用所有过期条目,只需执行 SELECT * from .... where token >= XXX。 foreach结果,UPDATE表设置token = NULL where ....

等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多