在没有注册的情况下填写多页表格-未填写的条目


Filling out multi-page forms without registration - Uncompleted Entries

这只是一个关于正确处理方法的简短问题。我允许表单帖子在没有用户注册的情况下进入数据库,在那里每个帖子都会被审查。但是,该页面将是一个包含文件上传的多页表单。

如果用户浏览了提交表单的前几页,包括上传文件,然后放弃了表单提交,我该怎么办。

如何清理不需要的数据和上传的文件,同时确保在发布过程中不会将其删除。

我也在处理类似的问题。我的情况有点不同。我需要为用户提供一个选项来发布广告,同时允许他上传图像。

我通过在表单中放置一个隐藏字段来处理这个问题,该字段保存上传的图像文件名。对于上传本身,我使用了现成的库dropzone.js,因为您已经遇到了放弃表单过程的问题,所以我只是决定将文件放在临时位置/temp然后如果表单真的完成了,那么基于隐藏字段中的值,我将这些图像从/temp移动到它们的永久位置。/temp文件夹中的剩余部分可以很容易地被一个预定的作业删除,该作业检查它们的创建时间,并删除一天前的那些。

希望这能给你一些想法。

制作一个巨大表单的另一个想法,但使用JavaScript将其拆分为几个步骤。只有最后选项卡中的按钮提交表单,而其他按钮只显示下一步。您可以在"下一步"操作后进行弱验证,在提交表单后在服务器上进行强验证。

http://jsfiddle.net/ht227xy3/1/

<script>
function switcher(activeBlock, passiveBlocks){
    document.getElementById(activeBlock).style.display='';
    for (i in passiveBlocks){ 
        if (document.getElementById(passiveBlocks[i]))
            document.getElementById(passiveBlocks[i]).style.display='none';
        }
    return false;
    }
</script>
<form onsubmit="alert('Now form submits!!!')" action="" method="post">
    <div id="first" class="tab">
        <h3>Step 1 of 4</h3>
        <b>Field 1:</b> <input type="text" name="field1" value="" /><br />
        <br />
        <button type="button" onclick="switcher('second', ['first','third','fourth']);">Next</button> 
    </div>
    <div style="display:none;" id="second" class="tab">
        <h3>Step 2 of 4</h3>
        <b>Alt 1:</b>   <input type="text" name="alt1" value="" /><br />
        <br />
        <button type="button" onclick="switcher('third', ['first','second','fourth']);">Next</button> 
    </div>
    <div style="display:none;" id="third" class="tab">
        <h3>Step 3 of 4</h3>
        <b>Extra 1:</b> <input type="text" name="extra1" value="" /><br />
        <br />
        <button type="button" onclick="switcher('fourth', ['first','second','third']);">Next</button> 
    </div>
    <div style="display:none;" id="fourth" class="tab">
        <h3>Step 4 of 4</h3>
        <b>File 1:</b>  <input type="file" name="file1" /><br />
        <br />
        <input type="submit" value="Submit" />
    </div>
</form>