2014-05-26 3 views
0

У меня проблема с входом в систему, когда мой пользователь находится в базе данных. я иметь вид:PHP login.php пользователь не работает в mysql

<form data-abide method="post" action="confirmar-login.php" id="formlogin" name="formlogin" > 
       <div class="row"> 
        <div class="small-8"> 
         <div class="row"> 
          <div class="small-3 columns"> 
           <label for="email" class="right inline">E-Mail:</label> 
          </div> 
          <div class="small-9 columns"> 
           <input class="radius" type="email" id="email" name="email" placeholder="[email protected]" required=""> 
           <small class="error">Field required</small> 
          </div> 
         </div> 
        </div> 
        <div class="small-8"> 
         <div class="row"> 
          <div class="small-3 columns"> 
           <label for="senha" class="right inline">Senha:</label> 
          </div> 
          <div class="small-9 columns"> 
           <input class="radius" type="password" id="senha" name="senha" placeholder="****" required=""> 
           <small class="error">Field required</small> 
          </div> 
         </div> 
        </div> 
        <div class="small-8"> 
         <div class="row"> 
          <input type="submit" class="button radius " value="Logar"> 
          <a href="cadastro.php" class="button radius " >Cadastrar</a> 
         </div> 
        </div> 
      </form> 

Когда форма Логина представляется, что активизирует файл Проверить-login.php И это код: переменного $ Банко это где мое имя базы данных

<?php 
session_start(); 
require_once 'configuracao.php'; 
$email = $_POST['email']; 
$senha = $_POST['senha']; 
$conexao -> query("use $banco") or die ("Erro ao selecionar o database"); 
$result = $conexao -> prepare("SELECT * FROM usuarios WHERE email_usuario = '$email' and senha = '$senha'") or die("Erro ao selecionar o usuário"); 

if (mysql_num_rows($result) > 0) { 
$_SESSION['email'] = $email; 
$_SESSION['senha'] = $senha; 
header('location:index.php'); 
} else { 
unset($_SESSION['email']); 
unset($_SESSION['senha']); 
header('location:login.php'); 
} 
?> 

в моем файле configuracao.php имеет код:

$conexao = new PDO($dsn, $user, $pass); 

Я не нашел проблему ... запрос возвращает ничего, и код не входя IF. То есть, когда я поставил электронную почту и пароль, он просто перенаправляет меня на входе в систему ...

+2

Вы используете PDO, поэтому не должны возвращаться к использованию 'mysql_num_rows'. –

+0

Вы должны увидеть некоторые учебные пособия о том, как использовать PDO, не будет подчеркивать это достаточно, потому что вы используете переменные внутри своей подготовки. – iBrazilian2

+0

mysql_num_rows для mysql_connect? Итак, когда я положил? –

ответ

0

вы используете PDO, поэтому не используйте mysql_* увидеть следующее:

$prepared = array(
    'email' => $_POST['email'], 
    'senha' = >$_POST['senha']); 
$conexao -> query("use $banco") or die ("Erro ao selecionar o database"); 
$result = $conexao -> prepare("SELECT * FROM usuarios WHERE email_usuario = :email and senha = :senha"); 

$result->execute($prepared); 
if ($result->fetch()) { 

official docs

+0

также добавить привязку для параметров – Viscocent

+0

Документы подтверждают, что 'rowCount' не следует полагаться для операторов SELECT. –

+0

Я не вижу, что связанные переменные .. – Viscocent

0

You не выполняла функцию PDO ->execute(). Вы можете увидеть примеры here.

Кроме того, не смешивайте функции pdo и функции mysql PHP. Это два разных способа подключения к MySQL. Фактически, использование функций mysql больше не рекомендуется и заменено mysqli и pdo.

-2

Вместо нового PDO использовать mysql_connect.

Вы также должны подумать о том, как вы помещаете данные в базу данных и как их извлекаете. Лучший способ убедиться, что ваши пароли безопасны, - это зашифровать при регистрации и при входе в систему вы шифруете данные ввода пароля и сравниваете их с базой данных. Таким образом, у вас будет более безопасная система входа в систему.

+2

OP уже использует новое расширение PDO, вы не должны рекомендовать, чтобы они * обратились назад *, чтобы использовать устаревшее расширение mysql. –

+0

В основном все, что я говорю, для него сначала попробовать с mysql_connect !! – FabAlegre

0
$result = $conexao->prepare("SELECT * FROM usuarios WHERE email_usuario = ? and senha = ?"); 
$result->execute(array($email, $senha)); 

if($result->rowCount() > 0){ 
    $_SESSION['email'] = $email; 
    $_SESSION['senha'] = $senha; 
} 
Смежные вопросы