【问题标题】:HTML forms and sessionsHTML 表单和会话
【发布时间】:2013-01-16 00:18:53
【问题描述】:

我想在没有 JavaScript、AJAX 或数据库的情况下执行以下操作。只有 HTML 和 PHP。

这是场景:

我在一个表单中有两个 HTML 输入。此表单通过 POST 方法发送两个值(姓名和年龄)。我从这些值创建一个用户对象,将这些值存储在 SESSION 中,然后在表单下方打印用户信息。我创建用户对象没有问题。

我怎样才能打印出所有用户的信息。例如第一个用户输入他的信息并点击提交,我们有:

 - John
 - 18 years

第二个用户输入他的信息并点击提交,我们有:

- John
- 18 years

- Kevin
- 20 years

第三个用户输入他的信息并点击提交,我们有:

- John
- 18 years

- Kevin
- 20 years

- Bryan
- 19 years

等等?

谢谢!

【问题讨论】:

  • 将它们保存在服务器本地磁盘文件系统上的 CSV、XML 或 JSON 文件中? (哦,好吧,你在这里重新发明了一个数据库......为什么不直接使用它呢?)请注意,HTTP 会话不会在用户之间共享(这将是一个巨大的安全漏洞)
  • @BalusC 是的,我了解安全原因,但这不是一个可供其他人使用的网站。我知道创建数据库会更好,但我的目标完全不同。我只是在练习,我想在一个 PHP 文件上执行此操作。
  • @BalusC +1 用于在用户之间共享会话时指出安全漏洞

标签: php html web


【解决方案1】:

您可以继续将这些内容存储在会话中,以供以后在同一会话中使用。 但另一种方法可能是将它们存储在 cookie 中,这两种方法都只有在您在一台计算机上输入所有信息时才有效。

如果您想让您的网站将其输出给所有其他用户,您需要一个数据库或其他类似的东西

【讨论】:

  • 是的,这就是我想要做的,但是在每次提交时将它们存储在会话中会覆盖会话的内容。我不想 - 不应该 - 使用 cookie。假设这是一项家庭作业,是的,我在一台计算机上输入了所有信息。
【解决方案2】:

说,你的代码是这样的

$name = $_Post['name'];
$age = $_Post['age'];

然后

$name$age 使用会话变量数组

另外,请参阅 Kaleb Brasee 的这个惊人的answer,在同一个链接上,Sarfraz 已经详细解释了它。对你有很大帮助

【讨论】:

  • 确实令人惊讶。非常感谢您的链接!
【解决方案3】:

您应该将数据存储在一个数组中,并在每次提交时附加到该数组。

<?php

    session_start();
    $data = array();
    if(isset($_SESSION['data'])) {
        $data = $_SESSION['data'];
    }
    if(isset($_POST['name']) && isset($_POST['age'])) {
        // -- append to the array
        $data[] = array('name'=>$_POST['name'],'age'=>$_POST['age'],);

        // -- update the session
        $_SESSION['data'] = $data;
    }
?>
<!DOCTYPE html>
<html>
 <head>
 </head>
 <body>
    <form action="" method="post">
      Name:<br />
      <input type="text" name="name" size="10" /><br />
      Age:<br />
      <input type="text" name="age" size="2" /><br />
      <br />
        <input type="submit" />
    </form>
    <?php foreach($data as $d) { ?>
        - <?php echo $d['name']; ?><br />
        - <?php echo $d['age']; ?><br /><br />
    <?php } ?>
 </body>
</html>

【讨论】:

  • 感谢您的插图 =)
猜你喜欢
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 2016-05-10
  • 1970-01-01
  • 1970-01-01
  • 2014-05-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多