【问题标题】:Web Forms and PHP [duplicate]Web 表单和 PHP [重复]
【发布时间】:2019-03-14 16:15:04
【问题描述】:

我正在尝试使用 HTML 表单将新动物添加到数组中,然后在每次用户输入新动物时显示数组的内容。这是我到目前为止的代码。它有效,只是每次我点击提交按钮时都不会将新动物添加到列表中。它只是替换了最后一个输入。

<!DOCTYPE html>
<html lang="en">
<head>
<title></title>
</head>
<body>
<form action="" method="POST">
What is your favorite animal?<br>
<input type="text" name="text" /><br><br>
<input type="submit" value="Add Animal" />
</form>

<h2>Animal List</h2>

<?php
echo $_POST['text'];
?>
</body>

【问题讨论】:

  • 有很多方法可以解决这个问题,但是,由于您是学生,因此您只能使用教过的材料。您需要找到一种方法将输入的信息存储到网页中的 hidden 字段中,将其存储在某种 session 变量中,或将信息存储在磁盘上的文件中并且每次给出新信息时追加数据到文件中。
  • 你老师讲过SESSIONS了吗?
  • 危险:此代码是vulnerable to XSS 用户输入需要转义才能插入到 HTML 文档中!。
  • @Quentin 你说的很对,但是由于这个学生似乎只完成了课程的第一天,所以用这个小皱纹打击他们可能有点为时过早:) 也许等到tahy得到到第 5 天 :) :)
  • 更好的问题“标题”和初始搜索尝试应该是“php form submit add to list”或类似的。

标签: php arrays webforms


【解决方案1】:

$_POST 数组不保存值,每次提交表单时页面都会刷新,并且一组新值会传递给数组。您可以将值保存到$_SESSION by saying $_SESSION['animals'][]=$_POST['text'],然后每次循环遍历会话以打印出值。

我认为这并不是您在生产中真正会做的事情,因为我认为您通常会将数据保存到数据库中以做某事,但我当然不知道您的最终目标是什么: ) 但我猜你正在尝试学习一个想法/概念,所以有各种各样的解决方案。

你也可以添加一个隐藏的输入来构建它,我记不太清了,但是像这样:

<input type="text" name="text[]" />
foreach($_POST['text'] as $animal) {
echo '<input type="hidden" name="text[]" value="' . $animal . '"/>';

}

将使用当前值创建一堆隐藏输入,然后当您单击提交新值时,您将获得一个“文本”值数组 然后您可以循环播放以回显。

【讨论】:

  • Sessions 已被提及,但我们并未在此作业中涉及它。我们正在讨论数组。
猜你喜欢
  • 1970-01-01
  • 2013-10-27
  • 2013-01-26
  • 1970-01-01
  • 2012-10-08
  • 2018-08-12
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多