如何在WordPress中以PHP文件形式提交表单?

时间:2020-01-04 作者:thirteen4054

我的WordPress中有一个简单的表单footer.php:

<form class="form-inline" role="form" method="post" name="contact" action="sub.php">
    <div class="form-group">
        <label class="sr-only" for="my-name">Your first name</label>
        <input name="my-name" type="text" class="form-control" id="my-name" placeholder="Your first name">
    </div>
    <div class="form-group">
        <label class="sr-only" for="my-email">and your email</label>
        <input name="my-email" type="text" class="form-control" id="my-email" placeholder="and your email">
    </div>
    <input  type="submit" class="btn btn-danger" value="Subscribe!">
</form>
我想把它提交到文件中sub.php(位于同一目录中),如action. 但即使尝试了太多的解决方案,我仍然无法完成任务。

请给我指出最简单的解决方案。谢谢

1 个回复
SO网友:Tom J Nowell

我想将其提交到sub.php文件(位于同一目录中)

不要这样做。你不应该有通过表单或AJAX等方式查询的独立PHP文件,WordPress会处理所有请求。通过拥有一个独立的文件,您可以打开一罐安全问题和其他问题的蠕虫(现在您必须在sub.php 要使用WP函数,如果一开始就做得正确,就不需要这样做)。

还请记住,您可以轻松地include( \'sub.php\' ) 在表单处理代码中,您不必完全重写整个内容,只需确保不可能直接调用它即可。

因此:

  • Use the REST API 如果您想使用javascript与您的站点进行对话register_endpoint 功能就是您所需要的Use the same page you\'re on, and an empty action 处理表单。此处理程序可以在任何输出发生之前位于同一模板中,它可以位于functions.php 或者一个插件,如果它正在重定向,例如,假设我在我的主题模板中有这个表单,如果我输入一个秘密单词,我会在这里得到一个惊喜,我可以输入一个单词:

    <form method="post" action="">
        What\'s the Secret Word? <input type="text" name="toms_secret_word" />
        <input type="submit" value="Submit"/>
    </form>
    
    我现在有一个提交到同一页面的表单,其中有一个值可以检查,例如:

    if ( isset( $_POST[\'toms_secret_word\'] ) ) {
        if ( $_POST[\'toms_secret_word\'] === \'open sesame\' ) {
            echo "Correct!";
        } else {
            echo "Incorrect! Try again"
            // display the form
        }
    } else {
        //... display the form
    }
    
    我建议你把表格归档get_template_part( \'secretwordform\' ); 还有一个secretwordform.php, 甚至是secretwordform-success.phpsecretwordform-incorrect.php.

    作为奖励,您可以使用隐藏输入和多页表单。这样,您就有了一个隐藏的输入,告诉您下一页是哪个页面,以及其他页面上项目的隐藏输入。

相关推荐

Dealing with html forms

I want to work with html form but i cant understand the Action method and when we need to use it.For example found this code on w3schools:<form action=\"action_page.php\"> First name:<br> <input type=\"text\" value=\"Mickey\">&#