如何处理告诉朋友的数据?

时间:2010-12-14 06:45:05

标签: php javascript forms

我正在开发一个基本上具有告诉朋友功能的脚本,但我正在尝试找出捕获和处理数据的最佳方法。

例如:

  1. 我是否显示5对要求姓名和电子邮件的字段,每对是$ friend_name1 / $ friend_email1,$ friend_name2 / $ friend_email2等,这样您可以一次向5位朋友发送电子邮件?

  2. 我是否显示一对并使用JavaScript以允许用户使用变量命名约定添加更多朋友作为#1?

  3. 我是按照#1还是#2中的建议显示它们,但是然后提交数组,例如$ friend_email [] / $ friend_name []等

  4. 捕获数据的最佳方法是什么?

    那么处理数据的最佳方法是什么?

    如果你得到一个数组,比如在#3中,你是否循环遍历每个$ friend_name $ _POST?你把它存放在另一个阵列中吗?如果用户没有为第三位朋友添加“名称”,您如何确保正确的姓名/电子邮件组合保持在一起?

    大多数人如何做到这一点,以便他们在捕获过程中保持灵活性并在处理过程中保持精确?我在这里寻找逻辑,虽然示例代码非常受欢迎。

    我追踪的一件事是谁在指谁。例如,如果A指B和B买东西,A将受益。所以准确性和安全性对我来说非常重要。

    谢谢, 莱恩

2 个答案:

答案 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。