iscoku 0 Denunciar post Postado Fevereiro 17, 2011 eu não entendi direito o que está acontecendo com essa variável $nivel e esse vetor $a[], se alguém pudesse me ajudar a esclarecer isso acho que eu entenderia o que ta acontecendo de errado no meu programa ;/ if ($usuario == "anonimo") { $nivel = 1; $nomeusuario="Anônimo ($nivel)"; if ($f_estacao != '') $_SESSION['IDestacao'] = $f_estacao; $IDestacao = sessionvar('IDestacao'); } else if ($usuario != "") { $result= mysql_query("SELECT nivel,nome,acessando,id FROM auth WHERE usuario='$usuario' AND senha = PASSWORD('$senha')"); echo mysql_error(); if (mysql_num_rows($result) < 1) { stvermelho("Usuário/Senha Inválidos"); } else { $a = mysql_fetch_row($result); $nivel = $a[0]; $nomeusuario = $a[1]." ($nivel)"; $_SESSION['IDestacao'] = $a[2]; $IDusuario = $a[3]; Compartilhar este post Link para o post Compartilhar em outros sites
lucasao 5 Denunciar post Postado Fevereiro 17, 2011 A variável $a está pegando o resultado da consulta. E a variável $nivel está pegando $a[0], que é a primeira coluna da consulta. Compartilhar este post Link para o post Compartilhar em outros sites
Beto A. 0 Denunciar post Postado Fevereiro 17, 2011 Coloque seu código inteiro, e descreva qual erro foi gerado Ao que me parece a variável $nivel faz uma associação para indicar um nivel de usuário. Compartilhar este post Link para o post Compartilhar em outros sites
iscoku 0 Denunciar post Postado Fevereiro 17, 2011 $popup = get_i('popup'); $f_local = get_i('f_local'); $f_usuario = get_i('f_usuario'); $f_senha = get_i('f_senha'); $autenticacao = get_i('autenticacao'); if ($autenticacao == 1){ $_SESSION['usuario'] = $f_usuario; $_SESSION['senha'] = $f_senha; } $usuario = sessionvar('usuario'); $senha = sessionvar('senha'); $status = 'Login'; $stcor = ''; $nomeusuario= ''; $nivel = 0; $autorizado = 0; if ($usuario == "anonimo") { $nivel = 1; $nomeusuario="Anônimo ($nivel)"; if ($f_local != '') $_SESSION['idlocal'] = $f_local; $idlocal = sessionvar('idlocal'); } else if ($usuario != ""){ $result= mysql_query("SELECT nivel,nome,acessando,idusuario FROM usuarios WHERE usuario='$usuario' AND senha = PASSWORD('$senha')"); echo mysql_error(); if (mysql_num_rows($result) < 1) { stvermelho("Usuário/Senha Inválidos"); } else { $a = mysql_fetch_row($result); $nivel = $a[0]; $nomeusuario = $a[1]." ($nivel)"; $_SESSION['idlocal'] = $a[2]; $idusuario = $a[3]; if ($f_local != '') { mysql_query("UPDATE usuarios SET acessando = $f_local WHERE usuario = '$usuario'"); echo mysql_error(); $_SESSION['idlocal'] = $f_local; } $idlocal= sessionvar('idlocal'); $estacao = mysql_result(mysql_query("SELECT local FROM local WHERE idlocal='$idlocal'"),0); $q = "SELECT * FROM usuarios WHERE idusuario = '$idusuario' AND idlocal = '$idlocal'"; $r = mysql_query($q); if (mysql_num_rows($r)>0) $autorizado = 1; $ip = $_SERVER['REMOTE_ADDR']; if ($autenticacao == 1) { $q = "INSERT INTO log (usuario,tipo,info) VALUES ('$usuario', 'Login', '$ip')"; mysql_query($q); } } } O meu código mesmo é esse, que é 100% baseado naquele outro que eu mostrei...o que acontece é que ele só entra e cria sessão realmente com o usuário anônimo sem senha, qualquer outro usuário ele volta a pedir o login e a senha... ;/ Compartilhar este post Link para o post Compartilhar em outros sites
André Severino 3 Denunciar post Postado Fevereiro 17, 2011 Ele está dando senha invalidas, pq nao esta encontrando o usuario/senha digitados no banco de dados, ou tem algum problema com a variavel $usuario e $senha, vamos tentar descobrir Remova esse echo mysql_error() e da um or die no mysql para parar a execucao do programa caso esteja com algum erro. Ficaria assim $result= mysql_query("SELECT nivel,nome,acessando,id FROM auth WHERE usuario='$usuario' AND senha = PASSWORD('$senha')") or die ("Erro selecionar usuario: ".mysql_error()); //echo mysql_error(); Outra coisa, coloque isso, antes do if($usuario == "anonimo") echo '<pre>' var_dump($usuario, $senha); Compartilhar este post Link para o post Compartilhar em outros sites
iscoku 0 Denunciar post Postado Fevereiro 17, 2011 Bom, ficou assim Aonde antes aparecia direto Login e os campo de login e senha, agora primeiro apareceu string(0) "" string(0) "" e um espação em branco e depois os meus campos de login e senha, ai digitei o login 'root' e senha 'root123' que seria do "administrador", ai apareceu isso: string(4) "root" string(7) "root123" E depois novamente os campos de login e senha... Daonde veio esse vetor? Compartilhar este post Link para o post Compartilhar em outros sites
André Severino 3 Denunciar post Postado Fevereiro 21, 2011 Certo, e no banco de dados na tabela de login existe esse usuario root e senha root123 ? Ou essa senha q você está digitando é a senha de conexão do banco ? Compartilhar este post Link para o post Compartilhar em outros sites
iscoku 0 Denunciar post Postado Fevereiro 21, 2011 Certo, e no banco de dados na tabela de login existe esse usuario root e senha root123 ? Ou essa senha q você está digitando é a senha de conexão do banco ? isso eu resolvi, mas agora está dando outro problema... o problema está neese tópico: http://forum.imasters.com.br/topic/424372-problema-com-login/page__pid__1675472#entry1675472 Valeu ;D Compartilhar este post Link para o post Compartilhar em outros sites
André Severino 3 Denunciar post Postado Fevereiro 21, 2011 Você duplicou o topico, provavelmente vai ser excluido, mas de qualquer forma faça isso: Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 9 in C:\wamp\www\CB_online\auth.php on line 47 Problema com conexão no banco, querystring errada e etc..., vamos debugar e tentar achar o erro Após o mysql_query() coloque um or die, para debugar, e atente-se aos campos que você está selecionando $qry_1 = mysql_query("SELECT idlocal FROM local WHERE idlocal='$idlocal'") or die ("ERRO: ".mysql_error()); $estacao = mysql_result($qry_1,0); E poste o resultado :thumbsup: Outra coisa: string(4) "root" string(7) "root123" E depois novamente os campos de login e senha... Daonde veio esse vetor? Conseguiu descobrir? ^_^ , melhor do que falar para remover o PASSWORD() que ia funcionar :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Fevereiro 21, 2011 Iscoku não duplique tópicos pelo fórum isto atrapalha a organização do mesmo. Leia o tópico abaixo por gentileza: http://forum.imasters.com.br/topic/375800-orientacoes-para-uma-boa-participacao/ Estude mais sobre lógica de programação e analise as funções que usa antes de copiar e colar os códigos e tentar utiliza-los. Saber oque está fazendo é fundamental para o funcionamento a contento de seu sistema. Leia também alguns links que possam lhe ajudar melhor a entender seus erros no código: Para que serve a função PASSWORD() do MySQL: http://dev.mysql.com/doc/refman/4.1/pt/passwords.html http://www.php.net/manual/ Continue sempre estudando e aprimorando seus conhecimentos. ^_^ Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
iscoku 0 Denunciar post Postado Fevereiro 21, 2011 então André... fiz o que você falou, e o erro continua o mesmo Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 9 in C:\wamp\www\CB_online\auth.php on line 48 $estacao = mysql_result($qry_1,0); Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\wamp\www\CB_online\auth.php on line 52 if (mysql_num_rows($r)>0) E o vetor, veio depois que coloquei isso: echo '<pre>' var_dump($usuario, $senha); que você tinha falado... ;D Compartilhar este post Link para o post Compartilhar em outros sites
marcosfj1 0 Denunciar post Postado Fevereiro 21, 2011 Vixi deletaram o outro topico que eu tinha falado hehe Mas pelo que pesquisei no link do Perisculo sobre a função PASSWORD O que eu tinha falado nao esta totalmente errado Note: A função PASSWORD() é usada pelo sistema de autentificação no servidor MySQL, você NÃO deve uitlizá-las em suas próprias aplicações. Para este propósito utilize MD5() ou SHA1(). Veja também RFC-2195 para maiores informações sobre o tratamento de senha e autenticação segura em suas aplicações. Compartilhar este post Link para o post Compartilhar em outros sites
André Severino 3 Denunciar post Postado Fevereiro 22, 2011 Insira um or die("Erro 01: ".mysql_error()); em todas essas querys para imprimir o erro do mysql :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
iscoku 0 Denunciar post Postado Fevereiro 22, 2011 Insira um or die("Erro 01: ".mysql_error()); em todas essas querys para imprimir o erro do mysql :thumbsup: Coloquei o "or die" e deu isso: "Erro 01: Unknown column 'idlocal' in 'where clause'" Compartilhar este post Link para o post Compartilhar em outros sites
André Severino 3 Denunciar post Postado Fevereiro 22, 2011 Certo, verifique na tabela se realmente existe a coluna idlocal Compartilhar este post Link para o post Compartilhar em outros sites
iscoku 0 Denunciar post Postado Fevereiro 22, 2011 Certo, verifique na tabela se realmente existe a coluna idlocal Eu arrumei ali, passou a funcionar...ele loga com os outros usuários... Mas caso a senha ou o usuario não batesse, ele deveria chamar uma função, que teria uma mensagem dizendo que usuário e/ou senha não existem, essa é a função: function stvermelho($var) { global $status, $stcor; $status = stripslashes($var); $stcor = "FF7F7F"; } Porém ele não está chamando, ele só fica chamando os campos de usuario e senha até colocar um usuário e senha corretos. Já agradeço a ajuda de vcs, ela tem sido ÓTIMA! *-* Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Fevereiro 22, 2011 Mas caso a senha ou o usuario não batesse, ele deveria chamar uma função, que teria uma mensagem dizendo que usuário e/ou senha não existem, essa é a função: function stvermelho($var) { global $status, $stcor; $status = stripslashes($var); $stcor = "FF7F7F"; } Porém ele não está chamando, ele só fica chamando os campos de usuario e senha até colocar um usuário e senha corretos. Está função não faz nada a não ser declarar que as variáveis globais, retirar barras do parametro e definir uma cor hexadecimal. Se quer uma função que mostre uma mensagem de erro faça uma que retorne um valor para uso ou simplesmente use um echo 'Usuário ou senha inválido'; Você está mesmo estudando PHP ou simplesmente perguntando a cada dúvida que aparece? :huh: Pergunto isso porque sua dúvida é simples ao extremo. Está ao menos estudando o que fazem as funções? Sabe a lógica que deve ser usada? Se não souber lógica de programação cada virgula quer quiser fazer será um pesadelo. Como vai fazer pra identificar erros se não souber porque escrever e como funciona o código que escreve? Fica difícil trabalhar assim. Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
iscoku 0 Denunciar post Postado Fevereiro 22, 2011 Deixa eu me explicar então.. Esse programa que eu estou usando de base para fazer o meu, é um programa que o coordenador do meu estágio fez, e o que ele tinha explicado é que quando ele colocava isso: stvermelho("Usuário/Senha Inválidos"); daria a mensagem de erro, e faria o que você tinha dito... Ai pelo que você falou fui pesquisar e testar no programa dele...e na verdade o programa dela faz a mesma coisa que o meu...a minha falha maior foi ir atras dele, vou voltar a pesquisar as funções realmente, pq é a segunda vez que tiro uma dúvida com ele, e ele ta errado :wacko: Mas Valeu :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
André Severino 3 Denunciar post Postado Fevereiro 22, 2011 Sim, a função está confusa, no minimo você deverica por um return $status. Não testei o código, mas logicamente deve funcionar... // Aqui na função você vai retornar o conteudo passado @parametro que está armazenado na variavel $status // para depois imprimir no .html function stvermelho($var) { $stcor = '#FF7F7F'; $status = '<p style="background:'.$stcor.';">'.stripslashes($var).'</p>'; return $status; } // no teu codigo ficaria assim if (mysql_num_rows($result) < 1){ echo stvermelho("Usuário/Senha Inválidos"); } Ps.: você tb poderia dar o proprio print dentro da função, ou seja, há N maneiras para fazer isto :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
iscoku 0 Denunciar post Postado Fevereiro 22, 2011 Sim, a função está confusa, no minimo você deverica por um return $status. Não testei o código, mas logicamente deve funcionar... // Aqui na função você vai retornar o conteudo passado @parametro que está armazenado na variavel $status // para depois imprimir no .html function stvermelho($var) { $stcor = '#FF7F7F'; $status = '<p style="background:'.$stcor.';">'.stripslashes($var).'</p>'; return $status; } // no teu codigo ficaria assim if (mysql_num_rows($result) < 1){ echo stvermelho("Usuário/Senha Inválidos"); } Ps.: você tb poderia dar o proprio print dentro da função, ou seja, há N maneiras para fazer isto :thumbsup: Sim sim, eu resolvi diferente do que você falou ali, mas brigadão! Compartilhar este post Link para o post Compartilhar em outros sites