这是我所在的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>
答案 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"
数组