Ir para conteúdo

POWERED BY:

Arquivado

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

marcoantoniotot

Problema com login no php

Recommended Posts

Este é o codigo ->

 

<?php

// Verifica se houve POST e se o usuário ou a senha é(são) vazio(s)
if (!empty($_POST) AND (empty($_POST['usuario']) OR empty($_POST['senha']))) {
header("Location: index.php"); exit;
}

// Tenta se conectar ao servidor MySQL
mysql_connect('dbmy000.whservidor.com', '000', '000') or trigger_error(mysql_error());
// Tenta se conectar a um banco de dados MySQL
mysql_select_db('000') or trigger_error(mysql_error());

$usuario = mysql_real_escape_string($_POST['usuario']);
$senha = mysql_real_escape_string($_POST['senha']);

// Validação do usuário/senha digitados
$sql = "SELECT 'id', 'nome', 'nivel' FROM 'usuarios' WHERE ('usuario' = '". $usuario ."') AND ('senha' = '". sha1($senha) ."') AND ('ativo' = 1) LIMIT 1";
$query = mysql_query($sql);
if (mysql_num_rows($query) != 1) {
// Mensagem de erro quando os dados são inválidos e/ou o usuário não foi encontrado
echo "Login inválido!"; exit;
} else {
// Salva os dados encontados na variável $resultado
$resultado = mysql_fetch_assoc($query);

// Se a sessão não existir, inicia uma
if (!isset($_SESSION)) session_start();

// Salva os dados encontrados na sessão
$_SESSION['UsuarioID'] = $resultado['id'];
$_SESSION['UsuarioNome'] = $resultado['nome'];
$_SESSION['UsuarioNivel'] = $resultado['nivel'];

// Redireciona o visitante
header("Location: restrito.php"); exit;
}

?>

 

obs: eu usava ele a algum tempo mas depois que mudei de hospedagem o banco de dados tem php5 e outros recursos então esse escript de usuario e login php travou, o erro atual é o seguinte...

 

PHP Warning:  mysql_num_rows(): supplied argument is not a valid MySQL result resource in

 

Alguem pode ajudar ai esse script é muito importante para meus projetos ... :yes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso resolve?

$sql = "SELECT 'id', 'nome', 'nivel' FROM 'usuarios' WHERE ('usuario' = '". $usuario ."') AND ('senha' = sha1($senha)) AND ('ativo' = 1) LIMIT 1";

Compartilhar este post


Link para o post
Compartilhar em outros sites
eu testei a post4 deu esse resultado na linha 24 tem problema na esta linha apesar de que o php num mostra exatamente a linha correta mas tudo indica ser esta linha  mysql_num_rows()

