我在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 ['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>
修改
我已经更改了代码,其中将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);
}
答案 0 :(得分:21)
问题是wordpress保留了一些单词,并且在提交表单时会抛出该错误:
我发现myseld和网上冲浪的一些词是:
创建自定义表单时要小心,并尝试使用一些前缀命名输入。在我的情况下,我有一个名为“历史”的自定义帖子类型,我用同样的方式命名输入。
答案 1 :(得分:0)
您是否尝试重置永久链接?
可能是某个地方的问题。
它看起来似乎不是问题isset($_POST['form-submitted'])'
您的页面名称可能正在使用另一个插件。
答案 2 :(得分:0)
WordPress的get_permalink()
正在生成一个注入输出HTML表单标记的网址。
如果您查看浏览器中显示的HTML源代码(例如右键单击,查看源代码或右键单击,检查元素),请找到:
<form action='some_url_here' ...>
。
我希望这个URL可能与您当前正在浏览的URL相同...即它告诉浏览器将详细信息发送回到同一个PHP文件进行处理结果。
答案 3 :(得分: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>
答案 4 :(得分:-1)
您无法在POST FORM中使用此变量
_ajax_nonce _页 _每页 _signup_form _总 _url _wp_http_referer _wp_original_http_referer _wp_unfiltered_html_comment _wpnonce _wpnonce定制报头的上载
AA 行动 动作2 active_post_lock 添新 add_new_users addmeta admin_bar_front admin_color ADMIN_EMAIL ADMIN_PASSWORD admin_password2 阿贾克斯 对齐 allblogs 所有用户 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 分类名称 catslist 更改 变化 字符集 复选框 检查 明确近期列表 关闭 评论 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 确认删除 连接类型 内容 上下文 CPAGE 创建新附着 创建用户 customize_messenger_channel 定制 customlink标签
日期 日期格式 date_format_custom 天 默认头 删除 删除所有 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_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 IDS 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
名 NAV-菜单位置 新 NEW_ROLE new_slug NEW_TITLE newcat newcomment_author newcomment_author_email newcomment_author_url newcontent 新用户 昵称 no_placeholder noapi noconfirmation noredir 编号
偏移 oitar 选项 option_page 订购 的OrderBy
点 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_format POST_ID POST_ID post_mime_type post_password post_status 帖子标题 post_type post_view 帖子ID 帖子 预习 primary_blog PRIVATE_KEY PS PUBLIC_KEY 发布 PWD
查询
reassign_user 重新验证 重定向 redirect_to的 REF 由......推荐 注册 注册通知 记住账号 删除背景 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 标签名称 目标 分类 结核病 术语 字体颜色 在小部件-ID 主题 theme_status 拇指 TIMEZONE_STRING 时间格式 time_format_custom 标题 thumbnail_id 垃圾 丢弃 型
undismiss unspam unspammed 取消删除 untrashed 网址 update_home_url 更新 升级 upload_filetypes upload_space_check_disabled USE_SSL 用户 用户身份 用户登录 用户名 用户名 用户
验证-删除 版 能见度 可见
瓦特 weblog_title welcome_email welcome_user_email WIDGET_ID widget_number 小部件-ID 小部件 - 近期-评论 窗口小部件,RSS 宽度 withcomments 没有评论 wp_customize wp_http_referer wp_screen_options WP-预览 WPLANG
X1
Y1 年
答案 5 :(得分:-1)
我有同样的问题,但我发现当我提交空输入字段(输入字段中没有任何值)时工作正常然后我留下几个输入字段保持为空并将值放在其他工作正常。
这意味着问题是我的输入字段之一,而不是wordpress或 在我的代码中。