$ _POST行为奇怪 - 它按预期工作方式相反?

时间:2015-01-16 10:14:35

标签: php arrays forms post isset

我有以下html表单并将其提交到php文件(workcard_done.php)。我的问题是当我提交代码时它回显 else echo "nothing here"; 如果我在isset上设置not(!)运算符,我得到想要的结果?它应该与if(isset($_POST['submit']) && !empty($_POST['submit']))一起使用。

任何人都可以告诉我下面这段代码的错误让我发疯了。

<!DOCTYPE html>
<HTML>
<head>
<title>yoyo</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<form action="workcard_done.php" name="workCard_open" method="POST">
<br>
<table>
<tr>
<th>title 1</th>
<th>title 2</th>
</tr>
<tr>
<td><input type="text" name="name[]" value="" ></td>
<td><input type="text" name="price[]" value="" class="matr_price"/></td>
</tr>
<tr>
<td><input type="text" name="name[]" value="" ></td>
<td><input type="text" name="price[]" value="" class="matr_price"/></td>
</tr>
<tr>
<td>Total incl. VAT:</td>
<td><span type="text" name"sum[]" id="sum">0</span></td>
</tr>
</table>
<input type="submit" name"submit" class="submit" value="Done"/>
</form>
</body>
</html>

workcard_done.php

<!DOCTYPE html>
<html>
<head>
<title>title...</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<pre>
<?php
error_reporting(E_ALL);
if(isset($_POST['submit']) && !empty($_POST['submit'])) {
  $name = $_POST['name'];
  $price = $_POST['price'];
  $user = $_POST['user'];

  print_r($name);
  echo "<br>";  
  print_r($price);
  echo "<br>";
  print_r($user);
  echo "<br>";
}
else {
  echo "nothing here";
}
?>
</pre>
</body>
</html>

如果在isset上设置not(!)运算符,我会得到以下想要的结果。

Array
(
    [0] => slange
    [1] => rfd
)
Array
(
    [0] => 123
    [1] => 200
)
Array
(
    [user] => 2
)

4 个答案:

答案 0 :(得分:4)

您错过了=

上的<input type="submit" name"submit"

答案 1 :(得分:0)

检查这行HTML:

<input type="submit" name"submit" class="submit" value="Done"/>

“提交”按钮没有名称,这就是isset($_POST['submit']) == FALSE的原因。在它所属的地方添加等号(=),突然你的问题就会消失。

答案 2 :(得分:0)

检查$ _POST,而不是$ _POST ['submit']。

如果用户按下回车怎么办?提交按钮永远不会触发,此值也不存在。

顺便说一句,不要忘记CRSF令牌。

答案 3 :(得分:0)

您忘记了=其他答案的状态,但您还尝试访问$_POST['user'],而您的输入字段都没有名称user