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

Php 如何处理告诉朋友的数据?,php,javascript,forms,Php,Javascript,Forms,我正在编写一个基本上具有告诉朋友功能的脚本,但我正在尝试找出捕获和处理数据的最佳方法 例如: 我是否显示5对字段,要求输入姓名和电子邮件,每对为$friend\u name1/$friend\u email1、$friend\u name2/$friend\u email2等,允许您一次向5位朋友发送电子邮件 我是否显示一对,并使用JavaScript允许用户使用变量命名约定(如#1)不断添加更多好友 我是否按照#1或#2中的建议显示它们,然后提交一个数组,例如$friend_email[]/$

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

例如:

  • 我是否显示5对字段,要求输入姓名和电子邮件,每对为$friend\u name1/$friend\u email1、$friend\u name2/$friend\u email2等,允许您一次向5位朋友发送电子邮件

  • 我是否显示一对,并使用JavaScript允许用户使用变量命名约定(如#1)不断添加更多好友

  • 我是否按照#1或#2中的建议显示它们,然后提交一个数组,例如$friend_email[]/$friend_name[]等

  • 捕获数据的最佳方式是什么

    那么,处理数据的最佳方式是什么

    如果你得到一个数组,比如在#3中,你会循环遍历每个$friend\u name$\u帖子吗?是否将其存储在其他阵列中?例如,如果用户没有为第三个朋友添加“姓名”,您如何确保正确的姓名/电子邮件组合保持在一起

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

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

    谢谢,
    Ryan

    这些是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" />
    

    在循环中,
    $name
    $email
    将来自表单中的同一组字段,尽管它们仍然可以为空。

    我建议使用数组。您可以使用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]" />
    
    循环遍历这些(如果您实现的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
    }
    
    希望这有帮助!祝你好运


    丹尼斯M.

    作为更新:最终我没有选择答案。它确实完美地解决了这个问题,但我也希望以后能够克隆姓名和电子邮件字段,以便用户可以选择通过单击链接添加更多朋友。通过使用我最初问题中的方法#3,这使得克隆非常容易。您可以在此处阅读以下内容:
    Array
    (
        [friend_name] => Array
            (
                [0] => test_name
                [1] => test_name2
            )
    
        [friend_email] => Array
            (
                [0] => email@something.com
                [1] => email@two.com
            )
    
    )
    
    for($i=0;$i<count($_POST['friend_name']);++$i)
    {
        if($_POST['friend_email'][$i] == NULL) continue; // Ignore NULL e-mails
        // Process data blah
    }
    
    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]
    }