我一直在尝试用php编写一个代码,生成一个随机代码,存储在数据库中,并要求用户输入它。如果输入代码超过3次,则代码需要过期。这是我的密码:
<?php
include("ProcessCode.php");
$con = mysqli_connect("localhost","root","") ;
if(mysqli_select_db($con,"login"))
{
echo 'database selected' ;
}
$rand=rand();
echo $rand ;
$sql = "INSERT INTO random (number) VALUES ('$rand') " ;
if(mysqli_query($con,$sql))
{
echo 'inserted' ;
}
?>
$CodeCheck=$_POST['code'];
//Establishing Connection with server
$conn = mysqli_connect("localhost", "root", "");
//Selecting Database
$db = mysqli_select_db($conn, "login");
//sql query to fetch information of registerd user and finds user match.
$query = mysqli_query($conn, "select * from random WHERE number='$CodeCheck'");
$rows = mysqli_num_rows($query);
if (mysqli_num_rows($query) > 0)
{
echo " Code exists already.";
}
if($rows == 1)
{
header("Location: Success.php");
}
else
{
$error = " Code is Invalid";
echo $error;
}
你能解释一下如何执行到期部分吗?
2条答案
按热度按时间dffbzjpn1#
在您的表中可以有一个count字段。当使用登录和登录是错误的,增加+1到您的计数。当用户成功登录时,重置计数。如果计数满足+3,则重置代码。
5gfr0r5j2#
我从你的问题中了解到,你需要的逻辑如何使随机代码过期后,从你的网站上的交互用户插入3次,假设只要代码没有过期,他将能够做他的插入,你可以加载到你的网页。
我会通过数据库查询来实现。
请遵循下面列出的说明
说明:
当您的php页面生成随机代码时,您可以使用自动引用键将其存储在数据库表中,例如,假设您随机生成了如下代码:
“这里有些随机码”
上面的代码是由你的php页面生成的,已经从mysql表中加载了它,名为random\u generated\u code,我会去编辑这个表,在其中添加新的字段,并将其称为generated\u code\u reference\u key(可以是auto serial number),以避免任何重复,同时也会添加一个名为expire\u flag的字段,我们稍后会用到。
因此,一旦您的页面加载了上面的示例代码,您应该检索生成的\u代码\u引用\u键,并将其保存在页面上的隐藏变量中。它应该根据expire \u flag值加载到页面上作为条件从随机生成的\u代码中选择generated \u code where expire \u flag=“”
一旦用户尝试插入生成的代码,每次他插入它时,在数据库中定义另一个表,让我们调用它(由用户插入的代码),并在其中存储在您网站上执行此操作的用户的用户名,您还必须存储生成的代码引用键,我们将其存储在前面提到的隐藏变量中,以指示插入时使用的代码。
现在,在页面加载或任何您想要的事件期间,您可以通过make select语句从inserted\u codes\u by \u users表中查找过期的代码
选择count(generated \u code \u reference \u key)作为\u code \u used \u qty from inserted \u codes \u by \u users,其中username=该用户的username \u
所以你可以得到这个用户插入这个特定生成的随机代码的次数
在一个变量中检索查询结果,为了使其有意义,让我们将其称为\u code \u used \u qty,并在页面加载事件或任何您喜欢的事件上设置if条件
如果\u code \u used \u qty=3,则向加载该随机生成代码的第一个表激发update语句
并根据引用\密钥更新该代码(expired)的expire\标志字段
更新随机生成的\u代码集expire \u flag=“expired”其中生成的\u代码\u引用\u key=“生成的\u代码\u引用\u key”<<存储在隐藏变量end中的一个u如果
因此,现在我们将直接讨论为什么我们第一次加载随机生成的代码表,条件expire\u flag=“”因为它只检索未过期的代码。
希望这能帮助你实现你想要的。祝你好运,如果你需要任何帮助或在阅读我的答案时遇到任何困惑,请告诉我。
祝你好运。