【问题标题】:Simple form with bootstrap not sending data via _POST -带有引导程序的简单表单不通过 _POST 发送数据 -
【发布时间】:2020-10-11 06:04:07
【问题描述】:

首先,这是我在 stackoverflow 上的第一个问题。这是从其他人的问题中获得答案的好地方。但是这次我找不到我的答案,所以我的问题在下面......

我遇到了与此问题中描述的完全相同的问题: Simple form not sending data via _POST

这是完全相同的问题:即使 var_dump($_POST); 向我展示了这个:array(0) { } 并尝试访问传递的数据给了我一个 Notice: Undefined index

过去 2 天我一直在摸不着头脑。

我的代码:

<form action="" method="POST" id="test">

    <label for="email">Email</label><br>
    <input type="text" name="email" id="email" value=""><br>
    <input class="btn btn-primary btn-lg btn-block mb-5" type="submit" name="save-company-button" id="save-company-button" value="SAVE">

</form>

这是最简单的形式,但仍然不起作用。我不明白为什么。

提前感谢您的帮助。

编辑:

视图内容:

<?php 

$siteroot = SITEROOT;

// Metadata
$meta_data_title = "About us";

// Page title
$main_title = "About us";

// Additional CSS to the main CSS (bootstrap.css and custom-style.css)
$other_css = "";

// Javascript
ob_start();
require "viewAboutUs/viewAboutUs-javascript.php";
$javascript = ob_get_clean();

// Breadcrumb
$breadcrumb = "<li class=\"breadcrumb-item\"><a href=\"$siteroot\">Home</a></li>
               <li class=\"breadcrumb-item active\" aria-current=\"page\">About us</li>";

// Main content
ob_start();
require "viewAboutUs/viewAboutUs-content.php";
$main_content = ob_get_clean();

// Javascript at the bottom
$javascript_bottom = "";

// Template file
require "template.php"

?>

viewAboutUs-content.php 的内容:

<form action="" method="POST" id="test">

    <label for="email">Email</label><br>
    <input type="text" name="email" id="email" value=""><br><br>
    <input class="btn btn-primary btn-lg btn-block mb-5" type="submit" name="save-company-button" id="save-company-button" value="SAVE">

</form>

文件viewAboutUs-javascript.php为空。

控制器displayAboutUs.php的内容:

<?php

function displayAboutUs() {
    
        var_dump($_POST);

        echo "Test: " . $_POST["email"] . "<br>";

    if (isset($_POST["save-company-button"])) {

      echo "Button clicked ! <br>";

    }

    require VIEWS_FOLDER . "/pages/viewAboutUs.php";
} 

?>

抱歉,提供代码的时间,我正在发现stackoverflow的接口......

编辑#1

如果我将项目复制粘贴到我放在 /public/ 文件夹中的简单 php 文件中,它可以正常工作。

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>

    <?php

        var_dump($_POST);

        echo "Test: " . $_POST["email"] . "<br>";


        if (isset($_POST["save-company-button"])) {

            echo "Button clicked ! <br>";

        }
            

    ?>

    <form action="" method="POST" id="test">

        <label for="email">Email</label><br>
        <input type="text" name="email" id="email" value=""><br><br>
        <input type="submit" class="btn btn-primary btn-lg btn-block mb-5"  name="save-company-button" id="save-company-button" value="SAVE">

    </form>

</body>
</html>

在这种情况下唯一改变的是我这次使用的是引导程序。否则,我的所有表单都将按照我迄今为止的代码组织方式完美运行。

编辑#2

在多次查看我的代码后,我得出的唯一结论是问题一定出在表单本身的 HTML 代码上。表单标签和/或输入标签之一的属性中可能缺少某些内容,因为当前剩下的属性是最低限度的。

如果有人是 HTML5 专家,那可能会有用...

编辑#3

事情似乎表明我在 EDIT #2 中写的内容是正确的,因为如果我在主控制器 (index.php) 中执行 var_dump($_POST);,就在调用 displayAboutUs() 之前,结果是相同的: 没有数据通过。

所以,到目前为止,这个表单并没有像我点击提交按钮时那样发送任何东西,但是如果我将它复制粘贴到另一个单独的测试文件中,它就会发送。

问题是:为什么?

【问题讨论】:

  • 对不起,我忘了说我正在使用引导程序。这可能很重要。
  • 好的,你能向我们展示一下这个文件的内容吗
  • 您是否将email 的值存储在变量中?
  • 您正在发布到同一个文件,这意味着(可能)在某个时候在同一个文件中有处理发布数据的代码。你也可以分享一下吗?
  • 对不起,我正在发现堆栈的工作方式,我可能会犯一些错误......

标签: php forms


【解决方案1】:

在燃烧了我的大脑并差点将我的电脑扔出窗外之后,我终于明白了。所以我把解决方案放在这里,以便其他人可以从我的错误中吸取教训。

问题出在我的 .htaccess 文件中,该文件丢失了(我复制粘贴了以前项目的结构作为新项目的模板),并且由于未显示隐藏文件,我当然错过了.htaccess 手动复制文件时...

这是造成如此多麻烦的缺失内容:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

所以,作为对我自己和其他人的提醒,如果即使是非常简单的事情都无法正常进行,请检查你看不到的东西 ;-)

希望这会有所帮助!并感谢那些试图提供帮助的人。

这个问题可以关闭,但我看不到如何继续...

【讨论】:

    猜你喜欢
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    • 2016-03-11
    • 1970-01-01
    • 2016-05-26
    • 2021-09-09
    • 1970-01-01
    相关资源
    最近更新 更多