我正在使用 html / PDO PHP 中的登录表单。由于我的 PDO 知识几乎为零,因此我一直在按照逻辑告诉我的内容以及使用 stackoverflow 进行改进。我已经建立了连接和数据捕获并验证了信息(我按照逻辑所示重复,初学者的逻辑)但是当页面加载时我遇到了问题,它激活了一个验证警报,我找不到如何让它只激活发送表单时,不幸的是我无法在单独的文件中进行验证,然后代码:
<?php
session_start();
include ('pdoconnectexpo.php');
$usuario = $_POST['usuario'];
$contrasena = $_POST['pwd'];
if(isset($_POST['iniciar_sesion'])){
$query = 'SELECT id_usuario, usuario FROM "public".usuarios WHERE usuario=:usuario AND contrasena=:contrasena';
//Usuario
$registros = $conn2->prepare( $query ); //Preparamos la consulta
$registros->execute( array(":usuario" => $usuario,":contrasena" => $contrasena) ); //Le pasamos el valor al marcador, esto es un array por lo que soporta tanto valores requiera la query, separador por coma
$registros = $registros->fetchAll( PDO::FETCH_OBJ ); //convirtiendo el resultado en objetos para poder iterar en un ciclo.
if(!isset($registros[0]->usuario)){
echo "<script type=\"text/javascript\">alert(\"Usuario Errado o Contraseña Errada\");</script>";
}else{
// code...
$_SESSION['usuario'] = $usuario;
$_SESSION['id_usuario'] = $id_usuario;
header('Location: inicio.php');
}
}
?>
在 php 下方,我调用以下 html 代码(我只放置表单):
<form class="login100-form validate-form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<span class="login100-form-title p-b-34">
Inicio de Sesión
</span>
<div class="wrap-input100 rs1-wrap-input100 validate-input m-b-20" data-validate="Type user name">
<input id="first-name" class="input100" type="text" name="usuario" placeholder="Usuario">
<span class="focus-input100"></span>
</div>
<div class="wrap-input100 rs2-wrap-input100 validate-input m-b-20" data-validate="Type password">
<input class="input100" type="password" name="pwd" placeholder="Contraseña">
<span class="focus-input100"></span>
</div>
<div class="container-login100-form-btn">
<button class="login100-form-btn">
Iniciar Sesión
</button>
</div>
</form>
第一件事是您可以优化您的查询,而不是 2 有 1;
因此,在您的
HTML
登录按钮中创建它的类型submit
并为其分配一个带有属性的名称name
,这样您就可以验证该按钮是否被按下;有了这个,它只剩下验证按下按钮时是否显示警报;
将所有这些结合起来,您将得到这样的结果;
HTML
我再解释一下,我们所做的是创建一个输入类型的新元素,当用户发送表单时将其发送到服务器,因此我们检查该元素是否存在于对服务器的数据请求中,然后我们可以确定这仅在表单提交时加载
POST.