$_POST 找不到"name"值



我正在尝试提交一个表单,它应该发送一个名称,但我知道我把一些愚蠢的事情搞砸了,我就是看不到它(昨晚睡了3个小时+工作中的新编码项目!=一个聪明的主意)

这是我的一页表格:

<form action="add.php" method="POST">
    <button type="submit" name="exportcult">Export All</button>
</form>

这是另一页上的代码,用于处理POST:

if (!isset($_POST["name"]) || $_POST["name"] == '') {
    header('Location: '.$criteria."?error=data");
    die();
}

我收到了它发回的错误消息,所以我知道它没有注册名称——为什么会这样?

我想您对表单数据的实际提交方式感到困惑。"name"是属性,而不是POST数据中的键值。您需要指定该元素的名称,该名称将是POST数据中的键值。您已经指定了name="exportcult",因此在POST数据中,变量将位于$_POST['exportcult']。但是,该值将始终为空字符串,因为您尚未为按钮指示value属性。

请记住,在处理提交按钮时,只有用于提交表单的按钮的值将与表单数据的其余部分一起包含。尝试使用这个:

<button type="submit" name="exportcult" value="export">Export All</button>

如果该特定按钮用于提交表单,则$_POST['exportcult']应等于'export'

对于那些不确定的人:按钮确实与表单一起提交,但它们仍然必须具有值属性

您的表单除了按钮外不包含任何字段,因此$_POST将只包含字段exportcult

编辑:由于您使用<button>而不是<input>,因此它可能不会进入POSTed数据。

Do:

if (!isset($_POST["exportcult"]) || $_POST["exportcult"] == '') {
    header('Location: '.$criteria."?error=data");
    die();
}

当字段名为"exportcult"时,您当前正在检查名为"name"的字段。此外,它应该是<input,而不是<button

您应该添加

<input type="button" name="exportcult" value="Whatever you want" />

并在isset()而不是name 上检查exportcult

使用这个:

<form action="add.php" method="POST">
<input type="submit" name="name" value="Export All"></form>
if (!$_POST["name"])) {
    header('Location: '.$criteria."?error=data");
    exit();
}

相关内容

最新更新