You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PHP实现用户向数组添加多个值且不覆盖原有数据

问题根源
  • 每次用户提交表单都是一次独立的HTTP请求,HTTP协议无状态的特性导致默认不会留存之前请求的数据
  • 你现有代码每次请求都会重新初始化空的$artist数组,仅存入当前提交的艺人值,之前存储的内容自然会被覆盖
修复方法

使用PHP Session跨请求持久化存储已提交的艺人数组,同时补充参数校验和输出转义避免报错和XSS安全问题,修复后的完整代码如下:

<?php
// 必须放在所有输出前开启Session,用于跨请求存储数据
session_start();
?>
<h1> My Favorite Artist </h1>
<form method='POST'>
    <h3>Please enter your favorite artist</h3>
    <input type="text" name="artist" required>
    <input type="submit" value="Submit Artist">
</form>
<ul>
<?php
// 先判断用户是否提交了非空的艺人名称
if (!empty($_POST['artist'])) {
    $art = trim($_POST['artist']);
    // 如果Session中不存在艺人数组就初始化
    if (!isset($_SESSION['artist'])) {
        $_SESSION['artist'] = array();
    }
    // 把新提交的艺人加入数组
    array_push($_SESSION['artist'], $art);
}

// 遍历输出所有已提交的艺人,用htmlspecialchars转义避免XSS漏洞
if (!empty($_SESSION['artist'])) {
    foreach ($_SESSION['artist'] as $a) {
        echo "<li>".htmlspecialchars($a)."</li>";
    }
}
?>
</ul>
补充说明
  • 若需要清空已存储的艺人列表,新增功能主动销毁Session里的artist字段即可
  • input标签新增的required属性为前端空提交拦截,后端也同步做了非空校验,避免无效数据存入

内容的提问来源于stack exchange,提问作者Kazumi411

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:45:02