Jump to content


Photo

Seção Em Cgi


  • Faça o login para participar
20 replies to this topic

#1 Fredera

Fredera

    Normal

  • Usuários
  • 78 posts
  • Sexo:Não informado

Posted 19/12/2003, 09:24

Fala Pessoal, estou com um probleminha e gostaria de saber se vcs podem me ajudar....

Estou fazendo um Sistema Interno Online para a empresa que trabalho, e estou com um probleminha no seguinte:
Quando o Usuário Loga no sistema (Usando: CGI, DBI e Banco:Oracle) eu tenho um contador de quantidade de acessos daquele usuário no sistema, só que o problema é o seguinte: quando eu logo com o meu usuário, ele conta normalmente os acessos, se eu fizer logoff e entrar com outro usuário ele não incrementa os acessos.
Ou seja, somente o primeiro usuário que eu logar ele vai incrementar, qualquer outro que eu colocar não incrementa.
Existe alguma coisa de seção no CGI que não esteja deixando incrementar o contador?
Não sei se entenderam, se não me falem que eu passo o código pra vcs.
Abraços
Fred
"A humanidade está perdendo seus maiores gênios...
Aristóteles já morreu a séculos, Newton bateu as botas faz tempo, Einstein morreu, e eu não tô passando muito bem... " rs

#2 prix

prix

    Duracell: E Duram, Duram, Duram...

  • Usuários
  • 562 posts
  • Sexo:Não informado
  • Interesses:keep walking ...
    jonny walker

Posted 19/12/2003, 13:02

depende de como seu script foi feito as vezes alguma rotina que tenha nele pode impedir isso ... teria que ver ele ... pra saber melhor...