anteriormente mostrava bastante esta linha mas mudou pra esta if (mysql_num_rows($query) != 1) { que ta ligada diretamente a esta

 

$sql = "SELECT 'id', 'nome', 'nivel' FROM 'usuarios' WHERE ('usuario' = '". $usuario ."') AND ('senha' = sha1($senha)) AND ('ativo' = 1) LIMIT 1";

agora aponta este mysql_num_rows()

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola senhores colegas programadores fiz novamente oque o colega falou no numero 4 com alguma alteração e o resultado ficou interessante so num consegui decifrar o problema mas apresente aqui ... ajudem ai...

 

SELECT 'id', 'nome', 'nivel' FROM 'usuarios' WHERE ('usuario' = '') AND ('senha' = sha1()) AND ('ativo' = 1) LIMIT 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou postar o código inteiro de novo vamo começa do zero realmente preciso deste código funcionando vamo la deve ser apenas uma virgula ao uma letra nalgum lugar ajudem ai ...

 

este é o logout.php

<?php
session_start(); // Inicia a sessão
session_destroy(); // Destrói a sessão limpando todos os valores salvos
header("Location: index.php"); exit; // Redireciona o visitante
?>
este é o restrito.php
<?php
// A sessão precisa ser iniciada em cada página diferente
if (!isset($_SESSION)) session_start();
$nivel_necessario = 2;
// Verifica se não há a variável da sessão que identifica o usuário
if (!isset($_SESSION['UsuarioID']) OR ($_SESSION['UsuarioNivel'] < $nivel_necessario)) {
// Destrói a sessão por segurança
session_destroy();
// Redireciona o visitante de volta pro login
header("Location: index.php"); exit;
}
?>
<h1>Página restrita</h1>
<p>Olá, <?php echo $_SESSION['UsuarioNome']; ?>!</p>
e por ultimo temos o problematico que esta ligado a todos os outros
validacao.php
<?php
// Verifica se houve POST e se o usuário ou a senha é(são) vazio(s)
if (!empty($_POST) AND (empty($_POST['usuario']) OR empty($_POST['senha']))) {
header("Location: index.php"); exit;
}
// Tenta se conectar ao servidor MySQL
mysql_connect('localhost', 'root', '') or trigger_error(mysql_error());
// Tenta se conectar a um banco de dados MySQL
mysql_select_db('database') or trigger_error(mysql_error());
$usuario = mysql_real_escape_string($_POST['usuario']);
$senha = mysql_real_escape_string($_POST['senha']);
// Validação do usuário/senha digitados
$sql = "SELECT `id`, `nome`, `nivel` FROM `usuarios` WHERE (`usuario` = '". $usuario ."') AND (`senha` = '". sha1($senha) ."') AND (`ativo` = 1) LIMIT 1";
$query = mysql_query($sql);
if (mysql_num_rows($query) != 1) {
// Mensagem de erro quando os dados são inválidos e/ou o usuário não foi encontrado
echo "Login inválido!"; exit;
} else {
// Salva os dados encontados na variável $resultado
$resultado = mysql_fetch_assoc($query);
// Se a sessão não existir, inicia uma
if (!isset($_SESSION)) session_start();
// Salva os dados encontrados na sessão
$_SESSION['UsuarioID'] = $resultado['id'];
$_SESSION['UsuarioNome'] = $resultado['nome'];
$_SESSION['UsuarioNivel'] = $resultado['nivel'];
// Redireciona o visitante
header("Location: restrito.php"); exit;
}
?>
e quando edito todos com minhas configurações de banco de dados o erro principal que ja se repetiu a 500 vezes é
PHP Warning:  mysql_num_rows(): supplied argument is not a valid MySQL result resource in E:\home\axpt\lll\aaa\xxx\validacao.php on line 25

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema pode ser nos seguintes pontos,

  • Pode ser erro de campo, por mais que você diga que não, confira de novo o exesço de confiança traz erros
  • Erro no retorno do mysql_num_rows, andes de você criar uma codição com essa função da um var_dump(mysql_num_rows($result)). se retornar 1 é porque você não está sabendo fazer a condição corretamente, se for 0 Por de Problema de SQL ou da forma que você está execultando não está corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ooow isso pod resolver mas tem um probleminha eu num sei como faze o tal do var_dump(mysql_num_rows($result)). num sei em qual linha colocar ok,,,



Gente compreendam eu num sou programador sou um curioso, autodidata criei um site em html http://www.asascp.com/assessoria/casa.html e um site em php dinamico com painel de controle e tudo http://www.liahfashion.com/ ja foi um verdadeiro milagre eu conseguir isso apos algumas muitas madrugadas pesquisando, agora meu desafio é criar outro site dinâmico para uma igreja evangélica, mas num vo cobra nada não to fazendo pela obra do criador, me ajudem ai mas por favor postem exemplos incluam no código da um pouco mais de trabalho pra vcs mas facilita minhas pesquisa aqui...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Massa, cara seus projetos, se você estiver interessando posso lhe ajudar, meu email é davidcosta@csthost.com.br. Agora vamos ao problema.

o var_dump() é uma função para ver a saida. você pode usar um echo ou um print_r().

 

Você pode usar essas funções para ver se funções está retornando valores 'aceitaveis'.

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php

// Verifica se houve POST e se o usuário ou a senha é(são) vazio(s)
if ($_POST['usuario'] == '') OR ($_POST['senha'] == '') {
    header("Location: index.php");
} else {

// Tenta se conectar ao servidor MySQL
$con = mysql_connect('dbmy000.whservidor.com', '000', '000') or die(mysql_error());
// Tenta se conectar a um banco de dados MySQL
mysql_select_db('000',$con) or die(mysql_error());

$usuario = $_POST['usuario'];
$senha = sha1($_POST['senha']);

// Validação do usuário/senha digitados
$sql = "SELECT id, nome, nivel FROM usuarios WHERE usuario = $usuario  AND senha = $senha AND ativo = 1 LIMIT 1";
$query = mysql_query($sql);
if (!$query) {
    // Mensagem de erro quando os dados são inválidos e/ou o usuário não foi encontrado
    echo "Login inválido!";
} else {
    // Salva os dados encontados na variável $resultado
    $resultado = mysql_fetch_array($query);

    // Se a sessão não existir, inicia uma
    if (!isset($_SESSION)) { session_start()} 

    // Salva os dados encontrados na sessão
    $_SESSION['UsuarioID'] = $resultado['id'];
    $_SESSION['UsuarioNome'] = $resultado['nome'];
    $_SESSION['UsuarioNivel'] = $resultado['nivel'];

    // Redireciona o visitante
    header("Location: restrito.php");
}
}
?>

Pronto tai, ve se vai ficar legal se nao posta o erro, meu email se quiser fechar projetos comigo srnalim@gmail.com abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

é ta errado mesmo ta assim

 

($_POST['usuario'] == '') OR ($_POST['senha'] == '')

 

o correto é assim

 

($_POST['usuario'] == '' OR $_POST['senha'] == '')

 

sem as aspas nas laterais do OR ou taca um AND no or eu nao testei o código pq uso pdo pra fazer isso nao comandos nativos do mysql... Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu colega brigadu vc é um genio mas so mais um detalhe sempre da login invalido em tudo não importa quantas vezes redesenho a tabela ...pelo menos o script ta funcionando so num acessa a pagina ... vo continua pesquisando aqui uma soluçao,,,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá sou novo no fórum e em PHP.

Vou postar aqui os meus códigos.

Consigo inserir os dados e retorno em localhost, porém quando subo no servidor on line consigo inserir e quando vou logar no banco retorna uma hash diferente.

 

inserir.php

 

<?php
if($_POST){
$cn = mysql_connect('localhost', 'root', "") or die(mysql_error());
mysql_select_db('login') or die(mysql_error());
}
$nome = utf8_decode($_POST['nome']);
$end = utf8_decode($_POST['end']);
$ap = utf8_decode($_POST['ap']);
$torre = utf8_decode($_POST['torre']);
$email =utf8_decode( $_POST['email']);
$senha =utf8_decode( $_POST['senha']);
mysql_query ("INSERT INTO usuarios (nome , end ,ap, torre, email , senha, nivel, status)
VALUES ('".$nome."', '".$end."', '".$ap."', '".$torre."', '".$email."', '".sha1($senha)."', 1 , 0)") or die(mysql_error());
if(mysql_affected_rows() == 1){ //verifica se foi afetada alguma linha, nesse caso inserida alguma linha
echo "<h2>Mensagem enviada com sucesso</h2>";
} else {
echo "Erro, não foi possível inserir no banco de dados";
}
mysql_close($cn);
?>
retornar.php
<?php
$conn = mysql_connect('localhost','root','') or die(mysql_error());
$banco = mysql_select_db('login') or die(mysql_error());
if(isset($_REQUEST['logar'])){
$email = $_REQUEST['email'];
$senha = $_REQUEST['senha'];
$sql = "SELECT email, senha FROM usuarios WHERE email = '".$email."' AND senha = '".sha1($senha)."'" ;
$query = mysql_query($sql)or die(mysql_error());
$qtda = mysql_num_rows($query);
if($qtda == 0){
echo $email = (!get_magic_quotes_gpc()) ? addslashes($email) : $email; echo '    ';
echo $senha = (!get_magic_quotes_gpc()) ? addslashes (sha1($senha)) : $senha;
}else{
$_SESSION['email'] = $email;
$_SESSION['senha'] = $senha;
header("Location:untitled.html");
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<link rel="stylesheet" type="text/css" href="css/estilo.css"/>
</head>
<body>
<form name="login" action="" method="POST">
Email: <input type="text" name="email" size="30" />
Senha: <input type="password" name="senha" size="30" />
<input type="submit" name="logar" value="logar" />
</form>
</body>
</html>
Banco de dados

+ Options
s_fulltext.png ID nome end ap torre email senha nivel status dot.gif Edit dot.gif Copy dot.gif Delete 1 Celso Oliveira Rua Nova Cidade, 68 601 Monte Carlos celsoliveira5@hotmail.com deba0172511d5701d964202f4e5de698d5e07c67 1 0 dot.gif Edit dot.gif Copy dot.gif Delete 2 Idailson Santana Rua Nova Cidade, 68 507 Interlagos idailsonn@bol.com.br deba0172511d5701d964202f4e5de698d5e07c67 1 1 dot.gif Edit dot.gif Copy dot.gif Delete 3 Conecta Rua Do Lado 401 Monte Carlos conecta@hotmail.com deba0172511d5701d964202f4e5de698d5e07c67 1 0
arrow_ltr.pngCheck All / Uncheck All With selected: dot.gif Change dot.gif Delete dot.gif Export

 

Retorno na tela

 

conecta@hotmail.com 7c222fb2927d828af22f592134e8932480637c0d

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.