Ir para conteúdo
Fórum Script Brasil
  • 0

Como Mostrar Os Nomes De Usuários Online


rodrigo_arf

Pergunta

Boa Tarde Amigos... :)

Estou desenvolvendo um sistema e preciso mostrar a cada usuario que efetua o Login os "nomes" dos usuarios online queria implementar uma rotina se possivel para atualizar a minha tabela em banco de dados Access a cada 30 segundos ou 1 minuto creio que não é muito dificil mas estou apanhando um pouco. Minha tabela de usuários online se chama "tab_sessao" onde os campos são so "Nome" e "HoraAcesso".

O "X" da questão é esse quando o usuario for redirecionado para a pagina Home ou seja a pagina inicial que exiba ele e os outros usuarios online tambem logo abaixo do menu. Como já disse meu banco é Access e para essa amostragem de usuarios online eu criei uma tabela chamada "tab_sessao"

vocês podem acessar o sistema atual funcionado neste link "http://www.subaquatica.com.br/thabis/" o sistema já faz isso mas esta sem consistencia entende esta feito do modo incorreto e eu precisava fazer essa parte de um modo correto. E por ultimo se acessarem o sistema, quando forem sair dele por favor cliquem em "Logoff" pois so assim que ele deleta a Sessão da pessoa, se fecharmos a janela durante a sessão, o Nome e a Hora de Acesso ficam na tabela que eu citei ai em cima. Preciso tambem ver a questão de segurança das Urls para nenhuma pessoa digitar a Url de pagina interna de usuario e o sistema levar mesmo assim. Se possivel acessem o site no IE pois no FF minhas classe em CSS estão todas distorcidas, não sei qual da mais trabalha para um programador ASP o IE ou o FF...

Atenciosamente

Rodrigo :rolleyes:

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Rodrigo beleza.

Olha eu acho que você está se confundindo sobre session, acredito que você tenha feito esta session fora da pagina login, o script, por isso que está valida a seção ainda.

Para você fazer um sistema em session você tem que levar dois fatores importantes em consideração:

Tempo de session definido em seu servidor.

Qual será o ponto onde as session serão criadas (geralmente ao fazer o login dados de acesso).

Vou te dar um exemplo:

Neste ponto você está criando uma session de acesso, com isto sua session será valida pelo tempo determinado pelo servidor, geralmente 30 minutos na mesma seção.

<%

SQL = "SELECT * FROM TABELA WHERE CAMPO='"&mail&"' and CAMPO='"&senha&"'"

Set xxxx = pppp.execute(SQL)

If xxxx.EOF then

Session("acesso") = "no"

Response.Redirect "alerta_login.asp"

Else

Session("acesso") = "yes"

Session("Nome") = xxxx("Nome")

Session("Sobre_Nome") = xxxx("SobreNome")

Response.Redirect "usuario_default.asp"

End If

%>

neste outro ponto você está fazendo a verificação para a session principal e não session intermediarias, e caso o usuário tenha fechado o navegador a session será invalida por que ela foi criada pela pagina login e não por um acesso a uma pagina com string que cria a session simplesmente sem login.

<%

If Session("acesso") <> "yes" Then

Response.Redirect "alerta_login.asp"

End If

%>

eu acredito que você errando nisto, você esta criando uma session individual e sem critérios,é isto, experimente criar com critérios de login e verificação de uma única session criada no momento do login.

Forte abraço.

:D

Link para o comentário
Compartilhar em outros sites

  • 0

Ola Marcio

O que você postou é de grande serventia para mim pude aprender mais, o que eu queria saber agora se eu faço isso tudo sem uso do banco, tipo não preciso armazenar nada em tabelas do banco, e outra duvida em todas as paginas a não ser o login eu tenho que colocar o trecho:

<%

If Session("ThabisAcesso") <> True then

Response.Write("você deve se logar primeiro para ter acesso aos serviços do sistema.")

Else

%>

<html>

Codigo HTML ...

Codigo HTML ...

Codigo HTML ...

Codigo HTML ...

</html>

<%

End If

%>

você Teria ai um exemplo de "global.asa" é que eu realmente estou num empresa em que o unico que aguenta as coisas aqui esta sendo eu, ultimamente e tenho que elaborar este projeto citado no primeio post meu. Mas de qualquer forma obrigado! pela atenção. Desculpe pela fonte deste texto sair piquena é que eu mexi aqui e não arrumei igual a do primeiro post rssss

Atenciosamente

Link para o comentário
Compartilhar em outros sites

  • 0

Rodrigo olá...fico feliz que o texto tenha ajudado você de alguma forma.

Rodrigo...sobre as session que você fez ela está com ecesso de programação e para fazer um login com session você deve usar um banco de dados sim Rodrigo para tornar as session mais eficaz.

Sobre seu script ai ele esta muito complicado e trará problemas a você, vou te dar um ex:

Se você montar assim como você colocou ele ira dar bug no seu script pelo motivo de estar tudo fechado, e você está usando a forma TRUE para validar a session que neste caso não é necessário a validação por que ela esta em texto...

Vou te dar um exemplo:

O TRUE seria usado caso fosse uma validação e não uma verificação, neste caso é uma verificação, a sua sessiom está em texto “yes” e não em verificação...verificando um texto ou uma digitação, por exemplo, se ousuario digita-se algo seria na forma true, porem neste caso você já declarou que é yes você so tem que ver se ela é diferente de yes ou não, por isto usa-se <> “yes” then , desta forma esta feita sua verificação, e sobre a verificação em todas as paginas, basta você colocar este script em todas as paginas depois da conexão do banco de dados.

<%

If Session("acesso") <> "yes" Then

Response.Redirect "alerta_login.asp"

End If

%>

você não preciza colocar else colocando o HTML dentro dele, deixaria seu script com bug.

Em relação ao banco de dados, ele será peça chave para você ter um bom sistema e poder adiministrar melhor, com isto se você montar na ordem correta, você poderá colocar outras session no futuro que ajudará você a aprimorar seu contato com seus usuários, vou te dar um exemplo:

você terá usuário femininos e masculinos, seria de grande ajuda para você personalizar textos que se referem ao usuário na primeira pessoa como:

Olá senhora Marta, seja bem-vinda!

Olá Senhor Marcos seja bem-vindo!

Isto você pode fazer com session e ir perssonalizando de acordo com seu projeto, vou te dar um ex:

De personalizar para texto para diferenciar o sexo:

<%

SQL = "SELECT * FROM TABELA WHERE CAMPO='"&mail&"' and CAMPO='"&senha&"'"

Set xxxx = pppp.execute(SQL)

If xxxx.EOF then

Session("acesso") = "no"

Response.Redirect "alerta_login.asp"

Else

Session("acesso") = "yes"

Session("Nome") = xxxx("Nome")

Session("Sobre_Nome") = xxxx("SobreNome")

Response.Redirect "usuario_default.asp"

'-----------------------------------------------------------------------------

'Define texto de acordo com o sexo se é Masculino ou Feminino.

If xxxx("Sexo") = "F" then

Session("sejaB") = "Olá "&Session("Nome")&", Seja bem-vinda ao nosso sistema!"

else

Session("sejaB") = "Olá "&Session("Nome")&", Seja bem-vindo ao nosso sistema!"

End IF

'------------------------------------------------------------------------------

End If

%>

e assim por diante...você vai criando um if end if para cada nova necessidade sua, não tem segredo, basta você colocar a validação em todas as paginas, e usar as session que você criou de acordo com seus projetos nos lugares apropriados, com isto você poderá fazer muita coisa legal para seu site em termos de segurança e interatividade com o usuário.

Boa sorte ai e força, qualquer coisa estamos ai Rodrigo.

Forte abraço.

Há ..já ia me esquecendo do Global.asa

Ai vai...

Salve este script e de o nome a esta pagina como: global.asa

OBS: caso queira criar uma outra application você tem que seguir 3 passos:

Declarar ela entre:

Passo 1

Application.Lock

Aqui ela não pode conter valor aciam de 0 e os campos caom dados textos devem estar vazio.

Application.UnLock

Passo 2

Na OnStart

Session.timeout = 60

Declare o valor e preencha o campo vazio, sempre o campo que tem um valor se coloca +1.

Passo 3

Na OnEnd

Session.timeout = 60

Delcare aqui o valor -1 eo valor texto iaô da OnStart.

Para chamar as aplicações em seus scripts e em suas paginas use:

<%=Application("Usuários_Ativos")%>

<script RUNAT=server LANGUAGE="VBScript">

//--------------------------------------------------------------------------------------------------

// aqui são declaradas todas as aplicações, porem todas devem ter o valor 0 ou vazio "".

Sub Application_OnStart

Application.Lock

Application("Usuários_Ativos") = 0

Application("IP") = ""

Application.UnLock

End Sub

//--------------------------------------------------------------------------------------------------

// Aqui é definido a entrada do usuário e é iniciada a session dele de acordo com o tempo definido

// caso ele saia do sistema por conta propria, o tempo determidado não influi, caso contrario

// a session dele é finaliza pelo tempo determinado.

// OBS: aqui todos os valores que foram declarados como 0 devem estar com +1 declarado, em relação

// aos vazios devem ter um valor sendo contrario de vazio.

sub Session_OnStart

Session.timeout = 60

Application.Lock

Application("Usuários_Ativos") = Application("Usuários_Ativos") + 1

Application("IP") = Application("IP") & ", " & Request.ServerVariables("REMOTE_ADDR")

