Ir para conteúdo

POWERED BY:

Arquivado

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

Leon

Cadastro de Usuários

Recommended Posts

E ai galera do fórum beleza!

Estou montando um sistema de cadastro de usuários e gostaria de saber como impedir 2 usuários com o mesmo login, o próprio access faz isso, mas retorna a página feia de erro do navegador. Como faço isso via código.

A pessoa vai se cadastrar e já existe o login Link (por exemplo) dai retorna aquela mensagem, usuário já existente escolha outro nome.

Como Faço?? -|

Exemplo do cadastro como está

 

cadastro.asp

<form name="form1" method="post" action="cadastro_action.asp">  <div align="center"><em><strong>    <font face="Verdana, Arial, Helvetica, sans-serif" size="2">Cadastro de     Novos Usuários<br>    </font></strong></em><br>  </div>  <table width="395" border="0" align="center" cellpadding="0" cellspacing="0">    <tr>       <td width="143" bgcolor="#006699"><strong><font color="#FFFFFF" size="2" face="Verdana, Arial, Helvetica, sans-serif"> Nome:</font></strong></td>      <td width="252">         <input name="tx_nome" type="text" size="20"></td>    </tr>    <tr>       <td bgcolor="#006699"><strong>      <font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#FFFFFF"> Senha:</font></strong></td>      <td>  <input name="tx_senha" type="password" size="20"></td>    </tr>    <tr>       <td bgcolor="#006699"><font color="#FFFFFF"> </font></td>      <td> </td>    </tr>    <tr>       <td colspan="2" bgcolor="#006699"> <div align="center"> <font color="#FFFFFF"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">           <input type="submit" name="Submit" value="Enviar">          <input type="reset" name="Submit2" value="Limpar">          </font></strong></font></div></td>    </tr>  </table></form>

cadastro_action.asp

