使用带变量的表单作为函数的一部分

时间:2010-05-03 09:57:43

标签: php

下面的表单可以是函数的一部分吗?我想知道它是否可能无法成为函数的一部分,因为它有变量。

提前致谢,

约翰

echo '<form  action="http://www...com/sandbox/comments/comments2.php" method="post"> 
    <input type="hidden" value="'.$_SESSION['loginid'].'" name="uid">
    <input type="hidden" value="'.$submissionid.'" name="submissionid">  
    <input type="hidden" value="'.$submission.'" name="submission">
    <input type="hidden" value="'.$url.'" name="url">
    <input type="hidden" value="'.$submittor.'" name="submittor">
    <input type="hidden" value="'.$submissiondate.'" name="submissiondate">
    <input type="hidden" value="'.$countcomments.'" name="countcomments">
    <input type="hidden" value="'.$dispurl.'" name="dispurl">



    <label class="addacomment" for="title">Add a comment:</label>

    <textarea class="commentsubfield" name="comment" type="comment" id="comment" maxlength="1000"></textarea>  

    <div class="commentsubbutton"><input name="submit" type="submit" value="Submit"></div> 
</form>
'; 

2 个答案:

答案 0 :(得分:1)

您可以在以下功能中使用该代码:

  • 您将这些参数($ submissionid,$ submission等)传递给函数

  • 你让它们全球化(你没有强烈的理由不应该这样做

答案 1 :(得分:0)

将表单参数传递给函数有三种基本选择:

  1. 大量参数列表
  2. 将值填入数组并在
  3. 中传递
  4. 全局变量
  5. 通常情况下,只有#2会让你的头发不被你自己或其他人拉出来。基本设置将类似于:

    function show_form($args) {
        echo <<<EOL
    <form action="yada yada">
        <input type="..." name="field1" values="{$args['field1']}" />
        <input type="..." name="field2" values="{$args['field2']}" />
        etc...
    </form>
    EOL;
    }
    
    $form_args = array(
        'field1' => $field1,
        'field2' => $field2,
        etc...
    )
    
    show_form($form_args);
    

    请注意,我使用HEREDOC生成表单文本。处理比构建串联字符串要容易得多。它使您免于担心转义引号。

    如果此表单处理潜在的恶意用户,您需要事先通过htmlspecialchars()传递所有值,以防止某些HTML注入攻击。您可以在表单构建函数中或在构建参数数组时执行此操作。

    评论后续:

    在此示例中,您将构建名为“form_args”的数组来存储表单的所有字段数据。我只是称它们为“field1”,“field2”等...你将那些$ form_args数组作为参数传递给show_form()函数。在函数中,它通过自己的私有小“$ args”数组副本访问该数据。

    在表单中,符号{$args['field1']}仅表示“在$ args数组中查找其键为'field1'的条目,并将其匹配值插入到此处生成的HTML中。大括号({{在这种情况下,1}}}并不是绝对必要的,但无论如何都可以被认为是好的做法。在线在线手册的Arrays条目中有更多细节