wordpress表单提交和404错误页面

wordpress表单提交和404错误页面,wordpress,Wordpress,我在wordpress模板页面上有以下表单。每次提交表单时都会出现404错误,但我没有在表单中使用任何保留的workpress参数名称 <?php /** * Template Name: Registration Template */ if(isset($_POST['form-submitted'])) { if(trim($_POST['runner']) === '') { $runnerError = 'Please enter runner ru

我在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(); ?>
谁能解释一下我的“isset($_POST['form-submitted'])”中的逻辑没有被执行

生成的html

<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> 

比赛详情

车号

种族
4英里米 西2英里
编辑

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

$races=//魔法数组
$selectRaces='';
$i=0;
foreach($racez)
{
$selectRaces.=sprintf('%s',$i++,$race->name);
}

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


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

WordPress的
get\u permalink()
正在生成一个URL,该URL将被注入到输出HTML的表单标记中

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


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

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

我在网上发现的一些词是:

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

因此,在创建自定义表单时要小心,并尝试使用前缀命名输入。在我的例子中,我有一个名为“history”的自定义帖子类型,我用相同的方式命名输入。

键入唯一的名称,然后我尝试使用此表单


[one_half last=“no”]
比赛详情
消旋号码
比赛“$selectRaces”。
[一半] [one_half last=“yes”] 跑步者详细信息
ID
名字
姓氏
性别
DOB
标准
公司
[一半]
您不能在POST表单中使用此变量

_现在 _页面 _每页 _注册表格 _总数 _网址 _wp_http_referer _wp_原始_http_参考 _wp_未过滤_html_注释 _WPONCE _WPONCE自定义头上载

aa 行动 行动2 主动后锁 新增 添加新用户 阿德梅塔 管理酒吧前 行政色彩 管理员电子邮件 管理员密码 管理员密码2 AJAX 排列 所有博客 诱惑者 中高音 批准你的父母 经核准的 附件 附件(i) 附件 auth_cookie 作者 作者姓名 自动完成类型 自动拔模 自动添加页面 自动保存

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

c 日历 猫 类别库 类别名称 猫头鹰 换 变化 字符集 复选框 选中的 清除最近的列表 关闭 评论 已批准的意见 评论作者 评论\u作者\u电子邮件 注释\u作者\u url 评论内容 评论日期 注释\u ID 家长意见 评论帖子ID 评论快捷方式 评论你的状态 对清单的评论 评论弹出窗口 确认删除 连接类型 内容 上下文 注册会计师 创建新附件 createuser 自定义\u messenger\u频道 定制的 自定义链接选项卡

日期 日期格式 日期\格式\自定义 白天 默认标题 删除 全部删除 全部删除2 删除您的评论 删除选项 删除标签 删除小部件 删除书签 删除注释 删除 删除元 删除邮件 描述 独立的 解雇 显示名称 做

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

特征 喂养 取来 重量 文件 fileupload_maxk 滤波器 找到你 第一条评论 第一个作者 第一个\u注释\u url 名字 第一页 第一站 找到\u post\u id 第四节

全局\u术语\u已启用 全球的 gmt\U偏移量 指南

高度 嗯 隐藏的 隐藏的 隐藏的 隐藏的 隐藏的 隐藏的 历史 主机名 小时 html上传

身份证 身份证件 身份证 id_基地 非法名称 插入图库 插入式按钮 临时登录 项目对象 项目类型

jj json json_数据

钥匙

姓 有限的电子邮件域 链接id 链接图像 链接名称 链接 链接地址 链接u可见 链接检查 场所 锁定 日志 已登录\u cookie

m 媒体 媒体类型 菜单 菜单项 菜单项 菜单项属性标题 菜单项类 菜单项db id 菜单项说明 菜单项对象 菜单项对象id 菜单项父id 菜单项位置 菜单项目标 菜单项标题 菜单项类型 菜单项url 菜单项xfn 菜单位置 菜单名 消息 元 元键输入 metakeyselect 元价值 分钟 嗯 锰 模式 蒙特纳姆 更多 移动 多重数

名字 导航菜单位置 新的 新角色 新鼻涕虫 新书名 新猫 新进作家 新成员\作者\电子邮件 新成员\u作者\u url 新内容 新用户 昵称 无占位符 诺阿皮 不确认 诺雷迪尔 数

抵消 奥塔尔 选项 选项页 秩序 订货人

p PB 页 页码和列 页码号 页面选项 寻呼 pagegen_时间戳 页面名称 家长id 通行证1 pass2 密码 permalink_结构 照片描述 照片(src) 菲佩罗 平安状态 插件 插件状态 指针 位置 邮递 邮政署类别 后期数据 post_格式 邮政编码 邮政编码 后置mime类型 post_密码 产后状态 职位 后置式 后视图 张贴 帖子 预览 小学博客 私钥 附言 公钥 出版 pwd

质疑<
<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>
$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);
}
<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>