7

我在 wordpress 模板页面上有以下表格。每次提交表单时都会收到 404 错误,但我没有使用表单中的任何保留的工作压参数名称。

<?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 ['form-submitted'])'中的逻辑没有被执行?

生成的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);
}
4

7 回答 7

28

问题是 WordPress 保留了一些单词,并且在提交表单时会抛出该错误:

我发现自己并在网上冲浪的一些词是:

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

因此,在创建自定义表单时要小心,并尝试使用一些前缀来命名您的输入。就我而言,我有一个名为“历史”的自定义帖子类型,并且我以相同的方式命名输入。

于 2013-05-19T15:02:02.937 回答
0

您是否尝试过重置您的永久链接?可能是某个地方的问题。看起来或看起来不是问题isset($_POST['form-submitted'])'

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

于 2013-03-28T15:07:58.257 回答
0

WordPressget_permalink()正在生成一个 URL,该 URL 将被注入到您的输出 HTML 的表单标签中。

如果您查看 HTML 源代码,它显示在您的浏览器中(例如右键单击、查看源代码或右键单击、检查元素),请找到以下内容:

<form action='some_url_here' ...>.

我希望这个 URL 可能与您当前正在浏览的 URL 相同……即它告诉浏览器将详细信息发送同一个 PHP 文件以处理其结果。

于 2013-03-28T15:08:07.260 回答
0

输入唯一的名称和 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> 
于 2015-03-20T03:47:35.877 回答
0

这是一个完整的列表:

  • 附件
  • 附件ID
  • 作者
  • 作者姓名
  • 日历
  • 类别
  • 类别__和
  • 类别__in
  • 类别__not_in
  • 分类名称
  • 每页评论数
  • 评论弹出窗口
  • 风俗
  • custom_messenger_channel
  • 定制
  • 页面
  • 调试
  • 嵌入
  • 错误
  • 精确的
  • 喂养
  • 小时
  • 链接类别
  • 分钟
  • 月数
  • 更多的
  • 姓名
  • 导航菜单
  • 随机数
  • 无分页
  • 抵消
  • 命令
  • 订购
  • p
  • page_id
  • 分页的
  • 页面名称
  • 烫发
  • 邮政
  • 发帖
  • post__not_in
  • post_format
  • post_mime_type
  • post_status
  • post_tag
  • post_type
  • 帖子
  • post_per_archive_page
  • post_per_page
  • 预览
  • 机器人
  • s
  • 搜索
  • 第二
  • 句子
  • 展示帖
  • 静止的
  • 子帖
  • subpost_id
  • 标签
  • 标记和
  • 标签__in
  • 标签__not_in
  • tag_id
  • tag_slug__and
  • tag_slug__in
  • 分类
  • 结核病
  • 学期
  • 条款
  • 主题
  • 标题
  • 类型
  • w
  • 带评论
  • 没有评论
于 2021-08-18T16:44:22.873 回答
-1

我遇到了同样的问题,但我发现当我提交空输入字段(输入字段中没有任何值)时工作正常,然后我留下几个输入字段保持为空并将值放在其他也工作正常的字段中。

这意味着问题是我的输入字段之一,不在 wordpress 或我的代码中。

于 2015-09-27T09:56:45.713 回答
-2

您不能在 POST FORM 中使用此变量

_ajax_nonce _page _per_page _signup_form _total _url _wp_http_referer _wp_original_http_referer _wp_unfiltered_html_comment _wpnonce _wpnonce-custom-header-upload

aa action action2 active_post_lock add_new add_new_users addmeta admin_bar_front admin_color admin_email admin_password admin_password2 ajax align allblogs allusers alt approve_parent 批准附件 attachment_id 附件 auth_cookie 作者 author_name autocomplete_type auto_draft 自动添加页面自动保存

背景附件背景颜色背景位置x背景重复禁止电子邮件域博客博客名称博客公共博客上传空间博客名称批量编辑

c 日历 cat category_base category_name 猫列表 changeit 更改字符集复选框已选中 clear-recent-list 已关闭评论 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 content context cpage create-new-attachment createuser customize_messenger_channel 自定义 customlink-tab

date date_format date_format_custom day default-header delete delete_all delete_all2 delete_comments delete_option delete_tags delete_widget deletebookmarks deletecomment deleted deletemeta deletepost description detached dismiss display_name do

编辑日期电子邮件错误确切摘录

特征 提要 获取 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 hidden_​​aa hidden_​​jj hidden_​​mm hidden_​​mn hidden_​​hh 历史主机名小时 html-upload

id ID ids id_base 非法名称 insert-gallery insertonlybutton interim-login item-object item-type

jj json json_data

钥匙

last_name limited_email_domains link_id link_image link_name link_rss link_url link_visible linkcheck locale locked log logged_in_cookie

m media media_type menu menu_items menu-item menu-item-attr-title menu-item-classes menu-item-db-id menu-item-description menu-item-object menu-item-object-id menu-item-parent- id menu-item-position menu-item-target menu-item-title menu-item-type menu-item-url menu-item-xfn menu-locations menu-name message metakeyinput metakeyselect metavalue minute mm mn mode monthnum more move multi_number

名称 nav-menu-locations 新 new_role new_slug new_title newcat newcomment_author newcomment_author_email newcomment_author_url newcontent newuser 昵称 no_placeholder noapi noconfirmation noredir number

偏移 oitar option option_page order orderby

p pb 页面 page_columns page_id page_options pagegen_timestamp pagename parent_id pass1 pass2 password permalink_structure photo_description photo_src phperror ping_status plugin plugin_status 指针位置 post post_category post_data post_format post_ID post_id post_mime_type post_password post_status post_title post_type post_view postid帖子预览primary_blog private_key ps public_key 发布pwd

询问

reassign_user reauth 重定向 redirect_to ref 引用 注册 注册通知 rememberme 删除背景 removeheader removewidget reset-background resetheader review rich_editing 机器人角色

s 相同 保存 savewidget savewidgets screen scrollto search 第二部分 selectall selection 发送 send_password 句子 short show_sticky sidebar sidebars signup_for signup_form_id site_id site_name sitename size 跳过裁剪垃圾邮件 src ss stage start 静态状态 sticky subdomain_install 提交 subpost_id super_admin

tab tag tag_ID tag-name tag_base tags_input tax tax_input tag-name target taxonomy tb term text-color the-widget-id 主题 theme_status thumb timezone_string time_format time_format_custom title thumbnail_id 垃圾 垃圾类型

undismiss unspam unspammed untrash untrashed url update_home_url updated upgrade upload_filetypes upload_space_check_disabled use_ssl user user_id user_login user_name username users

验证删除版本可见性可见

w weblog_titlewelcome_emailwelcome_user_email widget_id widget_number widget-id widget-recent-comments widget-rss width withcomments withoutcomments wp_customize wp_http_referer wp_screen_options wp-preview WPLANG

x1

y1 年

于 2015-04-26T16:52:25.877 回答