1

我已经尝试了很长时间来弄清楚为什么这个表格不起作用。如果您不输入任何内容,它甚至不会显示错误消息。

我希望这里有人能指出问题所在。

该表单经过 XHTML Strict 验证。

<?php

$err = array();

if (isset($_POST['submit'])) {

/* Do the validation */
$uploader_name = $_POST['uploader_name'];
$uploader_mail = $_POST['uploader_mail'];

if (empty($uploader_name)) {
$err[] = "Name is empty.";
}

if (empty($uploader_mail)) {
$err[] = "Mail is empty.";
}

/* If everything is ok, proceed */
if (empty($err)) {

//Do MySQL insert

}

}


echo "<h1>Submit</h1>";

if(!empty($err)) {
echo "<span style='color:red;'>";
foreach ($err as $e) {echo "* $e<br />"; }
echo "</span><br />";
}

echo "
<div>
<form action='' method='post' enctype='text/plain'>
<fieldset>
<legend>Your details</legend>
<label for='uploader_name'>Your name / nickname</label><br />
<input type='text' id='uploader_name' value='$uploader_name' /><br /><br />

<label for='uploader_mail'>Your mail (will not be visible)</label><br />
<input type='text' id='uploader_mail' value='$uploader_mail' /><br /><br />
</fieldset>

<p><input type='submit' id='submit' value='Submit' /></p>
</form>
</div>
";

?>
4

2 回答 2

2

name使用atr将字段发送到服务器,而不是id. 添加(或替换)带有名称的 id,例如:

<input type='submit' name='submit' value='Submit' />

会产生$_POST['submit'] == 'Submit'

UPD:添加,而不是替换。值通过 发送name,但另一方面<label />'s 使用 's 与表单元素连接id

UPD2:并enctype<form>.

于 2012-04-11T20:02:23.260 回答
0

我建议不要使用empty,但是isset。Empty 接受很多东西是空的。你的支票应该是这样的:

if (isset($_POST['foo']) || $_POST['foo'] !== '') {
    $errors[] = 'You need to fill in the foo input';
}

其他一些提示:

  • 在 PHP 中使用单引号,在 HTML 中使用双引号
  • 使用连接运算符将引号排除在字符串之外

一个例子:

<?php
if (isset($_POST['form_send'])) {
    /* all validation stuff */
}
?>
<form action="post">
  <!-- ... -->
  <input type="text" value="<?php echo $uploader_mail ?>"><br />
  <!-- ... -->
</form>

或者

<?php
$name = 'World';
// not...
$hello = "Hello World";
// ...but
$hello = 'Hello '.$name;

至少,回答你的问题。PHP 寻找name属性,而不是id属性。

于 2012-04-11T20:06:52.430 回答