php脚本没有输出
我有一个用户名和密码框和一个登录按钮。我的php脚本应该检查框是否为空,以及传入内容的长度是否小于6个字符。它没有做我想让它做的事情,我不知道为什么。我是php新手,所以我使用W3学校作为参考,但似乎无法理解。我将通过下面的代码php脚本没有输出,php,html,validation,Php,Html,Validation,我有一个用户名和密码框和一个登录按钮。我的php脚本应该检查框是否为空,以及传入内容的长度是否小于6个字符。它没有做我想让它做的事情,我不知道为什么。我是php新手,所以我使用W3学校作为参考,但似乎无法理解。我将通过下面的代码 <?php if($_POST){ #not empty #atleast 6 characters long # array holds errors $errors = array(); # validation starts here if(emp
<?php
if($_POST){
#not empty
#atleast 6 characters long
# array holds errors
$errors = array();
# validation starts here
if(empty($_POST['uname'])){
$errors['$uname1'] = "Your name cannot be empty";
}
if(strlen($_POST['uname']) < 6){
$errors['uname2'] = "Must be longer than 6 characters";
}
if(empty($_POST['psw'])){
$errors['psw1'] = "Your password cannot be empty";
}
if(strlen($_POST['psw']) < 6){
$errors['psw2'] = "Must be longer than 6 characters";
}
if(count($errors) == 0){
# redirect to the game page
header('Location:success.html');
exit();
}
}
?>
<!DOCTYPE html>
<head>
<title>Hangman Home Page</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<form action="" method="post" class="modal-content animate">
<div class="container">
</p>
<label for="uname"><b>Username</b></label>
<input type="text" placeholder="Enter Username" name="uname">
<p>
<?php if(isset($errors['uname1'])) echo $errors['uname1']; ?>
</p>
<p>
<?php if(isset($errors['uname2'])) echo $errors['uname2']; ?>
</p>
<label for="psw"><b>Password</b></label>
<input type="password" placeholder="Enter Password" name="psw">
<p>
<?php if(isset($errors['psw1'])) echo $errors['psw1']; ?>
</p>
<p>
<?php if(isset($errors['psw2'])) echo $errors['psw2']; ?>
</p>
<button type="submit" value="submit">Login</button>
</div>
</form>
</body>
</html>
试试这个例子。它基于PHP7特性,称为空合并运算符。正如上面所说: 如果第一个操作数存在且不为空,则返回第一个操作数;否则返回第二个操作数 所以你可以这样写:$uname=$\u POST['uname'];这意味着如果$_POST['uname']存在且不等于NULL,则$uname必须是$_POST['uname']。否则它将等于空字符串 与echo错误相同:。如果设置了错误且不为空,则回显它们。否则返回空字符串 也不需要检查字符串是否为空。因为如果字符串为空-这保证字符串长度小于6
<?php
$uname = $_POST['uname'] ?? '';
$psw = $_POST['psw'] ?? '';
$errors = [];
if(strlen($uname) < 6) $errors['uname'] = 'Name must be longer than 6 characters';
if(strlen($psw) < 6) $errors['psw'] = 'Password must be longer than 6 characters';
if(empty($errors)) {
header('Location:success.html');
exit();
}
?>
<!DOCTYPE html>
<head>
<title>Hangman Home Page</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<form action="" method="post" class="modal-content animate">
<div class="container">
</p>
<label for="uname"><b>Username</b></label>
<input type="text" placeholder="Enter Username" name="uname">
<p><?php echo $errors['uname'] ?? ''; ?></p>
<label for="psw"><b>Password</b></label>
<input type="password" placeholder="Enter Password" name="psw">
<p><?php echo $errors['psw'] ?? ''; ?></p>
<button type="submit" value="submit">Login</button>
</div>
</form>
</body>
</html>
你期待什么样的行为,你实际看到了什么?页面只是刷新。我希望能够根据他们是否留白或少于一定数量的字符来查看邮件。此外,我怀疑表单可能存在问题-为了完整性,您还应该发布表单HTML。表单HTML是什么意思?抱歉。。。我没有向下滚动。我看包括在内了。我在我的机器上运行了你的示例-工作正常。