Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

xurissoooo

PDO - Verificar usuario e senha confere

Recommended Posts

Meu codigo que funciona que não é PDO

 

Quero saber como fica extamente este codigo PDO

 

 


 

//==============================
// INCLUI CONEXAO AO BANCO DE DADOS
include  "conexao_banco.php";
//==============================
// DEFINE VARIAVEIS INSERIDAS PARA VERIFICAR
$email=$_POST['email'];
$senha=md5($_POST['senha']);
//==============================

 


Código que quero transformar em PDO:

// VERIFICA SE USUARIO E SENHA CONFERE
$consulta = "SELECT * FROM usuarios WHERE email='$email' AND senha='$senha'";
$resultado=mysql_query($consulta)
or die("ERRO1");


if (mysql_num_rows($resultado)!=1){
unset($_SESSION);
session_unset();
session_destroy();
unset ($usuario);
unset ($senha);
include("login_code.php");
echo "<script> alert('Apelido ou senha nao confere!'); </script>"; 
exit;
}else{
//==============================
// CAPTURA DADOS DO USUARIO
while($linha=mysql_fetch_assoc($resultado)){
$usuario = $linha['login'];
$grupo = $linha['grupo'];
$bground_session=$linha['bground'];
$menu_session=$linha['menu'];
}

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ja tentei usar seu codigo e não obtive sucesso.

 

Agora estou tentando fazer funcionar com este aqui dos link abaixo, mas estou tendo problema no else, caso nao exista o usuario nao ta dando o echo, ja se existe o usuario e senha ele ta fazendo correto, mostra o rsultado e diz que existe;

 

http://stackoverflow.com/questions/16351866/simple-login-function-using-pdo

e também com este:

http://stackoverflow.com/questions/3030650/where-clause-confusion-with-pdo

 

 

o mais proximo que cheguei foi neste resultado abaixo, só falta eu conseguir fazer o else funcionar, fica tudo em branco e não da o echo dizendo que nao confere

 

código pdo:

 

 

 

//==============================
$resultado = $pdo->query("SELECT email, senha FROM usuarios WHERE email = '$email' AND senha = '$senha'");
if($resultado)
{
//percorre os resultados via o laço foreach
foreach($resultado as $linha){
//exibe o resultado
print $linha['email'] . " - " . $linha['senha'] . "<br>\n";
echo 'usuario ou senha confere';
}
}else{
echo "usuario ou senha nao confere";
}
//==============================

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente isso: na query acrescente um fetch all; ficaria assim:

$resultado = $pdo->query("SELECT email, senha
FROM usuarios
WHERE email = '$email' AND senha = '$senha'")->fetchAll();

fonte: http://www.rafaelwendel.com/2011/12/tutorial-pdo-php-data-object/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acabei de resolver meu problema com o método. E ficou funcionando 100% aqui. assim.

 

function checkUser($username, $password){
try {


//SELECT instruction
$query = "SELECT COUNT(*) FROM writer WHERE userName = :username AND password = :password";
//Open Connection
$conn = TConnection::open('database');
//Define PDO throw erros if happens any
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
//Prepared Statement
$stmt = $conn->prepare($query);
//Set BindValue
$stmt->bindValue(':username', $username);
$stmt->bindValue(':password', $password);
//Execute Query
$stmt->execute();
//store number of lines
$number = $stmt->fetchColumn();
//Close Connection
$conn = NULL;
//Return the Result
return ($number == 1) ? true : false;




} catch (Exception $e) {
throw new Exception($e->getMessage());
}
}

 

1 - O método recebe usuário e senha como parâmetros

2- Preparo um SELECT COUNT para retornar o número de linhas que tem o mesmo usuário e senha passados como parâmetro, ou seja, retorna 1 se o usuário digitou um nome de usuário e senha que existem no banco e 0 se não existe usuário e senha digitados pelo usuário.

 


//SELECT instruction $query = "SELECT COUNT(*) FROM writer WHERE userName = :username AND password = :password";

3 - Nessa parte abro conexão com o banco de dados através da classe que criei para isso, é uma classe estática chamada TConnection que tem o método Open. Dai você pode usar a sua classe de conexão com o banco que você criou, com o tanto que abra a conexão corretamente.


//Open Connection $conn = TConnection::open('database');

4 - Essa linha de código diz ao PDO que se acontecer algum erro comunique, ou seja, o PDO lança um erro.

//Define PDO throw erros if happens any
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

5 - Cria o prepared statement com a query que montei no início


 

//Prepared Statement
$stmt = $conn->prepare($query);

6 - Mostra para o PDO quais são os valores dos parâmetros "cegos" passados na query, aqueles que possuem o ":" na frente do nome.


//Set BindValue $stmt->bindValue(':username', $username); $stmt->bindValue(':password', $password);

7 - Executa a query


//Execute Query $stmt->execute();

8 - Guardo o número do resultado da query na variável $number. 1 ou 0


//store number of lines $number = $stmt->fetchColumn();

9 - Fecho a conexão com o banco de dados


//Close Connection $conn = NULL;

10 - Retorna o resultado, se 1 verdadeiro, se 0 falso. Ou seja, se retornar 1 será verdadeiro e o usuário foi autenticado com sucesso, se retorna 0 é falso e o usuário digitou o nome de usuário ou senha errados.


 

//Return the Result
return ($number == 1) ? true : false;

Compartilhar este post


Link para o post
Compartilhar em outros sites


$sql = "SELECT `login`, `grupo`, `bgground`, `menu`

FROM `usuarios`

WHERE `email`=:email AND `senha`=:senha";

 

$stm = $pdo->prepare( $sql );

 

$stm->bindValue( ':email', $email, PDO::PARAM_STR );

$stm->bindValue( ':senha', $senha, PDO::PARAM_STR );

 

if( $stm->execute() ){

if( $stm->rowCount() < 1 ){

unset($_SESSION);

session_unset();

session_destroy();

unset ($usuario);

unset ($senha);

include("login_code.php");

echo "<script> alert('Apelido ou senha nao confere!'); </script>";

}else{

$data = $stm->fetch( PDO::FETCH_ASSOC );

$usuario = $data['login'];

$grupo = $data['grupo'];

$bground_session = $data['bground'];

$menu_session = $data['menu'];

}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gabriel Jacinto,

 

Usei exatamente o seu codigo, e não funcionou.

 

Nao validou nem a parte de sucesso como a de usuario invalido.

 

Mas resolvi com o do camarada lá em cima, thx a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.