print join'',(reverse  map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;


E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.

#3 MiDgArD

MiDgArD

    12 Horas

  • Banidos
  • PipPipPip
  • 144 posts
  • Sexo:Não informado
  • Localidade:Estou em São Paulo
  • Interesses:Visite-nos, temos a solução que você procura para seu site! Fazemos scripts para você!<br><br>AGORA COM SERVIÇOS PARA VOCÊ CADASTRAR SEU SITE, É DE GRAÇA, E TO ACEITANDO SUGESTÕES TBM PARA MELHORAR CADA VEZ MAIS.<br><br>Projetos em andamento:<br>Advanced Site Creator 2.0<br><br>HTTP://WWW.WEBINF.RG3.NET

Posted 02/01/2004, 20:23

nao sei se é parecido com o SQL, mas tente selecionar apenas 1 usuário, (LIMIT 1), ... e vai definindo mais regras na consulta, ...

#4 Fredera

Fredera

    Normal

  • Usuários
  • 78 posts
  • Sexo:Não informado

Posted 05/01/2004, 08:58

Fala pessoal, desculpe a demora....

O código é este...
Quaquer coisa me falem ou mandem um email: fredsilva_fmt@hotmail.com (y)



#!perl.exe


# use the DataBase Interface to connect to Oracle
use DBI;
use CGI qw(:standard);


$cgi = new CGI;


require 'configcfg';

my $url = $configcfg::url;
my $images = $configcfg::images;
my $css = $configcfg::css;


require 'logincfg';

my $username = $logincfg::username;
my $password = $logincfg::password;
my $conectado = $logincfg::conectado;


        my $login = "";
        my $senha = "";
        $userlog = "";

        $cgi->import_names('maincgi');


        $login = $cgi->param('usuario');
        $senha = $cgi->param('senha');


        $login =~ tr/A-Z/a-z/;
        $userlog = $login;

        #verifica login null
        if (($login eq "") or ($senha eq "")) {
           &configcfg::MostraLoginErro2;
        } else {
              $login = "'".$login."'";

################################################
# Analise de requisicao de processamento
################################################

        #####################
        # LOGIN
        #####################


        #### Ativa coneccao com o servidor ####

        $Db = DBI->connect("dbi:Oracle:", $username, $password,
                                  {AutoCommit => 0, PrintError => 0})
           || die("Can't login to Oracle: $DBI::errstr\n");
        $Db->{LongReadLen} = 4096;
        $Db->{LongTruncOk} = 1;


          $qry = $Db->prepare(qq(select nomeusu, senhausu, categusu, acessousu from tbuser where login = $login)) or die "Erro: " . $Db->errstr;
          if (! $qry->execute()) {
              my $err = $DBI::errstr;
              $qry->finish();
              die "Erro: " . $err;
          } else {

            ## Separa dados das colunas ##
           $qry->bind_columns( \$nomes ,\$senhausu, \$categ, \$acesso );
           if ( $qry->fetch() ) {
              $qry->finish();
              if ($senha eq $senhausu) {
                   ++$acesso;

                   $conectado = 'keyAccess';
                   $ip = '';
                   $ip = $ENV{REMOTE_ADDR}; #Numero IP
                   $ENV{REMOTE_ADDR} = "";
         $hora = time();  #Hora atual
         $horalocal = localtime(); #Hora Local Atual

                   ($nome)=split('\ ',$nomes);
                   &insereipacesso;
                        if ($categ eq 'C') {
                             $tipoacesso = 'Coordenador';
                             &categcord;
                        }
                        if ($categ eq 'O') {
                             $tipoacesso = 'Operador';
                             &categoper;
                        }
                        if ($categ eq 'V') {
                             $tipoacesso = 'Visualização';
                             &categview;
                        }
              } else {
                &configcfg::MostraLoginErro;
                &CloseDB;
              }
           } else {
           	 &configcfg::MostraLoginErro;
           	 &CloseDB;
           }
    }
        }


  &CloseDB;


#### FECHA DATABASE ################
sub CloseDB{
        # disconnect from the database
        $Db->commit;
  undef $acesso;
        $Db->disconnect();
        $Db = undef;
}#endsub
####################################

"A humanidade está perdendo seus maiores gênios...
Aristóteles já morreu a séculos, Newton bateu as botas faz tempo, Einstein morreu, e eu não tô passando muito bem... " rs

#5 prix

prix

    Duracell: E Duram, Duram, Duram...

  • Usuários
  • 562 posts
  • Sexo:Não informado
  • Interesses:keep walking ...
    jonny walker

Posted 08/01/2004, 00:27

o que tem na sub rotina
&insereipacesso;

se tiver algum erro deve ser nela pois eh quem faz a inserção.

print join'',(reverse  map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;


E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.

#6 Fredera

Fredera

    Normal

  • Usuários
  • 78 posts
  • Sexo:Não informado

Posted 08/01/2004, 07:18

Pessoal tá aí o código do insereipacesso, é somente para inserir o IP do usuário e o número do acesso dele(contador). Não sei se isso pode ter diferença em relação a seção de usuários.

Ontem estava testando, e acontedceu o seguinte:
Quando entro com meu usuário ele incrementa o acesso normalmente, entro várias vezes e ele vai incrementando.
Mudo para outro usuário e ele incrementa tb normalmente, sem problemas. Daí quando volto para o meu usuário ele não incrementa mais (só que eu coloquei uma variável mostrando o numero de acessos, e o sistema está pegando realmente o acesso do meu usuário), daí quando volto para o outro usuário ele pega o meu acesso.

Confuso?
Se não entenderem eu explico melhor....
Abraços
Fredera

sub insereipacesso{
	$qry = $Db->prepare(qq(update tbuser set acessousu ='$acesso', ipusu = '$ip' where login = $login)) or die "Erro UPDATE ACESSO: " . $Db->errstr;
	if ( $qry -> execute() ) {
    	$Db->commit;
    	$qry->finish();
    	undef $qry
        &CloseDB;
	}else {
        my $err = $DBI::errstr;
        $Db->rollback();
     $qry->finish();
     die("Erro ao atualizar o Acesso no Oracle: $err\n");
     &CloseDB;
	}
}

Edição feita por: Fredera, 08/01/2004, 07:19.

"A humanidade está perdendo seus maiores gênios...
Aristóteles já morreu a séculos, Newton bateu as botas faz tempo, Einstein morreu, e eu não tô passando muito bem... " rs

#7 prix

prix

    Duracell: E Duram, Duram, Duram...

  • Usuários
  • 562 posts
  • Sexo:Não informado
  • Interesses:keep walking ...
    jonny walker

Posted 09/01/2004, 00:12

certo ele nao ta voltando a impressao de acessos no user 1

porem ele continua imprimindo os acessos no 2 ?

pode ser alguma variavel trocada tambem...

print join'',(reverse  map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;


E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.

#8 Fredera

Fredera

    Normal

  • Usuários
  • 78 posts
  • Sexo:Não informado

Posted 09/01/2004, 08:07

certo ele nao ta voltando a impressao de acessos no user 1

porem ele continua imprimindo os acessos no 2 ?

pode ser alguma variavel trocada tambem...

Bom, deixa eu explicar melhor....

Eu logo com meu usuário (FRED) e logo normalmente com os acessos sendo incrementados normalmente, se eu ficar logando somente com meu usuário ele roda normal. Vamos supor que meu usuário esteja incrementando normalmente e esteja atualmente com acessos:100.
Quando logo com outro usuário (CARLOS) que está com 40 acessos, o sistema não atualiza os acessos deste usuário, ou seja, se eu continuar logando com este usuário ele não incrementa o Acesso.
Se eu volto a logar com o usuário FRED, os acessos que antes eram 100 ficam como 40, mas incrementam normalmente, ou seja ele pega o número de acesos do usuário CARLOS.

Deu pra entender melhor???

Daí pra testar, eu fiz o seguinte, eu já tinha uma variável que recebia os Acessos e incrementava, daí eu criei outra variavel pra receber o acesso atual(sem incremento), e pedi pra imprimir na tela, e aparece normal..
Ex: Se eu loguei com FRED e o acesso está em 100 aparece: 100...101
Se eu logo com CARLOS e o acesso está em 40 aparece: 40...41
Só que no FRED ele incrementa e no CARLOS não.

Será que isso realmente é alguma coisa de Seção ou é algum pau no meu código?
Espero respostas...
Abraços
Fredera
"A humanidade está perdendo seus maiores gênios...
Aristóteles já morreu a séculos, Newton bateu as botas faz tempo, Einstein morreu, e eu não tô passando muito bem... " rs

#9 prix

prix

    Duracell: E Duram, Duram, Duram...

  • Usuários
  • 562 posts
  • Sexo:Não informado
  • Interesses:keep walking ...
    jonny walker

Posted 09/01/2004, 22:41

bom, pode ser na sessao, no cookie....

mas parece estar certa a logica, pois vc tem a clausula where login = $login.

você ja tentou colocar a conexao em outro formato ?
so para testar ...

de vez em quando a module dbi da uns bugs ai...

print join'',(reverse  map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;


E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.

#10 Fredera

Fredera

    Normal

  • Usuários
  • 78 posts
  • Sexo:Não informado

Posted 10/01/2004, 17:16

bom, pode ser na sessao, no cookie....

mas parece estar certa a logica, pois vc tem a clausula where login = $login.

você ja tentou colocar a conexao em outro formato ?
so para testar ...

de vez em quando a module dbi da uns bugs ai...

Fala Prix, então... Como faço pra conectar de outra forma?
Não sei como faz...
Pode me dar uma ajuda?
"A humanidade está perdendo seus maiores gênios...
Aristóteles já morreu a séculos, Newton bateu as botas faz tempo, Einstein morreu, e eu não tô passando muito bem... " rs

#11 prix

prix

    Duracell: E Duram, Duram, Duram...

  • Usuários
  • 562 posts
  • Sexo:Não informado
  • Interesses:keep walking ...
    jonny walker

Posted 10/01/2004, 17:32

bom um exemplo de como vc usa:
$qry = $Db->prepare(qq(update tbuser set acessousu ='$acesso', ipusu = '$ip' where login = $login)) or die "Erro UPDATE ACESSO: " . $Db->errstr;
vc poderia usar assim:
$qry = $Db->prepare(qq{
UPDATE tbuser SET acessousu ='$acesso', ipusu = '$ip' WHERE login = $login
});
$qry->execute || die print("Erro UPDATE ACESSO: $Db->errstr");


As vezes o uso da {} ou das aspas etc pode mudar muito um resultado.... mas sei la tente ai... as vezes resolve, ja tive muito problema com montagem de query... e sei que algumas dao erro nao sei quanto a estrutura montada pra trabalho com oracle mas com mysql...

print join'',(reverse  map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;


E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.

#12 Fredera

Fredera

    Normal

  • Usuários
  • 78 posts
  • Sexo:Não informado

Posted 11/01/2004, 09:28

bom um exemplo de como vc usa:
$qry = $Db->prepare(qq(update tbuser set acessousu ='$acesso', ipusu = '$ip' where login = $login)) or die "Erro UPDATE ACESSO: " . $Db->errstr;
vc poderia usar assim:
$qry = $Db->prepare(qq{
UPDATE tbuser SET acessousu ='$acesso', ipusu = '$ip' WHERE login = $login
});
$qry->execute || die print("Erro UPDATE ACESSO: $Db->errstr");


As vezes o uso da {} ou das aspas etc pode mudar muito um resultado.... mas sei la tente ai... as vezes resolve, ja tive muito problema com montagem de query... e sei que algumas dao erro nao sei quanto a estrutura montada pra trabalho com oracle mas com mysql...

Blz, véio...
Eu vou testar amanha e te dou um feedback
Abraços
Fred
"A humanidade está perdendo seus maiores gênios...
Aristóteles já morreu a séculos, Newton bateu as botas faz tempo, Einstein morreu, e eu não tô passando muito bem... " rs

#13 Fredera

Fredera

    Normal

  • Usuários
  • 78 posts
  • Sexo:Não informado

Posted 13/01/2004, 10:59

Fala Prix, não deu certo o que vc me disse.
Ficou no mesmo...

Vc saberia me explicar, como eu faço para trabalhar com ID de Seção para cada conexão? Acho que é a única forma de fazer funcionar.
Mas não queria que fosse por cookie, pode ser por ID não pode?
Valeu...
"A humanidade está perdendo seus maiores gênios...
Aristóteles já morreu a séculos, Newton bateu as botas faz tempo, Einstein morreu, e eu não tô passando muito bem... " rs

#14 prix

prix

    Duracell: E Duram, Duram, Duram...

  • Usuários
  • 562 posts
  • Sexo:Não informado
  • Interesses:keep walking ...
    jonny walker

Posted 13/01/2004, 18:17

se você quiser vc pode usar uma module que ja existe eh ate mais simples ... de se fazer...

chama session.
vc a encontra em: http://search.cpan.org

se estiver complicado de mais me da um toque.

print join'',(reverse  map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;


E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.

#15 Fredera

Fredera

    Normal

  • Usuários
  • 78 posts
  • Sexo:Não informado

Posted 14/01/2004, 15:03

se você quiser vc pode usar uma module que ja existe eh ate mais simples ... de se fazer...

chama session.
vc a encontra em: http://search.cpan.org

se estiver complicado de mais me da um toque.

Cara, eu dei uma lida legal, mas to boiando.
Teria como vc me dar um help... :(

Abraços
Fred
"A humanidade está perdendo seus maiores gênios...
Aristóteles já morreu a séculos, Newton bateu as botas faz tempo, Einstein morreu, e eu não tô passando muito bem... " rs




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq