使用PHP和mysqli登录
所以我试着用php和mysqli进行登录,目前情况如下:使用PHP和mysqli登录,php,login,mysqli,Php,Login,Mysqli,所以我试着用php和mysqli进行登录,目前情况如下: $DBServer = 'X'; // ip o lo que sea $DBUser = 'X'; $DBPass = 'X'; $DBName = 'X'; $conn = new mysqli($DBServer, $DBUser, $DBPass, $DBName); if ($_POST['login']) { $usuario = (isset($_POST['usuario'])) ? $_POST['
$DBServer = 'X'; // ip o lo que sea
$DBUser = 'X';
$DBPass = 'X';
$DBName = 'X';
$conn = new mysqli($DBServer, $DBUser, $DBPass, $DBName);
if ($_POST['login']) {
$usuario = (isset($_POST['usuario'])) ? $_POST['usuario'] : '';
$pass = (isset($_POST['pass'])) ? $_POST['pass'] : '';
if ($usuario == "" or $pass == "") {
echo 'Rellena todos los campos';
} else {
$query = "SELECT * FROM users WHERE user = ? AND password = ? LIMIT 1";
$stmt=$conn->prepare($query);
$stmt->bind_param("ss",$usuario,$pass);
$stmt->execute();
$stmt->bind_result($nombre_db,$pass_db);
while ($stmt->fetch()) {
if ($nombre_db != $usuario) {
echo'No existe el usuario';
} else {
if ($pass_db !== $pass) {
echo'Contraseña incorrecta';
} else { //pass correcto
session_start();
$_SESSION["nombre"]=$usuario;
echo'<META HTTP-EQUIV="REFRESH" CONTENT="0";URL="home.php">';
}
}
}
谢谢!
编辑:运行此代码时显示的错误:
error_reporting(E_ALL);
ini_set('display_errors', '1');
以下是
注意:未定义索引:第39行登录/home/u949068087/public_html/web/admin/login.php
第39行如下:
如果($_POST['login'])){
实际形式如下:
<form method="post">
<p>Usuario:
<input type="text" name="usuario" />
</p>
<p>
Contraseña:
<input type="password" name="pass" />
</p>
<p>
<input type="submit" value="login" name="login" />
</p>
</form>
有什么想法吗?
再次感谢!
您的刷新元的内容值设置为0,即页面将立即刷新。我假设您是从home.php文件开始的,这意味着您甚至不会注意到刷新
尝试将内容值设置为更用户友好的值,例如3(秒)
至于$stmt->close();
和$mysqli->close();
,请将它们立即放在while循环之后:
while($stmt->fetch()){
if($nombre_db != $usuario){echo'No existe el usuario';}else{ //user existe
if($pass_db != $pass){echo'Contraseña incorrecta';}else{ //pass correcto
}
您的代码末尾缺少一个括号,但我想您在这里复制代码时遗漏了它。请确保它是否正确 第二件事。你有显示PHP错误吗?你可以把这段代码放在你的PHP文件中
error_reporting(E_ALL);
ini_set('display_errors', '1');
问题是,即使我键入一个不存在的用户名或一个错误的密码,我也不会收到错误消息Dolchio建议的是,您的页面处于不断刷新状态,并且内容永远无法显示。我已按照您的建议将其更改了3次,但无论是否正确键入了用户和密码,我仍然一无所获其中一个错误,或者两个都错误…您在$\u POST['login']中传递的内容?您的代码在我的服务器上运行正常。可能您传递的内容不正确。您只需打印$\u POST数组即可对此进行调试:print\r($\u POST);exit();谢谢!请参阅主要帖子,我编辑了添加了一些额外信息
while($stmt->fetch()){
if($nombre_db != $usuario){echo'No existe el usuario';}else{ //user existe
if($pass_db != $pass){echo'Contraseña incorrecta';}else{ //pass correcto
}
error_reporting(E_ALL);
ini_set('display_errors', '1');