Application.UnLock

end sub

//--------------------------------------------------------------------------------------------------

// Aqui é definido a saida do usuário e é finalizada a session dele de acordo com o tempo definido

// caso ele saia do sistema por conta propria, o tempo determidado não influi, caso contrario

// a session dele é finaliza pelo tempo determinado.

// OBS: aqui todos os valores que foram declarados como 0 devem estar com -1 declarado, em relação

// aos vazios devem ter um valor sendo igual ao valor declarado na aplicação OnStart.

sub Session_OnEnd

Session.timeout = 60

Application.Lock

Application("Usuários_Ativos") = Application("Usuários_Ativos") - 1

Application("IP") = Application("IP") & ", " & Request.ServerVariables("REMOTE_ADDR")

Application.UnLock

end sub

//--------------------------------------------------------------------------------------------------

</SCRIPT>

Salve este script e de o nome a esta pagina como: usuários_on_line.asp

<html>

<head>

<title>Documento sem t&iacute;tulo</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body>

<table border="0" cellspacing="0" cellpadding="0" align=center>

<tr>

<td width="132">Usuários Online: </td>

<td width="176"><%=Application("Usuários_Ativos")%></td>

<td width="177">&nbsp;</td>

<td width="146">&nbsp;</td>

<td width="146">&nbsp;</td>

</tr>

<tr>

<td width="132">IP do usuário: </td>

<td colspan="4" class=12p>

<%IP = Split(Application("IP"), ", ")

For Numero = 0 to Ubound(IP)

Response.write IP(Numero) & "<BR>"

NEXT

%>

</td>

</tr>

</table>

</body>

</html>

OBS: eu não coloque o atualização da pagina para você com medo de seu servidor dar bug de tanto atualizar a pagina, mas use o F5 e chame a pagina usuários_on_line.asp, depois abra ela mais uma vez em uma outra janela que ira aparecer dois usuários on line

Falow..Rodrigo forte abraço e espero que tudo de certo ai, há para mudar o tempo que finaliza a session por tempo...mude de 60 minutos para sua preferência.

Forte abraço e força ai o resto Deus ajuda.

:D

Link para o comentário
Compartilhar em outros sites

  • 0

Ultima Coisa rss

Encontrei este codigo na net e como eu coloco ele em Minha pagina

- Substituindo o apóstrofe(') pelo duplo apóstrofe ('')

<%

Function ExpurgaApostrofe(texto)

ExpurgaApostrofe = replace( texto , "'" , "''")

End function

%>

- Substituindo os caracteres e palavras maliciosas por vazio("").

<%

Function LimpaLixo( input )

dim lixo

dim textoOK

lixo = array ( "select" , "drop" , ";" , "--" , "insert" , "delete" , "xp_")

textoOK = input

for i = 0 to uBound(lixo)

textoOK = replace( textoOK , lixo(i) , "")

next

LimpaLixo = textoOK

end Function

%>

- Rejeitando os dados maliciosos:

<%

Function ValidaDados( input )

lixo = array ( "select" , "insert" , "update" , "delete" , "drop" , "--" , "'")

ValidaDados = true

for i = lBound (lixo) to ubound(llixo)

if ( instr(1 , input , lixo(i) , vbtextcompare ) <> 0 ) then

ValidaDados = False

exit function}

end if

next

end function

%>

Minha verificação é essa aqui em baixo so preciso de uma função que compare quando o cara digitar tudo maiusculo com os dados do banco entende... tipo se eu digitar agora User e Pass maiusculo ele se loga issso não pode acontecer.... segue meu codigo a baixo...

link da pagina rodando www.subaquatica.com.br/thabis

<%

var_ip = Request.ServerVariables("REMOTE_ADDR")

var_data = Date

var_hora = Time

var_username_e = Request.Form("txt_username")

var_password_d = Request.Form("txt_password")

'raplace as variaveis para minusculo

var_username = LCASE(var_username_e)

var_password = LCASE(var_password_d)

'replace no Username

var_username = replace(var_username,"'","''")

var_username = replace(var_username,"#","''")

var_username = replace(var_username,"$","''")

var_username = replace(var_username,"%","''")

var_username = replace(var_username,"¨","''")

var_username = replace(var_username,"&","''")

var_username = replace(var_username,"'or'1'='1'","''")

var_username = replace(var_username,"--","''")

var_username = replace(var_username,"insert","''")

var_username = replace(var_username,"drop","''")

var_username = replace(var_username,"delet","''")

var_username = replace(var_username,"xp_","''")

var_username = replace(var_username,"select","''")

var_username = replace(var_username,"*","''")

'replace no Password

var_password = replace(var_password,"'","''")

var_password = replace(var_password,"#","''")

var_password = replace(var_password,"$","''")

var_password = replace(var_password,"%","''")

