WordPress的表单提交和404错误页面(wordpress form submission a

2019-08-18 03:02发布

我有一个WordPress的模板页面下面的表格。 每次我提交表单,我得到一个404错误,但我不使用任何形式保留workpress参数名称。

<?php
/**
 * Template Name: Registration Template
 */
if(isset($_POST['form-submitted'])) 
{
    if(trim($_POST['runner']) === '') {
        $runnerError = 'Please enter runner runner.';
        $hasError = true;
    } else {
        $runner = trim($_POST['runner']);
    }

    if(trim($_POST['racenumber']) === '')  {
        $numberError = 'Please enter a race number.';
        $hasError = true;
    } else {
        $racenumber = trim($_POST['racenumber']);
    }

    $race = trim($_POST['race']);
    error_log($race.' '.$runner.' '.$racenumber);
    $registrationSubmitted = true;
}
get_header();
echo "<pre>GET "; print_r($_GET); echo "</pre>";
echo "<pre>POST "; print_r($_POST); echo "</pre>";
?>

<div id="container">

    <?php 
    if(isset($registrationSubmitted) && $registrationSubmitted == true) 
    {
        echo '<div class="thanks"><p>The runner has been registered.</p></div>';
    }
    else
    {
        $races = // magic array
        $selectRaces = '<select name="race" id="race">';
        foreach($races as $racez)
        {
            $selectRaces .= sprintf('<option value=%d>%s</option>',$race->id,$race->name);
        }
        $selectRaces .= '</select>';

        echo apply_filters('the_content','
            <form action="'.get_permalink().'" id="form" method="POST">
                [one_half last="no"]
                <b>Race Details</b><br/>
                RaceNumber<input type="text" name="racenumber" id="racenumber"/><br/>
                Race'.$selectRaces.'<br/>
                [/one_half]
                [one_half last="yes"]
                <b>Runner Details</b><br/>
                ID<input type="text" name="runner" id="runner"/><br/>
                Firstname<input type="text" name="first" id="first"/><br/>
                Surname<input type="text" name="last" id="last"/><br/>
                Gender<input type="text" name="gender" id="gender"/><br/>
                DOB<input type="text" name="dob" id="dob"/><br/>
                Standard<input type="text" name="standard" id="standard"/><br/>
                Company<input type="text" name="company" id="company"/><br/>
                [/one_half]
                <input type="submit" value="Register Runner"/>
                <input type="hidden" name="form-submitted" id="bhaa-submitted" value="true" />
            </form>');
    }
    echo '</div>';
?>
<?php get_footer(); ?>

所以我敢肯定,被提交的参数值我已经定制了自己的404页转储$ _ POST值。

[racenumber] => 5
[race] => 2596
[runner] => 5
[first] => 
[last] => 
[gender] => 
[dob] => 
[standard] => 
[company] => 
[form-submitted] => true

任何人都可以解释我的我的逻辑“isset($ _ POST [”提交表单“])”不被行使?

生成的HTML

<form action="http://localhost/registration/" id="form" method="POST">
<div class="one_half">
                <b>Race Details</b><br><br>
                RaceNumber<input name="number" id="number" type="text"><br><br>
                Race<br>
<select name="race" id="race">
<option value="2596" id="2596">4-Mile-M</option>
<option value="2595" id="2595">2-Mile-W</option>
</select>

编辑

我已经改变了这里设置的下拉列表中选择的值用一个递增的int值,而不是使用sprintf的映射一个字符串值,为int值的代码。 当第一个元素被选中的表单提交,如果第二个选项是挑我得到一个404!

$races = // magic array
$selectRaces = '<select name="race" id="race">';
$i=0;
foreach($races as $racez)
{
    $selectRaces .= sprintf('<option value=%d>%s</option>',$i++,$race->name);
}

Answer 1:

问题是,WordPress的有些话保留和提交表单时,它会抛出这个错误:

一些我发现myseld和浏览网页的话是:

  • 自定义后类型名称
  • 分类名称
  • “名称”
  • “天”
  • “月”
  • “年”
  • “类别”
  • “标题”

创建AA自定义表单,并尝试命名一些前缀您输入时要小心。 在我来说,我有一个自定义后类型,称为“历史”,我被命名的输入方式相同。



Answer 2:

您是否尝试重置您的永久链接? 可能是什么地方的问题在那里。 这似乎还是看不象问题是isset($_POST['form-submitted'])'

这是可能的页面名称正在使用另一个插件。



Answer 3:

WordPress的的get_permalink()的生成被注入到你的输出HTML的表单标签的URL。

如果你看一下HTML源代码,因为它出现在你的浏览器(例如单击鼠标右键,查看源代码,或右键单击,检查元素),找到这个:

<form action='some_url_here' ...>

我希望这个网址也许应该是一样的,你目前正在浏览一个......也就是说,它告诉浏览器的详细信息发送相同的PHP文件来处理它的结果。



Answer 4:

键入唯一的名称和ID尝试这种形式

<form action="'.get_permalink().'" id="form" method="POST">
                [one_half last="no"]
                <b>Race Details</b><br/>
                RaceNumber<input type="text" name="racenumber" id="racenumber"/><br/>
                Race'.$selectRaces.'<br/>
                [/one_half]
                [one_half last="yes"]
                <b>Runner Details</b><br/>
                ID<input type="text" name="runner_id" id="runner_id"/><br/>
                Firstname<input type="text" name="runner_first" id="runner_first"/><br/>
                Surname<input type="text" name="runner_last" id="runner_last"/><br/>
                Gender<input type="text" name="runner_gender" id="runner_gender"/><br/>
                DOB<input type="text" name="runner_dob" id="runner_dob"/><br/>
                Standard<input type="text" name="runner_standard" id="runner_standard"/><br/>
                Company<input type="text" name="runner_company" id="runner_company"/><br/>
                [/one_half]
                <input type="submit" value="Register Runner"/>
                <input type="hidden" name="form-submitted" id="bhaa-submitted" value="true" />
            </form> 


Answer 5:

你不能利用后成为本变量

_ajax_nonce _page _per_page _signup_form _total _url _wp_http_referer _wp_original_http_referer _wp_unfiltered_html_comment _wpnonce _wpnonce定制头上传

AA动作1动作active_post_lock add_new add_new_users addmeta admin_bar_front admin_color ADMIN_EMAIL ADMIN_PASSWORD admin_password2 AJAX对齐allblogs ALLUSERS ALT approve_parent批准附件attachment_id附件auth_cookie作者AUTHOR_NAME autocomplete_type auto_draft自动加载页面自动保存

背景附件背景色背景位置-X背景重复banned_email_domains博客BLOG_NAME blog_public blog_upload_space BLOGNAME bulk_edit

ç日历猫category_base CATEGORY_NAME catslist的changeit改变字符集选中复选框明确近期列表关闭评论comment_approved COMMENT_AUTHOR comment_author_email comment_author_url COMMENT_CONTENT COMMENT_DATE COMMENT_ID comment_parent comment_post_ID comment_shortcuts comment_status comments_listing comments_popup confirmdelete CONNECTION_TYPE内容方面CPAGE创建全新的附着CREATEUSER customize_messenger_channel定制customlink标签

日期DATE_FORMAT date_format_custom天的预设头删除分离解散DISPLAY_NAME做DELETE_ALL delete_all2 delete_comments delete_option delete_tags delete_widget deletebookmarks deletecomment删除deletemeta deletepost描述

EDIT_DATE电子邮件错误确切摘录

功能饲料取fheight文件fileupload_maxk过滤find_detached first_comment first_comment_author first_comment_url FIRST_NAME first_page first_post found_post_id fwidth

global_terms_enabled GLOBALS gmt_offset GUID

高度HH隐藏hidden_​​aa hidden_​​jj hidden_​​mm hidden_​​mn hidden_​​hh历史主机小时的HTML上传

ID为ID的id id_base illegal_names嵌件廊insertonlybutton临时登录项对象项型

JJ JSON json_data

姓氏limited_email_domains link_id link_image LINK_NAME link_rss LINK_URL link_visible linkcheck区域锁定日志logged_in_cookie

米媒体媒体类型菜单menu_items菜单项的菜单项-ATTR标题菜单项目类菜单项-DB-ID菜单项目-描述菜单项对象菜单项对象-ID菜单项,父 - ID菜单项位置菜单项目标菜单项目标题菜单项型菜单项目的URL菜单项-XFN菜单位置菜单名消息元metakeyinput metakeyselect metavalue分钟毫米MN模式monthnum更多移动multi_number

命名导航菜单,地点新NEW_ROLE new_slug NEW_TITLE newcat newcomment_author newcomment_author_email newcomment_author_url newcontent NEWUSER昵称no_placeholder noapi noconfirmation noredir号

偏移oitar选项option_page顺序排序依据

p PB页面page_columns PAGE_ID page_options分页pagegen_timestamp页面名PARENT_ID PASS1 PASS2密码permalink_structure photo_description photo_src phperror ping_status插件plugin_status指针位置后post_category post_data post_format POST_ID POST_ID post_mime_type post_password post_status POST_TITLE post_type post_view帖子帖子ID预览primary_blog PRIVATE_KEY PS PUBLIC_KEY发布PWD

询问

reassign_user重新验证重定向redirect_to的裁判referredby登记注册通知了rememberMe去除背景RemoveHeader可以removewidget复位背景resetheader审查rich_editing机器人角色

小号同样保存savewidget savewidgets屏幕scrollto搜索第二部分全选选择发送send_password句子短show_sticky侧边栏工具条signup_for signup_form_id SITE_ID SITE_NAME站点名称尺寸略熟垃圾邮件的垃圾邮件SRC SS阶段开始静止状态粘subdomain_install提交subpost subpost_id超级管理员

选项卡标签TAG_ID标签名称tag_base tags_input税tax_input标签名称的目标分类TB项文本颜色的小部件-ID主题theme_status拇指TIMEZONE_STRING TIME_FORMAT time_format_custom标题thumbnail_id垃圾丢弃型

undismiss unspam unspammed取消删除untrashed网址update_home_url更新升级upload_filetypes upload_space_check_disabled USE_SSL用户user_ID的USER_LOGIN USER_NAME用户名用户

验证,删除版本的知名度可见

w ^ weblog_title welcome_email welcome_user_email WIDGET_ID widget_number部件-ID插件,最近,评论插件,RSS宽度withcomments withoutcomments wp_customize wp_http_referer wp_screen_options WP-预览WPLANG

X1

Y1年



Answer 6:

我有同样的问题,但我发现,当我提交了空输入字段(无需输入字段中的任何值)的正常工作,然后我离开几个输入字段保持为空,而在其他这也是工作的好地方值。

这意味着这个问题是我输入字段的一个不是在Wordpress或在我的代码。



文章来源: wordpress form submission and the 404 error page
标签: wordpress