-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">';
    }
    }
}

ただし、ログインしようとしても何も起こりません。私は何が間違っているのですか?テーブル users には、user と password の 2 つの列があります。さらに、このコードはどこに行けばよいのでしょうか?

$stmt->close();

$mysqli->close();

ありがとう!編集:このコードの実行時に表示されるエラー:

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

以下です

Notice: Undefined index: login in /home/u949068087/public_html/web/admin/login.php 行 39

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>

私がそれを通過するのは次のとおりです。

Array ( [usuario] => exampleuser [pass] => examplepassword [login] => login ) 編集 2: 私に関する限り、エラーはコードのこの部分にあり、実行されていません。

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

何か案は?再度、感謝します!

4

2 に答える 2

0

コードの最後に角かっこが 1 つありませんが、ここにコードをコピーしたときに見落としていたと思います。問題ないか確認してください。

2番目のこと。PHPエラーを表示しますか? このコードを PHP ファイルの先頭に置くことができます。

error_reporting(E_ALL);
ini_set('display_errors', '1');
于 2013-07-13T20:02:47.763 に答える