如何显示php登录错误?
我正在开发一个简单的登录系统来提高我的知识,我想知道如果用户输入错误的密码或用户名,或者他没有填写任何字段,我如何显示警报消息,我已经开始做了一些事情,但我不确定这是否是正确的方式,我不知道如何在带有登录表单的页面中显示消息。非常感谢您的帮助:) 这是我的登录控制器如何显示php登录错误?,php,Php,我正在开发一个简单的登录系统来提高我的知识,我想知道如果用户输入错误的密码或用户名,或者他没有填写任何字段,我如何显示警报消息,我已经开始做了一些事情,但我不确定这是否是正确的方式,我不知道如何在带有登录表单的页面中显示消息。非常感谢您的帮助:) 这是我的登录控制器 <?php /** * Nome File : ctrl_login.php * Descrizione: File che gestisce i dati inseriti nella pagina di login
<?php
/**
* Nome File : ctrl_login.php
* Descrizione: File che gestisce i dati inseriti nella pagina di login
*/
include('../config/konasi.php');
include('functions.php');
$user_name = check_input($_POST['username']);
$user_password = check_input($_POST['userpassword']);
if (!$user_name || !$user_password) {
echo "Non hai inserito username o password";
exit();
}
if ($stmt = mysqli_prepare($conn, "SELECT user_password FROM users WHERE user_name= ? ")) {
/* Bind parameters: s - string, b - blob, i - int, etc */
$stmt -> bind_param("s", $user_name);
/* Execute it */
$stmt -> execute();
/* Bind results */
$stmt -> bind_result($result);
/* Fetch the value */
$stmt -> fetch();
/* Close statement */
$stmt -> close();
}
if(password_verify($user_password, $result)) {
echo "you are connected!";
} else {
echo "Ops, wrong password";
}
mysqli_close($conn);
只需使用此功能检查登录:
function login_check($username,$pwd){
if ($stmt = mysqli_prepare($conn, "SELECT COUNT(id) FROM `users` WHERE `user_name`=? AND `user_password`=? ")) {
/* Bind parameters: s - string, b - blob, i - int, etc */
$stmt -> bind_param("ss", $user_name,,$pwd);
/* Execute it */
$stmt -> execute();
/* Bind results */
$stmt -> bind_result($result);
/* Fetch the value */
$login_row=$stmt -> fetch();
if($login_row[0]>=1) {
echo "You are connected";
} else {
echo "Ops, wrong password";
}
/* Close statement */
$stmt -> close();
}
}
其中一种方法是在控制器中设置会话变量,并将它们重定向到登录页面,然后在登录页面中显示它们 在登录页面和控制器上方放置以下行
session_start();
在您的登录表单页面中添加以下行
<p><?=$_SESSION['error_msg']?></p>
我希望这能有所帮助。嗨,萨拉,非常感谢你的回答。我在一本php书中读到,我不应该在SELECT查询中使用变量来避免SQL注入。此外,如果我使用此功能,我是否可以在登录表单所在的页面中显示消息?这是一个不同于php控制器的文件。这里与OP代码的不同之处在于,OP似乎用php的密码散列来散列用户密码。因此正在检索一行并验证密码。那很好。这段代码看起来好像密码未被删除,或者您必须首先生成哈希。mysqli_stmt::fetch返回true、false或null。没有争吵。不知道你在那里做什么。或者使用mysql_stmt::bind_参数。因此,这个答案毫无用处。你有很多可能。在
ctrl\u login.php
上,您可以将用户重定向到表单登录,并在查询字符串中传递错误(如your\u form\u page.php?errors=Non-hai inserito username o password
),然后在需要的地方显示消息。这是一个主要基于观点的问题,真的。选择最适合你的。再见,再见,非常感谢你的回答。我会试试看,然后告诉你;)grazieHi Reza非常感谢您的支持,我使用会话成功地传递了错误消息。现在,我想使用会话创建一个重定向,这样,如果用户是admin,将转到admin仪表板,如果是client,将转到client仪表板。我在数据库中创建了一个新表,并将其命名为user_role,在这里我可以设置int为1或0。您能帮我吗?在成功验证后。检查数据库中的用户角色。然后放入if(user=='admin')头(“location:admin.php”);else标题(“location:user.php”);
session_start();
<p><?=$_SESSION['error_msg']?></p>
$_SESSION['error_msg'] = 'Ops, wrong password';
header("location: link_to_login_form");
exit();