通过PHP表单传递时间戳,并在第二页上格式化它

时间:2016-04-06 23:35:22

标签: php forms date time timestamp

这是我所在的PHP类的一个非常基本的项目 - 没有涉及数据库,所以除了下一页之外,数据不会去任何地方。

目前,我正在使用隐藏字段格式化页面上的日期,并在URL格式化后传递(所有空格都是标点符号)。这满足了作业的要求,但似乎不是最干净的方法。

表单是" Comp2.php"显示数据的页面是" Comp2b.php"

以下是有问题的代码段:
(当然还有其他领域,但我把它们排除在外,因为它们只是文本)

Comp2.php

<?php
    if (isset($_POST['submit'])) {
        $valid = true;
        $dateadded = $_POST['dateadded'];

        if ($valid) {
            header("Location: Comp2b.php?albumid=$albumid&album=$album&artist=$artist&dateadded=$dateadded");
            exit();
        }
    } else {
        $albumid="";
        $artist="";
        $album="";
        $price="";
        $type="";
        $playlists[0]="";
        $genre="";
        $tracks="";

    }
?>
    <form method="post" action="Comp2.php">

<?php $currentDate = date('l, F d, Y h:i:s a.') ?>

            <input type="hidden" name="dateadded" value="<?php echo $currentDate; ?>">

然后表格的其余部分继续......

这是 Comp2b.php:

<?php

    echo "Album ID: <strong>";
    echo $_GET['albumid']."</strong><p><strong>".$_GET['album']."</strong> by <strong>".$_GET['artist']."</strong> added on ".$_GET['dateadded'];

?>

如何通过表单传递date()time()之类的内容,并在第二页上执行格式化date('l, F d, Y h:i:s a.', $dateadded),而不是通过URL传递完整的字符串?< / p>

1 个答案:

答案 0 :(得分:1)

在第一页中,在隐藏字段中添加了一个简单的time()

<input type="hidden" name="dateadded" value="<?php echo time(); ?>">

然后在第二页输出中以任何你喜欢的方式格式化时间戳

<?php

    echo "Album ID: <strong>";
    echo $_POST['albumid'];
    echo '</strong><p><strong>'.$_POST['album'];
    echo '</strong> by <strong>' . $_POST['artist'];
    echo ' </strong> added on ' . date('l, F d, Y h:i:s a.', $_POST['dateadded']);

?>
  

原因:

     

time()生成一个简单的数字,如876243672834,它更容易传递,不太可能引起混淆。

     

'date()`可以有2个参数,第一个是格式,第二个是以unix格式表示日期和时间的时间戳。

     

另外,因为您的表单<form method="post"的方法为post,数据最终会出现在$_POST数组中而不是$_GET数组

     

当您执行$_GET或使用<a href="xxx.php?a=1&b=2">

等操作时,会填充<form method="GET"数组