var_password = replace(var_password,"¨","''")

var_password = replace(var_password,"&","''")

var_password = replace(var_password,"'or'1'='1'","''")

var_password = replace(var_password,"--","''")

var_password = replace(var_password,"insert","''")

var_password = replace(var_password,"drop","''")

var_password = replace(var_password,"delet","''")

var_password = replace(var_password,"xp_","''")

var_password = replace(var_password,"select","''")

var_password = replace(var_password,"*","''")

'muda o nome das variaveis

Session("usern") = var_username

Session("passw") = var_password

'execução dos comandos

strPath = Server.MapPath("dados\banco.mdb")

Set objConn = Server.CreateObject("ADODB.Connection")

objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPath & ";"

Set objRec = Server.CreateObject("ADODB.RecordSet")

strSql = "SELECT Nome, Username, Password from tab_users where Username = '"& Session("usern") &"' and Password = '"& Session("passw") &"'"

if Session("usern") <> "" and Session("passw") <> "" then

objRec.Open strSql, objConn

if objRec.EOF then

Session("ThabisAcesso") = "no"

Response.Redirect "erro.asp"

objConn.Close

objRec.Close

Set objConn = Nothing

Set objRec = Nothing

else

Session("ThabisAcesso") = "yes"

Session("Nome") = objRec("Nome")

'Response.Cookies("Thabis Technology") = objRec("Nome")

strSql_1 = "INSERT INTO tab_acessos (Nome, DataAcesso, IpUser, HoraAcesso) values('"& Session("Nome") &"','"& var_data &"','"& var_ip &"','"& var_hora &"')"

'strSql_2 = "INSERT INTO tab_sessao (Nome, HoraAcesso) values('"& Session("Nome") &"','"& var_hora &"')"

Set objRec = objConn.Execute(strSQL_1)

'Set objRec = objConn.Execute(strSQL_2)

Response.Redirect "entrando.asp"

objConn.Close

objRec.Close

Set objConn = Nothing

Set objRec = Nothing

end if

else

Response.Redirect "erro.asp"

end if

%>

Link para o comentário
Compartilhar em outros sites

  • 0

Olá rodrigo, coloquei está função ai para você que vai te ajudar e muito, para adapitar ela aos seus scripts é muito facil.

agora sobre as letras em maiusculo, eu acredito que você está fazendo login por campo texto sem critério, porem isto é uma besteira que ninguém mais usa, seria mais facil você transformar tudo em minuscula do que ficar quebrando a cabeça com javascript, não que é dificil, mas tempo é dinheiro e ficar pensando muito no obvio ai já é de mais, vou te dar uma dica, cuidado para não ficar parado na mesmice, seja objetivo e pratico sem querer inventar, porem enovar não é inventar coisas absurdas, é a mesma coisa que paulo coelho, ele pega uma história fantastica de uma pessoa anonima e transforma em 11 minutos e ganha 5 milhoes de dollares em um mês, o que eu quiz dizer é que você tem que explorar seu talento e aperfeisuar ele, por bill antes de ficar rico era um mane de oculos que niguem dava um pouto por ele, mas o cara se deu bem por que é teimoso e aperfeisuou seu talento...win95...win98..winME...e ai vai.

boa sorte e acredite em você e em Deus e pé na estrada e as boas pessoas sempre vão estar lá também.

forte abraço.

<%

'esta função bloqueia caracteres especias, porem você pode modificar de acordo com seu projeto Rodrigo.

Function NOME_DA_FUNCAO(variavel)

bloqueado = "<, >, <>, <=, >=, "&Chr(34)&", =, \, /, *, <, >, |, ', #, $, %, ¨, &, *, -, +, @, _, ^, `, ;, ], ~, [, ´, ¡, ¢, £, ¥, §, ©, «, ¬, ®, °, ±, ´, µ, ¶, ·, ¸, », ¿, Å, Æ, não, Ø, ß, å, æ, não, ÷, ø, , ƒ, „, …, † ,‡ , ˆ, ‰, ‹, Œ, ‘, ’, “, ”, •, –, —, ˜, ™, ›, œ, €,"

erro_bloqueado = split(bloqueado,", ")

for x = lbound(erro_bloqueado) to Ubound(erro_bloqueado)

if instr(variavel, erro_bloqueado(x)) > 0 then

NOME_DA_FUNCAO = true

exit for

Else

NOME_DA_FUNCAO = false

End if

next

End function

%>

<%

'Este aqui chama a função, coloquei o reques.form como exemplo, mas você pode usar qualquer um no lugar dele, basta ter uma logica.

if NOME_DA_FUNCAO(""& request.Form("exemplo") &"") = true then

' Redireciona o usuário a pagina de erro.

else

' Redireciona o usuário para a ação de do script.

end if

%>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...