2013-07-13 2 views
-1

, так что я пытался сделать вход с PHP и 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['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(); 

Спасибо! EDIT: Отображаются ошибки при выполнении этого кода:

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

являются следующие

Примечание: Undefined индекс: войти в /home/u949068087/public_html/web/admin/login.php на линии 39

линия 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> 

Что я прохожу через него следующее:

Array ([Новичок] => exampleuser [пропуск] => examplepassword [Войти] => Вход) EDIT 2: Насколько я я обеспокоен тем, ошибка в этой части кода, который не execu

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

Любые идеи? Еще раз спасибо!

ответ

-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($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 
    } 
+0

Проблема заключается в том, что даже если я ввожу имя пользователя, который не существует или неверный пароль, я не получаю сообщения об ошибках –

+0

Что Dolchio это указывает, что ваша страница находится в постоянном состоянии обновления, и контент никогда не будет отображаться. – Havenard

+0

Я изменил его 3, как вы предложили, и я все равно ничего не получаю, правильно ли я набираю пользователя и пароль, один из них ошибочен или оба неправильно ... –

0

В конце вашего кода отсутствует одна скобка, но, полагаю, вы ее пропустили, когда скопировали код здесь. Убедитесь, что все в порядке.

Второе. Вы показываете ошибки PHP? Вы можете поместить этот код в начало вашего PHP-файла.

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

Да, скобка находится в коде ... –

+0

Что вы передаете в $ _POST ['login']? Вы очень хорошо работаете на моем сервере. Может быть, вы не передадите что-то правильно. Вы можете отлаживать это, просто распечатывая свой массив $ _POST: print_r ($ _ POST); exit(); –

+0

Спасибо! Пожалуйста, обратитесь к основному сообщению, я редактировал добавление дополнительной информации –