因此我尝试使用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['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">';
}
}
}
然而,当我尝试登录时没有任何反应。知道我做错了什么吗? 表用户有两列:user和password.Futhermore,这段代码应该放在哪里?
$stmt->close();
$mysqli->close();
谢谢! 编辑:运行此代码时显示的错误:
error_reporting(E_ALL);
ini_set('display_errors', '1');
以下
注意:未定义索引:登录第39行/home/u949068087/public_html/web/admin/login.php
第39行如下: 如果($ _ POST [ '登录']){ 实际形式如下:
<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>
我通过它的内容如下:
数组([usuario] =&gt; exampleuser [pass] =&gt; examplepassword [登录] =&gt;登录) 编辑2: 就我而言,错误在于代码的这部分不是执行
while($stmt->fetch()){}
有什么想法吗? 再次感谢!
答案 0 :(得分:0)
代码末尾有一个括号,但我想你在这里复制代码时错过了它。确保它没问题。
第二件事。你是否显示PHP错误?您可以将此代码放在PHP文件的开头。
error_reporting(E_ALL);
ini_set('display_errors', '1');
答案 1 :(得分:-1)
<META HTTP-EQUIV="REFRESH" CONTENT="0";URL="home.php">
您的刷新元数据的内容值设置为0,即页面将立即刷新。我假设你是从home.php文件开始的,这意味着你甚至不会注意到刷新。
尝试将内容值设置为更加用户友好的内容,例如3(秒)
<META HTTP-EQUIV="REFRESH" CONTENT="3";URL="home.php">
对于$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
}