我有一个模板文件(page-order.php)和一个与之对应的页面。我尝试过三件事:
在我提交表单的每种情况下,我总是被重定向到index.php。我究竟做错了什么?我也尝试改变方法。我现在不会使用不错的网址,而是?page_id。
这是重定向后在index.php中显示的$ _SERVER数组
Array
(
[SERVER_SOFTWARE] => Apache/2.4.9 (Ubuntu)
[REQUEST_URI] => /354
[REDIRECT_STATUS] => 200
[HTTP_HOST] => tree
[HTTP_CONNECTION] => keep-alive
[CONTENT_LENGTH] => 41
[HTTP_CACHE_CONTROL] => max-age=0
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
[HTTP_ORIGIN] => http://tree
[HTTP_USER_AGENT] => Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
[CONTENT_TYPE] => application/x-www-form-urlencoded
[HTTP_REFERER] => http://tree/354/
[HTTP_ACCEPT_ENCODING] => gzip,deflate,sdch
[HTTP_ACCEPT_LANGUAGE] => ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,fr;q=0.2,zh-CN;q=0.2,zh;q=0.2,it;q=0.2
[HTTP_COOKIE] => wp_psr=79c2feaa8e0f6c89cf4cc2cc26661dbc; __atuvc=1%7C19; mc4wp_email=fdsf%40sdf.ru; wp-settings-1=editor%3Dhtml%26ed_size%3D533%26hidetb%3D1%26libraryContent%3Dbrowse%26urlbutton%3Dnone%26align%3Dleft%26dfw_width%3D822%26mfold%3Do; wp-settings-time-1=1400661809; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_5880cb28233a06f6781467ba3412f6ff=admin%7C1400855925%7C0524345be09cf1aa7cafa34b27f8cdcc
[PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[SERVER_SIGNATURE] =>
Apache/2.4.9 (Ubuntu) Server at tree Port 80
[SERVER_NAME] => tree
[SERVER_ADDR] => 127.0.0.1
[SERVER_PORT] => 80
[REMOTE_ADDR] => 127.0.0.1
[DOCUMENT_ROOT] => /var/www/tree
[REQUEST_SCHEME] => http
[CONTEXT_PREFIX] =>
[CONTEXT_DOCUMENT_ROOT] => /var/www/tree
[SERVER_ADMIN] => [no address given]
[SCRIPT_FILENAME] => /var/www/tree/index.php
[REMOTE_PORT] => 40802
[REDIRECT_URL] => /354
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => POST
[QUERY_STRING] =>
[SCRIPT_NAME] => /index.php
[PHP_SELF] => /index.php
[REQUEST_TIME_FLOAT] => 1400697038.09
[REQUEST_TIME] => 1400697038
)
答案 0 :(得分:1)
你是正确的,你正在点击index.php,但原因有点复杂。基本上,索引文件充当Wordpress安装的前端控制器。无论何时导航到Wordpress上的任何页面,发布,存档等等,您都要首先访问index.php文件。然后该文件将经历一个检查重写规则的过程,并使用mod_rewrite为您提供具有正确slug的漂亮URL。所以从技术上讲,你实际上从来没有打过任何其他文件而不是index.php - 所有模板都被加载到该文件中。
由于您没有使用永久链接,因此表单操作的URL只需要是查询字符串中的页面ID。你几乎就在那里,但试试这个:
<form action="/?page_id=354" method="post">
如果您决定切换到漂亮的网址,那么表单操作仍然可以正常运行。但是,我建议不要将ID硬编码到表单操作中。当你想将当前页面用作处理程序时,通常一个空的表单动作就足够了,但是因为你说这不起作用你总是可以在表格动作中使用当前的页面ID,如下所示:
<?php global $post; ?>
<form action="/?page_id=<?php echo $post->ID ?>" method="post">
同样,使用空操作应该做同样的事情,因此找出为什么在你的情况下不起作用可能是明智的。尝试检查PHP错误日志,或者在HTML上运行验证器。
希望这有帮助!
答案 1 :(得分:0)
我绝对不知道为什么会这样,但是当我改变时
<p><input type="text" name="name" placeholder="Your name" /></p>
到
<p><input type="text" name="username" placeholder="Your name" /></p>
它适用于表单操作=&#34;&#34;