【问题标题】:PHP - SQL - DateTime not prompted outPHP - SQL - DateTime 没有提示出来
【发布时间】: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;

说明

  1. 获取“token”后,使用SQL语句搜索任何包含$token变量的tokenDate。

  2. mysqli_fetch_assoc 将通过获取结果行并将其设置为变量 $tokenDate 来发挥作用。

  3. 到达那里后,DateTime() 函数会将其转换为 PHP DateTime 格式并将其设置为变量$starttime

  4. 之后,我将$starttime变量更改为我想要的格式('Y-m-d H:i:s')并将其设置为$expiryTokenDate,然后回显。

【问题讨论】:

  • 我很难理解这个问题。我唯一能摆脱的就是我问$_GET['token'] 应该是什么价值。 URL 还是实际的令牌?你知道那些是什么,对吧?
  • 您的代码没有达到您的预期。如果输入了无效的令牌,它将重定向用户。它根本找不到匹配项,但仍会回显“hello”。如果根本不存在令牌,您只会重定向用户。
  • 你甚至连接到你的数据库了吗?有太多事情开始不清楚了。
  • 看到你之前的一个问题,你也在用 JS 吗?好吧,如果你愿意,你可以@Niner 我,ciao!
  • 这并没有说明太多。请澄清您的问题并添加所有相关信息和代码。请记住,我们对您的应用程序/代码一无所知,也看不到您的屏幕。我们 100% 依赖您的解释。

标签: php mysql datetime


【解决方案1】:

尝试将分配$starttime 转换为PHP DateTime 格式。然后使用 $starttime 并将其转换为 ('Y-m-d H:i:s') 格式。

【讨论】:

  • 谢谢比尔,但我已经在我的问题中写了解决方案,但我仍然会接受你的回答。
猜你喜欢
  • 2013-03-18
  • 1970-01-01
  • 2016-03-28
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 2015-05-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多