【问题标题】:Wordpress Template causes 404 ErrorWordpress 模板导致 404 错误
【发布时间】:2023-03-11 00:42:01
【问题描述】:

我在 Wordpress 中创建了一个页面并将此表单用作模板。但是当我提交表单时,它显示Error 404 page not found。

我在 php 中尝试了各种脚本,但没有得到丰硕的结果。希望得到最好的答案。谢谢:)

这是我的代码

<?php
/*
template name: visit
*/

$servername= "localhost";
$username="root";
$password="";
$database="wp_chandan"; 


if(isset($_POST['name']) && isset($_POST['email']))
{

    $name=$_POST['name'];
    $email=$_POST['email'];
    var_dump($email);


    @mysql_connect($servername,$username,$password);
    @mysql_select_db($database);

    $query=mysql_query("insert into visitor_d (NAME,Email) values ('$name','$email') ");    
} ?>

<html>
    <head>  
        <?php get_header(); ?>
        <style type='text/css'>
        /* form elements */
        form {
            margin:100px; 
            padding: 10px 2px;
            background: #F5F5F5;  
            width: 50%;
            height:auto;
            border:1px solid green;
        }

        input {
            padding:2px;
            border:1px solid #eee;
            font: normal 1em Verdana, sans-serif;
            color:#777;
            align:center;
        }

        input.button { 
            font: bold 12px Arial, Sans-serif; 
            height: 24px;
            margin: 0;
            align:center;
            padding: 2px 3px; 
            color: #333;
            background: #e7e6e6 url(MarketPlace-images/button.jpg) repeat-x;
            border: 1px solid #dadada;
        }

        </style>
    </head>

    <form action="" method="POST">
        <fieldset>
            <legend><b><u>Visitor Details:</u></b></legend>
            Name: <input type="text" name="name" placeholder="Fill Name" required><br><br>
            Email: <input type="text" name="email" required placeholder="Enter Email"><br><br>
            <input type="submit" name="submit"><br>
        </fieldset>
    </form>
    <?php get_footer();?>
</html>

【问题讨论】:

  • &lt;html&gt;, &lt;head&gt;, &lt;style&gt; 应该在你的 header.php 中。我也看不到模板评论 /* Template Name: My Name */ 所以不确定你是如何在后端选择这个模板的。
  • 看起来POST 方法没有路由到这个url。
  • comment /* 模板名称:我的名字 */ 我用过但这里没有显示。
  • 您应该清理代码并按原样发布。
  • 亲爱的,你的代码对 MySQL 注入是完全开放的。

标签: php wordpress


【解决方案1】:

确保表单字段中的 name 属性中没有任何保留的 WordPress 术语。

WordPress 使用其中许多保留条款进行内部重写,因此,如果您使用 name 属性(例如“名称”),则会违反 WordPress 重写规则并在提交表单后导致此 404 Not Found 页面。

在此处查看更多信息:http://www.lost-in-code.com/platforms/wordpress/wordpress-404-not-found-when-submitting-form/

【讨论】:

  • 当我使用总是返回 404 标头的自定义模板将表单发布到虚拟页面(使用重写规则)时,我以为我快疯了。只需将“name”更改为“_name”即可解决问题。非常感谢!
【解决方案2】:

html5 不喜欢空的 action 属性,它确实会在某些浏览器中引起问题。您还没有选择标准,所以我假设浏览器将默认为 html5

<form action="#" method="POST"> 

将操作设置为# 应该可以工作,但需要注意的是在加载页面模板之前添加的操作,这显然可以获取 $_POST 并且重定向很常见,因此这也可能是一个原因。

还有

Name: <input type="text" name="name" placeholder="Fill Name" required>

WP 不喜欢当你调用一个字段“名称”时它与某些东西冲突(我现在已经忘记了原因)

 Name: <input type="text" name="aname" placeholder="Fill Name" required>

【讨论】:

    猜你喜欢
    • 2011-10-08
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    相关资源
    最近更新 更多