-1

所以我试图用 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">';
    }
    }
}

但是,当我尝试登录时,什么也没有发生。知道我在做什么错吗?表用户有两列:用户和密码。此外,这段代码应该放在哪里?

$stmt->close();

$mysqli->close();

谢谢!编辑:运行此代码时显示的错误:

error_reporting(E_ALL);
ini_set('display_errors', '1');

以下是

注意:未定义索引:在第 39 行登录 /home/u949068087/public_html/web/admin/login.php

第 39 行如下: if($_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>

我通过它是以下内容:

数组( [usuario] => exampleuser [pass] => examplepassword [login] => login )编辑 2:就我而言,错误出在这部分代码中,它不是执行的

while($stmt->fetch()){}

有任何想法吗?再次感谢!

4

2 回答 2

0

您的代码末尾缺少一个括号,但我想您在此处复制代码时错过了它。确定它是否正常。

第二件事。您是否显示 PHP 错误?您可以将此代码放在 PHP 文件的开头。

error_reporting(E_ALL);
ini_set('display_errors', '1');
于 2013-07-13T20:02:47.763 回答
-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();and $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
    }
于 2013-07-13T19:53:04.293 回答