【发布时间】:2018-01-04 01:32:27
【问题描述】:
瞄准
根据输入的令牌从数据库内的列中回显日期时间。
数据库
代码
<?php
include("config_new.php");
include("dbconnection.php");
$homepage = "index.php";
if(isset($_GET["token"])){
$token=mysqli_real_escape_string($conn,$_GET['token']);
$expiryDate ="SELECT * from dateData WHERE token='$token'";
$exDate=mysqli_query($conn,$expiryDate);
if(mysqli_num_rows($exDate)>0){
$tkDate=mysqli_fetch_assoc($exDate);
$tokenDate=$tkDate['tokenDate'];
//$expiryTokenDate=date("Y-m-d", strtotime(date("Y-m-d',strtotime($tokenDate). "+1 hour));
echo $tokenDate;
echo 'Hello';
}
}else{
header("location:index.php");
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>FYP - Password Reset</title>
<link href="res/css/stylish-portfolio.css" rel="stylesheet">
<link href="res/css/style.css" rel="stylesheet">
</head>
</html>
输出
我试图回显$tokenDate,但是当什么都没有出现时,我认为这是因为没有任何东西通过。所以我添加了echo 'Hello';,并且在网页顶部提示了“Hello”,这意味着它确实通过了代码。
我尝试将$tokenDate=$tkDate['tokenDate'] 更改为$tokenDate=$tkDate["tokenDate"],但仍然没有出现。如果输入了错误的令牌,用户将被重定向到索引页面。这表明 if else 语句正在工作。
期望的输出
2018-01-04 09:16:19
你好
我希望根据输入的令牌提示 tokenDate 中的日期。
错误
开发者工具里面什么都没有出现,也没有错误提示。唯一提示的是“你好”这个词。
工作流程
index.php -> forgotPassword.php(Generates Token) --Existing Token--> resetPassword.php
说明
只能通过让用户输入现有 URL(令牌)来访问 resetPassword.php。在那里,resetPassword.php 将GET 令牌和 if else 语句将检查
问题
如何根据令牌回显/提示令牌日期内的数据?
解决方案
我可以使用下面的代码根据输入的token回显特定的日期时间。
if(isset($_GET["token"])){
$token=mysqli_real_escape_string($conn,$_GET['token']);
$sql=("SELECT tokenDate from pha_user WHERE token like '%$token%'");
$sqltran=mysqli_query($conn,$sql) or die(mysqli_error($conn));
$tokenDate= mysqli_fetch_assoc($sqltran);
$starttime = new DateTime($tokenDate["tokenDate"]);
$expiryTokenDate=$starttime->format('Y-m-d H:i:s');
echo $expiryTokenDate;
说明
获取“token”后,使用SQL语句搜索任何包含
$token变量的tokenDate。mysqli_fetch_assoc将通过获取结果行并将其设置为变量$tokenDate来发挥作用。到达那里后,DateTime() 函数会将其转换为 PHP DateTime 格式并将其设置为变量
$starttime。之后,我将
$starttime变量更改为我想要的格式('Y-m-d H:i:s')并将其设置为$expiryTokenDate,然后回显。
【问题讨论】:
-
我很难理解这个问题。我唯一能摆脱的就是我问
$_GET['token']应该是什么价值。 URL 还是实际的令牌?你知道那些是什么,对吧? -
您的代码没有达到您的预期。如果输入了无效的令牌,它将不重定向用户。它根本找不到匹配项,但仍会回显“hello”。如果根本不存在令牌,您只会重定向用户。
-
你甚至连接到你的数据库了吗?有太多事情开始不清楚了。
-
看到你之前的一个问题,你也在用 JS 吗?好吧,如果你愿意,你可以@Niner 我,ciao!
-
这并没有说明太多。请澄清您的问题并添加所有相关信息和代码。请记住,我们对您的应用程序/代码一无所知,也看不到您的屏幕。我们 100% 依赖您的解释。