<%	Set conexao = Server.CreateObject("ADODB.Connection")	conexao.open "DBQ=" & Server.mapPath("../banco/agenda.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}"	sqlInsereUsuario = "INSERT INTO tusuario (Usuario, Senha) VALUES ('"& request.form("tx_nome") &"','"& request.form("tx_senha") &"')"		Set rstInstusuario = Server.CreateObject("ADODB.RecordSet")	rstInstusuario.Open sqlInsereUsuario, Conexao	response.write "Cadastrado com sucesso"	set rstInstusuario = nothing	set Conexao = nothing %>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala, o Dreamweaver tem um comando para inserir essa função...

 

o código é assim:

 

<%// *** Redirect if username existsvar MM_flag="MM_insert";if (String(Request(MM_flag)) != "undefined") {' página que aparece quando usuário já existe  var MM_dupKeyRedirect="ERRO.asp";    var MM_rsKeyConnection=MM_conn_STRING;  var MM_dupKeyUsernameValue = String(Request.Form("email"));' COLUNA é onde está a lista de usuários na tabela de cadastro  var MM_dupKeySQL = "SELECT COLUNA FROM Tabela WHERE COLUNA='" + MM_dupKeyUsernameValue + "'"     var MM_adodbRecordset = "ADODB.Recordset";  var MM_rsKey = Server.CreateObject(MM_adodbRecordset);  MM_rsKey.ActiveConnection = MM_rsKeyConnection;  MM_rsKey.Source = MM_dupKeySQL;  MM_rsKey.CursorType=0;  MM_rsKey.CursorLocation=2;  MM_rsKey.LockType=3;  MM_rsKey.Open();  if (!MM_rsKey.EOF || !MM_rsKey.BOF) {    // the username was found - can not add the requested username    var MM_qsChar = "?";    if (MM_dupKeyRedirect.indexOf("?") >= 0) MM_qsChar = "&";    MM_dupKeyRedirect = MM_dupKeyRedirect + MM_qsChar + "requsername=" + MM_dupKeyUsernameValue;    Response.Redirect(MM_dupKeyRedirect);  }  MM_rsKey.Close();}%>
Para usar esse código você precisa criar uma conexão via ODBC no servidor...é isso!

Compartilhar este post


Link para o post
Compartilhar em outros sites

So você faze um If

 

If not rstInstusuario.EOF then      Conexao.CLOSE      response.redirect "erro.asp"End If

e colocar antes do

 

response.write "Cadastrado com sucesso"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testei o if e acusa esse erro

ADODB.Recordset error '800a0e78' Operação não permitida quando o objeto está fechado. /people/agenda/cadastro_action.asp, line 8

O código fica assim OK?
<%	Set conexao = Server.CreateObject("ADODB.Connection")	conexao.open "agenda"	sqlInsereUsuario = "INSERT INTO tusuario (Usuario, Senha) VALUES ('"& request.form("tx_nome") &"','"& request.form("tx_senha") &"')"		Set rstInstusuario = Server.CreateObject("ADODB.RecordSet")	rstInstusuario.Open sqlInsereUsuario, Conexao	if not rstInstusuario.EOF Then  Conexao.close  Response.Redirect("default.asp")	end if	response.write "Cadastrado com sucesso"	set rstInstusuario = nothing	set Conexao = nothing%>
Em relação ao código do Dreamweaver, criei a conexão via ODBC e o código coloco ele aonde??

Compartilhar este post


Link para o post
Compartilhar em outros sites

No seu caso ve teria de fazer uso do On Error Resume Next e fazer um IF para comparar, só que isso não é muito bom, pois se sua aplicação tiver outros erros durante o desenvolvimento você não ficará sabendo qual foi.

Eu aconselho a, antes de fazer o insert, fazer um SELECT com o nome do usuário, e um IF testando se veio algo dele, pois se veio é pq já existe o nome de usuário cadastrado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usando como base seu arquivo:

<%

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

conexao.open "DBQ=" & Server.mapPath("../banco/agenda.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}"

sqlInsereUsuario = "INSERT INTO tusuario (Usuario, Senha) VALUES ('"& request.form("tx_nome") &"','"& request.form("tx_senha") &"')"

 

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

rstInstusuario.Open sqlInsereUsuario, Conexao

response.write "Cadastrado com sucesso"

set rstInstusuario = nothing

set Conexao = nothing

 

%>

Fiz esse, teste ele e volte a postar
<%Set conexao = Server.CreateObject("ADODB.Connection")
conexao.open "DBQ=" & Server.mapPath("../banco/agenda.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}"
Usuario = Trim(Replace(Request.Form("tx_nome"),"'","''"))
Senha = Trim(Replace(Request.Form("tx_senha"),"'","''"))

Sql_Verifica_Usuario = "Select Usuario From tusuario Where Usuario = '"& Usuario &"';"
Set RS_Teste = Server.CreateObject("ADODB.RecordSet")
RS_Teste.Open Sql_Verifica_Usuario, Conexao, 1, 1

If RS_Teste.EOF or RS_Teste.BOF Then
sqlInsereUsuario = "INSERT INTO tusuario (Usuario, Senha) VALUES ('"& Usuario &"','"& Senha &"');"
conexão.Execute(sqlInsereUsuario)
response.write "Cadastrado com sucesso"
Else
 response.write "Já existe um usuári ocadastrado com esse nome!"
End If

RS_Teste.Close
Set RS_Teste = Nothing
Conexao.Close
set Conexao = nothing%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma dica simples e produtiva...

 

Antes de enviar os dados a sere gravado no BD, faça uma consulta...

 

if not consulta.EOF thenNome de usuario ja cadastradoelseInsert into()values()End if

Se o usuario for encontrado no BD... ele não cadastra, caso contrario cadastre..

 

Apenas um lógica simples...

 

Ythalo Rossy

Compartilhar este post


Link para o post
Compartilhar em outros sites

e aí salgado, valeu pela ajuda, porém o IIS do meu trabalho está acusando esse erro, ou seja não esta querendo fazer a conexão com o banco de dados todos os arquivos acusam erro na mesma linha. O mais estranho é que em casa funciona, no curso funciona e no trabalho não.

Eis a linha de erro se alguém descobrir essa coisa do além.

Linha de erro

conexao.open "DBQ=" & Server.mapPath("../banco/agenda.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}"

Erro que acusa

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)[Microsoft][Driver ODBC para Microsoft Access]Erro geral Não é possível abrir a chave 'Temporary (volatile) Jet DSN for process 0xee0 Thread 0x1f0 DBC 0x10f3284 Jet' do Registro.

Por isso vou testar em casa e amanhã posto e resultado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testei o if e acusa esse erro

ADODB.Recordset error '800a0e78' Operação não permitida quando o objeto está fechado. /people/agenda/cadastro_action.asp, line 8

O código fica assim OK?
<%	Set conexao = Server.CreateObject("ADODB.Connection")	conexao.open "agenda"	sqlInsereUsuario = "INSERT INTO tusuario (Usuario, Senha) VALUES ('"& request.form("tx_nome") &"','"& request.form("tx_senha") &"')"		Set rstInstusuario = Server.CreateObject("ADODB.RecordSet")	rstInstusuario.Open sqlInsereUsuario, Conexao	if not rstInstusuario.EOF Then  Conexao.close  Response.Redirect("default.asp")	end if	response.write "Cadastrado com sucesso"	set rstInstusuario = nothing	set Conexao = nothing%>
Em relação ao código do Dreamweaver, criei a conexão via ODBC e o código coloco ele aonde??
No lugar do seu código...ele substitui as funçoes deste...você só tem que criar um include para o file com a conexão ODBC (que fica em separado) tipo algo assim:<!--#INCLUDE=conexão.asp--!>

Compartilhar este post


Link para o post
Compartilhar em outros sites

e aí salgado, valeu pela ajuda, porém o IIS do meu trabalho está acusando esse erro, ou seja não esta querendo fazer a conexão com o banco de dados todos os arquivos acusam erro na mesma linha. O mais estranho é que em casa funciona, no curso funciona e no trabalho não.Eis a linha de erro se alguém descobrir essa coisa do além.Linha de erro

conexao.open "DBQ=" & Server.mapPath("../banco/agenda.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}"
Erro que acusa
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)[Microsoft][Driver ODBC para Microsoft Access]Erro geral Não é possível abrir a chave 'Temporary (volatile) Jet DSN for process 0xee0 Thread 0x1f0 DBC 0x10f3284 Jet' do Registro.
Por isso vou testar em casa e amanhã posto e resultado
Esse erro ocorre por causa das configurações do IIS...as vezes ele tá sobrecarregado e não funciona direito, principalmente em não servidores. No Win XP Pro de casa (onde testo minhas páginas) dá isso direto mas no servidor de meu site nunca deu...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse erro ocorre por causa das configurações do IIS...as vezes ele tá sobrecarregado e não funciona direito, principalmente em não servidores. No Win XP Pro de casa (onde testo minhas páginas) dá isso direto mas no servidor de meu site nunca deu...

Não teria como retirar a sobrecarga no IIS???O jeito é chega em casa e testa no PWS

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse erro ocorre por causa das configurações do IIS...as vezes ele tá sobrecarregado e não funciona direito, principalmente em não servidores. No Win XP Pro de casa (onde testo minhas páginas) dá isso direto mas no servidor de meu site nunca deu...

Não teria como retirar a sobrecarga no IIS???O jeito é chega em casa e testa no PWS
É só reinicializar a máquina...vê no que dá! Ah, se tiver outro aplicativo usando o BD ( o access aberto, p. ex.) fecha, pq tb pode dar esse erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu salgado o código funcionou legal no PWS, valeu pela ajuda e agradeço a todos também.Qualquer coisa estamos aí

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.