Ir para conteúdo

Arquivado

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

iscoku

[Resolvido] Meio perdida

Recommended Posts

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

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

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

$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

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

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

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

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

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

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

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

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

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

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

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

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

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

×

Informação importante

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