【发布时间】:2017-05-14 03:47:13
【问题描述】:
我正在测试这个简单的登录表单。我正在使用 PHP、XAMPP,在 Chrome 中进行测试。
这是表单的代码:
<form action="login.php" method="POST">
<label>User: </label>
<input type="text" name="user" <?php if($errors){echo 'style="border:1px solid red;"';}?>>
<?php echo '<script>console.log("Value for $errors: '.$errors.'")</script>';?>
<label>Password: </label>
<input type="password" name="password" <?php if($errors){echo "style='border:1px solid red;'";}?>>
<div class="text-center">
<button type="submit" name="submit">Sign in</button>
</div>
</form>
这段代码是 login.php 的一部分,一开始,我有以下 PHP 行:
<?php
session_start();
$user = "";
$password = "";
$errors = 0;
if(isset($_POST['submit'])){
if(isset($_POST['user'])){
if(!empty($_POST['user'])){
$user = $_POST['user'];
}
}else{
$errors = 1;
}
if(!empty(isset($_POST['password']))){
$password = $_POST['password'];
}else{
$errors = 1;
}
$_SESSION['user'] = $user;
$_SESSION['password'] = $password;
}
?>
表单中的action属性调用自身(调用同一个文件-->login.php) 在 PHP 脚本中,我尝试实现如果表单已提交,则执行所有验证等。关于简单验证,我尝试将收到的 POST 值分配给变量,如果收到的内容存在并且它不是空的.如果为空或不存在 --> $errors = 1;
问题是.. 如果两个输入有错误,我希望他们将边框颜色更改为红色。所以我做了:
<label>User: </label>
<input type="text" name="user" <?php if($errors == 1){echo 'style="border:1px solid red;"';}?>>
<?php echo '<script>console.log("Value for $errors: '.$errors.'")</script>';?>
我添加的最后几行尝试在控制台中打印 $errors 的值,该值始终显示为 0。
我尝试过使用empty($user) 进行一些重定向,当提交表单而不触及输入时,它确实显示值是空的。不过,我不完全明白为什么是空的,$errors 的值总是 0。
提前致谢! :)
【问题讨论】:
-
出于好奇,您为什么使用
0和1而不是true和false?答案仍然发布 -
主要是因为我刚刚学习,我在尝试打印到控制台时实际上尝试了真/假,但由于它什么也没返回,所以我保留了数字
-
我不确定您为什么要在 JS 控制台中记录这些内容。只需使用
var_dump() instead.var_dump( $errors ); -
@NathanDawson 因为当我点击提交按钮时,它会刷新......所以我在屏幕上看不到 var_dumps :/ 我不知道如何实际提交,知道有错误,并使用输入中的红色边框返回登录
标签: php css input border-color