TEL:400-8793-956
当前位置:程序、服务器

POST 变量不会到达……为什么?

提问者: 近期获赞: 浏览人数: 发布时间:2022-02-14 09:34:26

 问:我找不到错误。为什么我的结果页面没有收到来自我的表单的 POST 变量?我的var_dump总是得到一个空数组。这里有人可以帮我吗?代码非常简单,以至于我不知道我可以删除哪些其他可能的错误源。如果我切换到 GET,它会立即生效。

 
我正在我的 Debian 旧稳定系统上对此进行测试,多年来我一直在使用该系统,但没有出现任何问题。(但它也不适用于我的外部托管 Web 服务器。)
 
我的form.php:
 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="device-width, initial-scale=1">
    <title>Form page</title>
</head>
<body>
    <form name="test" action="result.php" enctype="text/plain" method="post">
        <select name="chose">
            <option value="1">one</option>
            <option value="2">two</option>
            <option value="3">three</option>
        </select>
        <input type="submit" value="save">
    </form>
</body>
</html>
我的结果.php:
 
<?php
var_dump($_POST);
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="device-width, initial-scale=1">
    <title>Result page</title>
</head>
<body>
    <h1>Result</h1>
    <p><a href="form.php">return</a></p>
</body>
</html>
我想我在这里疯了。我必须忽略一些简单得惊人的东西。
 
 
答:enctype="text/plain"旨在以人类可读的格式呈现表单数据以进行调试。它不是机器可处理的(例如,您无法区分数据中的新行和条目之间的新行)。
 
删除它。
 
(无论如何我认为它对调试不是很好,浏览器内置的开发工具可以以人类可读的格式显示 URL 编码数据)
 
$_POST当数据被编码为application/x-www-form-urlencoded(表单的默认值)或multipart/form-data(支持文件上传的更粗的格式)时, PHP 将自动填充。
上一篇: 创建不在数据库中的随机数作为 PASSWORD_HASH
下一篇: 如何在 ubuntu nginx 服务器上安装最新的 phpmyadmin