【问题标题】:Post variables not being received after form submission提交表单后未收到发布变量
【发布时间】:2020-01-19 04:39:56
【问题描述】:

所以我有一个 HTML 文件,格式如下:

    <!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <form action="pringles.php" method="post">
      First name:<br>
      <input type="text" name="firstname" value="Mickey">
      <br>
      Last name:<br>
      <input type="text" name="lastname" value="Mouse">
      <br><br>
      <input type="submit" value="Submit">
      </form>
  </body>
</html>

然后我有一个 PHP 文件名为 pringles.php,其中包含以下代码:

<?php 
// server, username, password, db, port
$servername = "********";
$username = "*******";
$password = "********";
$dbname = "*********";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

foreach ($_POST as $key => $value) {
  $postdata2 = $postdata2 . "Field ".htmlspecialchars($key)." is ".htmlspecialchars($value) . "////";
}

$sql = "INSERT INTO `test`(`text`) VALUES ('{$postdata2}')";
if ($conn->query($sql) === TRUE) {
  echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
?>

但是,当我提交表单时,它会在我的数据库中插入一行,但文本字段为空。由于某种原因未发送 post 变量。此外,我还有另一个 .php 文件,其中的表单可以完美运行。它们都在同一个文件夹中,因此我不明白为什么这不起作用。

谢谢!

【问题讨论】:

  • var_dump($postdata2) 显示什么
  • 为什么要将所有的 POST 都输入到一栏中?或者您想为每个人创建一个新列?什么是 db 架构/列类型?
  • 除了@u_mulder 提到的内容,使用他们的建议,然后将$sql 转储到那里,看看你会得到什么。您的问题在某种程度上还不清楚。
  • @u_mulder 它显示为 NULL
  • 还有var_dump($_POST)?

标签: php html mysql forms post


【解决方案1】:

问题最终出现在 .htaccess 中,因为 URL 被重定向以删除 .php,这导致 POST 数据丢失的问题。这是代码:

RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC]
RewriteRule ^ /%1 [NC,L,R]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [NC,L]

这是RewriteCond %{REQUEST_METHOD} !POST 解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    相关资源
    最近更新 更多