我知道关于同样的问题存在很多问题,但是我很坚持。我很难弄清楚什么是错的。我从谷歌尝试过很多东西,没有运气。我试图将验证错误显示在相关输入字段旁边,而不是仅显示在表单顶部。表格非常大,所以我只是发布一个"样本"它的。
HTML表单:
<form action="register.php" method="POST">
<table>
<th class="topLine">
<label for="form_login" >Login
</th>
<td>
<div class="form_input_bg">
<input type="text" name="username" value="" maxlength="16" size="16"/>
<?php echo $username;?>
</div>
</td>
</tr>
<tr>
<th class="topLine">Password
<p style="font-size:9px;">8-16 Character (only a-Z,0-9)</p>
</th>
<td>
<div class="form_input_bg">
<input type="password" name="pass" value="" maxlength="16" size="16"/>
</div>
</td>
</tr>
<tr>
和PHP验证,它恰好是这样,仍然是它的样本(不要伤害你的眼睛)。
<?PHP
elseif(strlen($_POST['username']) < 5)
{
echo '<div class="message">Username must be longer than 4 characters
</div></div><p>
?>
答案 0 :(得分:1)
我建议你将验证与显示html分开:
// validation
$error = array();
if (strlen($username) < 5)
$error['username'] = 'Login must be longer than 4 characters';
// html
<input type="text" name="username" value="" maxlength="16" size="16"/><?php echo $username;?>
<?php if (isset($error['username'])) : ?>
<p class="error"><?php echo $error['username'] ?></p>
<?php endif ?>
答案 1 :(得分:0)
这两段代码如何相互关联?像这样?:
<?php
// other code
elseif(strlen($_POST['username'])<5) {
echo '<div class="message">Login must be longer than 4 characters</div></div><p>
// other code
?>
<!-- other markup -->
<form>
<table>
<!-- form elements -->
</table>
</form>
如果是这种情况,那么您的代码明确echo
验证消息“在顶部”,因为它在发出其他任何内容之前将它们发送到输出。您需要将它们移动到它们在标记中的位置,如下所示:
<!-- other markup -->
<form>
<table>
<tr>
<td>
<?php
if(strlen($_POST['username'])<5) {
echo '<div class="message">Login must be longer than 4 characters</div>';
}
?>
<!-- login form element -->
</td>
</tr>
<!-- repeat for other form elements -->
</table>
</form>
从上到下的整个代码文件按顺序处理。要将一个元素放在标记中间的某个位置,代码在标记中的那一点需要echo
。
答案 2 :(得分:0)
也许你可以试试像这样的人。
<dl>
<dt>Login:</dt>
<dd><input type="text" name="username" value="" maxlength="16" size="16"/>
<?php echo ($message['username'] == "" ? "" : $message['username']) ?></dd>
<dt>Password:</dt>
<dd><input type="text" name="password" value="" maxlength="16" size="16"/>
<?php echo ($message['username'] == "" ? "" : $message['username']) ?></dd>
</dl>
出于布局原因,您不应该使用表格。 (表到定义列表)
对于另一部分生成
<?PHP
$message = array();
...
elseif(strlen($_POST['username'])<=5) {
$message['username']'<div class="message">Login must be longer than 4 characters</div>
?>
希望这有帮助!
答案 3 :(得分:0)
试试这个
<!DOCTYPE HTML>
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
</head>
<body>
<?php
$nameErr = $emailErr = "";
$name = $email = "";
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if (strlen($_POST["name"])<5)
{$nameErr = "Username must be longer than 4 characters";}
else
{$name = $_POST["name"];}
if (empty($_POST["email"]))
{$emailErr = "Email is required";}
else
{$email = $_POST["email"];}
}
?>
<p><span class="error">* required field.</span></p>
<form method="post" action="<?php echo($_SERVER["PHP_SELF"]);?>">
Name: <input type="text" name="name">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
E-mail: <input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>