【发布时间】:2023-03-22 15:39:01
【问题描述】:
我正在创建一系列基于向导的表单来接受用户输入。该向导的要求之一是脚本(PHP)在用户单击“保存”按钮之前无法将输入保存到数据库(MySQL)中,因此我必须设计一种机制以将用户输入以一种形式传输到另一种形式当用户单击“上一个”或“下一个”按钮时。我研究了使用各种方法,包括 cookie、会话、临时文件等,但我决定将 base64_encoded 序列化数据嵌入到系列中所有表单中存在的隐藏字段中。此字段中的值将在表单提交时解码,并在插入当前表单中的其他值后重新编码以放入下一个表单。
以下是隐藏字段的外观示例:
<input type="hidden" name="wizard:presave" value="YTo2OntzOjU6InRpdGxlIjtzOjEwOiJRdWVzdGlvbiAyIjtzOjQ6InRleHQiO3M6MTk6IlllcyBpdCdzIGEgcXVlc3Rpb24iO3M6NDoidHlwZSI7czo2OiJjaG9pY2UiO3M6NzoiY2hvaWNlcyI7YTowOnt9czo1OiJwb2ludCI7aToxO3M6Mjoib3AiO3M6MTM6ImVkaXRfZXhlcmNpc2UiO30=" />
所以问题是:
这是一种好/坏的做法吗?
HTMLform中隐藏字段有长度限制吗?
可能存在哪些安全问题?
还有更好的选择吗? (有解释,最好不使用javascript)
提前致谢!
【问题讨论】:
标签: php webforms user-input base64 wizard