我正在开发一个基本上具有告诉朋友功能的脚本,但我正在尝试找出捕获和处理数据的最佳方法。
例如:
我是否显示5对要求姓名和电子邮件的字段,每对是$ friend_name1 / $ friend_email1,$ friend_name2 / $ friend_email2等,这样您可以一次向5位朋友发送电子邮件?
我是否显示一对并使用JavaScript以允许用户使用变量命名约定添加更多朋友作为#1?
我是按照#1还是#2中的建议显示它们,但是然后提交数组,例如$ friend_email [] / $ friend_name []等
捕获数据的最佳方法是什么?
那么处理数据的最佳方法是什么?
如果你得到一个数组,比如在#3中,你是否循环遍历每个$ friend_name $ _POST?你把它存放在另一个阵列中吗?如果用户没有为第三位朋友添加“名称”,您如何确保正确的姓名/电子邮件组合保持在一起?
大多数人如何做到这一点,以便他们在捕获过程中保持灵活性并在处理过程中保持精确?我在这里寻找逻辑,虽然示例代码非常受欢迎。
我追踪的一件事是谁在指谁。例如,如果A指B和B买东西,A将受益。所以准确性和安全性对我来说非常重要。
谢谢, 莱恩
答案 0 :(得分:1)
这些是UI问题,答案是您认为最适合您网站的UI。您可能有一个设计,其中固定数量的字段更适合,或者您可能具有“添加另一个字段”按钮太混乱的人口统计。无论哪种方式,处理表单的代码都不必与您呈现UI的方式相关。
如果将字段命名为数组,确保字段保持关联,请自行指定索引而不是使用左括号,这样就不会出现问题。
<input type="text" name="name[0]" value="First Friend's Name" />
<input type="text" name="email[0]" value="First Friend's E-mail" />
<input type="text" name="name[1]" value="Second Friend's Name" />
<input type="text" name="email[1]" value="Second Friend's E-mail" />
然后在你的代码中,
foreach ($_POST['email'] as $index => $value) {
$name = $POST['name'][$index];
$email = $_POST['email'][$index];
}
在循环中,$name
和$email
将来自表单中的同一组字段,但它们仍然可以为空。
答案 1 :(得分:1)
我会推荐这个阵列。您可以使用javascript或其他方式,但请确保处理端可以查看有多少引用。要确保正确的电子邮件和名称保持在一起,请尝试类似
的内容<input type="text" name="friend_name[0]" />
<input type="text" name="friend_email[0]" />
<input type="text" name="friend_name[1]" />
<input type="text" name="friend_email[1]" />
等等。从那里,您的PHP脚本将简单地匹配$ _POST var中的数组索引。例如,如果这个表单(如上所述)提交了一些任意数据,它就会像这样格式化(这是print_r($ _ POST);数据)
Array
(
[friend_name] => Array
(
[0] => test_name
[1] => test_name2
)
[friend_email] => Array
(
[0] => email@something.com
[1] => email@two.com
)
)
关于循环这些的想法(如果你实现了具有“无限”引用次数的javascript)将使用count();功能。实现看起来像这样:
for($i=0;$i<count($_POST['friend_name']);++$i)
{
if($_POST['friend_email'][$i] == NULL) continue; // Ignore NULL e-mails
// Process data blah
}
或者,如果这些名称按顺序输入,PHP的foreach()功能非常好,可以完成同样的事情(对于这种类型的错误检查可能更有效)
foreach($_POST['friend_name'] as $key => $val)
{
if($_POST['friend_email'][$key] == NULL) continue; // Ignore NULL e-mails
// Process $val and $_POST['friend_email'][$key]
}
希望这有帮助!祝你好运!
Dennis M。