Jump to content


Photo

Cartão Virtual


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

#1 Mateus Tosta

Mateus Tosta

    Normal

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

Posted 10/02/2004, 10:46

Olá, estou com um problema no meu sistema de cartões virtuais, quero implementá-lo, mas ele está dando um problema, creio eu, na hora de enviar.
Vou postar aqui as páginas deste sistema. Caso alguém tenha um sistema deste tipo já em funcionamento e quiser me ceder, agradeço muito.

[B]Pág. construir[/B]

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<body bgcolor=white>
<table width="600" border=1><tr><td>
<table width="100%">
<tr>
<form name="postalenviado" method="post" action="visualizar.asp"> 
<td width="24" valign="bottom"> 
<input checked type="radio" value="postal1" name ="R1"> 
</font> 
</td> 
<td width="140"> 
<img border=2 height=86 src="imagens/postal1.jpg" width=134> 
</font> 
</td> 
<td width="12" valign="bottom"> 
<input type="radio" value="postal2" name ="R1"> 
</font> 
</td> 
<td width="151"> 
<font face="Arial"> 
<img border=2 height=87 src="imagens/postal2.jpg" width=134> 
</font> 
</td> 
</tr> 
<tr> 
<td width="24" valign="bottom"> 
<input type="radio" value="postal3" name="R1"> 
</font> 
</td> 
<td width="140"> 
<img border=2 height=88 src="imagens/postal3.jpg" width=135> 
</font> 
</td> 
<td width="12" valign="bottom"> 
<input type="radio" value="postal4" name="R1"> 
</td>
<td width="140"> 
<img border=2 height=88 src="imagens/postal4.jpg" width=135> 
</font> 
</td> 
</tr>
</table>
</td><td>
<font size=1 face="verdana,arial">Nome Destinatario : </font><input name="nomepara" size="28"> <br>
<font size=1 face="verdana,arial">E-Mail Destinatario : </font><input name="emailpara" size="22"> <br>
<font size=1 face="verdana,arial">Nome Remetente : </font><input name="nomede" size="28"> <br>
<font size=1 face="verdana,arial">E-Mail Remetente : </font><input name="emailde" size="22"><br>
<font size=1 face="verdana,arial">Mensagem : </font><br><textarea cols=26 name=mensagem rows=6></textarea> 
<input type="submit" name=uq value="Previsualizar"> 
</td></tr></table> 


[B]pág. visualizar[/B]

<% 
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DBQ=" & Server.MapPath("./postaisdigitais.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;MaxBufferSize=8192;Threads=20;", "username", "password"
Set rs = Server.CreateObject("ADODB.Recordset") 
Dim apanhar 
Dim ident 
Dim psw 

' erring diz-nos se o postal jà existe 
' exists.  Por defeito achamos que sim. 
Dim erring  

' Normalmente uso 0 e 1 como boolean,  
' julgo que ocupa menos recursos ao servidor do que 
' um True e False 
erring = 0  

' Recebemos a informação dos argumentos     
' relativos ao postal a ver; 
' ficamos a saber se é uma pré-visualização 
' ou um destinatário a querer ver o seu postal
apanhar = Request("uq") 
  
if apanhar = "Previsualizar" then  
     ' para pré-visualizar entra-se aqui 
     ' Criei sessions para guardar a informação, 
     ' assim posso aceder à mesma a qualquer altura
     session("postal") = Request("R1") 
     session("nomede") = Request("nomede") 
     session("emailde") = Request("emailde") 
     session("nomepara") = Request("nomepara") 
     session("emailpara") = Request("emailpara") 
     session("message") = Request("mensagem") 
else  
     ' aqui temos o identificador do postal digital,  
     ' para sabermos qual a ir buscar. 
     ' Percorremos a Base de Dados para ver se está  
     ' tudo correcto. 
     ident = Request("ident")  

     ' Buscamos a password 
     ' Não queremos que as pessoas vão ver os postais dos  
     ' só por mudar o ID de 12 para 13 e afins. 
     ' Com a password cada postal só pode ser visto
     ' pela pessoa que sabe a password, neste caso nem precisa de saber
     ' só tem de seguir o link que lhe foi enviado 
     psw = Request("psw")  

     ' Esta é uma simples declaração de SQL para  
     ' validar o Id e a password 
     SQLStmt = "SELECT * FROM postal WHERE ID_POSTAL = " & _ 
     CInt(ident) & " AND passw_postal = " & CInt(psw) 
     
     ' Executamos o SQL
     rs.Open SQLstmt, Conn, 1, 2 
     if rs.EOF then 
         'O Postal digital não existe ou a password está errada! 
         erring = 1  
     else  
        'O Postal existe.  Vamos preencher as variáveis de
        'sessão com a informação da BD. 
         session("postal") = rs("postal_postal") 
         session("nomede") = rs("nomede_postal") 
         session("emailde") = rs("emailde_postal") 
         session("nomepara") = rs("nomepara_postal") 
         session("emailpara") = rs("emailpara_postal") 
         session("mensagem") = rs("mensagem_postal") 
     end if 
     rs.close
end if 
%> 
<html><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 
<body bgcolor=white> 
<% 
' Aqui vamos verificar se houveram erros 
if erring <> 1 and (apanhar="Previsualizar" or apanhar="defora") and len(session("postal")) <> 0 then 
     ' ´se tudo estiver bem mostramo sa informação 
%> 
<div align="left"> 
 <table border="0" width="580" cellspacing="0" cellpadding="0"> 
  <tr> 
    <td width="50%" valign="top" align="left"><br> 
      <br> 
      <img src="imagens/<%=session("postal")%>.jpg" hspace="5" 
          border="2" WIDTH="354" HEIGHT="231"> 
    </td> 
    <td width="50%"> 
       <table border="0" cellspacing="3" width="100%" cellpadding="3" 
              bordercolor="#000000" height="202"> 
         <tr> 
           <td width="100%" height="109"> 
              <p align="left"> 
              <font face="Arial"><br> 
                <small>Remetente:</small> 
                <strong><%=session("nomede")%></strong> 
                <br> 
                <small>E-Mail Remetente:</small><small><strong> 
                <%=session("emailde")%></strong></small> 
                <br> 
                <small>Destinatario:</small><strong><small> 
                <%=session("nomepara")%></small></strong> 
                <br> 
                <small>E-mail Destinatario:</small><small><strong> 
                <%=session("emailpara")%></strong></small> 
              </font> 
            </td> 
          </tr> 

          <tr> 
            <td width="100%"> 
              <font face="Arial"> 
                <small>Message:</small><br> 
                <font size="2"><strong> 
                <%=session("message")%></strong> 
                </font> 
              </font> 
             </td> 
          </tr> 

          <tr> 
            <td width="100%" align="center" valign="middle" height="29"> 
            <% 
               'se apanhar = "seeit" mostramos os botões 
               'de envio e repetição 
               if apanhar="Previsualizar" then  
            %> 
              <p align="left"><br> 
              <a href="javascript:history.back()"> 
                Repetir 
              </a> 
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              <a href="enviar.asp"> 
                 Enviar 
              </a> 
             </td> 
           </tr> 
           </table> 
         </td> 
      </tr> 
   </table> 
</div> 

           <% 
            ' alguém está a ver um postal já criado 
            ' mostra-se o botão de resposta
            else  
           %> 
              <br><br><br> 
              <a href="construir.asp" target="_self" > 
                 Criar Tambem Um Postal 
              </a> 
           <% 
            end if 

' este else só funciona se não existir nenhum postal 
else 
%>  

<br><br> 
<center> 
  ERRO.... 
</center> 
<br> 

<% 
end if    


' Aqui é o local onde removemos Postais antigos, com mais de 30 diasall the postcards  

' Não quero ter uma Base de Dados cheia de lixo
' por isso apago todos os regitos com mais de 30 dias. 

' Pode perguntar.. "-Porque meteu este código aqui?" 
' A minha resposta é: 
' "- Porque é o local onde se veêm postais, 
' se vamos ver um postal apagamos os que jà não interessam 
' mas poderia estar em outro lado qualquer." 


' Vamos buscar a data do servidor
d = now()  

' vamos decrementar 30 dias à mesma 
d = DateAdd("d",-30,d) 

' Corremos o SQL que vai remover tudo 
SQLStmt = "DELETE FROM postal WHERE data_postal < #" & d & "#" 
rs.Open SQLStmt,Conn,1,2  
%> 
</body>    
</html> 


[B]pág. enviar[/B]
<% 
'Aqui conectamos com a Base de Dados
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DBQ=" & Server.MapPath("./postaisdigitais.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;MaxBufferSize=8192;Threads=20;", "username", "password"
Set rs = Server.CreateObject("ADODB.Recordset") 
' Esta é a variável usada como identificador  
' do postal digital
Dim identifier 
' goby é uma variável  boolean para  
' ajuda na validação 
Dim goby 
goby = 1    'lets start it with True 
%> 
<html><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 
<body bgcolor=white> 
<font face=3D"Arial"> 
<small><strong> 
<% 
' Validamos então o nome; tem de ter um tamanho 
' mínimo de 2 caracteres 
if len(session("nomepara")) < 2 then  
     ' se existir problemas marcamos logo a nossa variável  
     goby = 0  
end if 
if len(session("nomede")) < 2 then 
     goby = 0 
end if 

' validamos o email, 
If Len(session("emailde")) <= 5 Then  
     goby = 0 
Else 
     If InStr(1, session("emailde"), "@", 1) < 2 Then 
         goby = 0 
     Else 
         If InStr(1,session("emailde"), ".", 1) < 4 Then 
            goby = 0 
         End If 
     End If 
End If 
If Len(session("emailpara")) <= 5 Then 
     goby = 0  
Else 
     If InStr(1, session("emailpara"), "@", 1) < 2 Then 
         goby = 0 
     Else 
         If InStr(1,session("emailpara"), ".", 1) < 4 Then 
             goby = 0 
         End If 
     End If 
End If 

' Aqui verificamos se o texto não tem mais de 500 caracteres. 
If len(session("message")) >= 500 Then  
     goby = 0 
End If 

' Vamos agora verificar a nossa variável
' se estiver a zeros avisamos que hà erros
if goby = 0 then 
%> 
   <br><br><br><br><br> 
   <center>ERRO....</center><br> 
<% 
end if 


' Se não hà erros introduzimos a informação para a Base de Dados 
' e enviamos a informação por email para o destinatário 
If goby = 1 then  

        'fazemos o update à Base de Dados 
        SQLStmt = "INSERT INTO postal (" & _ 
              "passw_postal, postal_postal, nomepara_postal, nomede_postal, " & _ 
              "emailde_postal, emailpara_postal, mensagem_postal, data_postal) " & _ 
           "VALUES (" 

     ' vamos criar um número aleatório para que o postal fique protegido,
     ' usamos o randomize/rnd para criar um número aleatório
     randomize() 
     passw = Int((9999-1)*Rnd + 1) 
     SQLStmt = SQLStmt & passw & ",'" & session("postal") & _ 
               "','" & session("nomepara") & "','" & _ 
               session("nomede") & "','" & _ 
               session("emailde") & "','" & _ 
               session("emailpara") & "','" & _ 
               session("message") & "',Now)" 

     ' escrevemos a informação na BD definitivamente 
     rs.Open SQLStmt, Conn, 3, 3
     SQLStmt = "Select max(id_postal) AS maximo from postal"
     rs.Open SQLStmt, Conn, 1, 2
     ident = rs("maximo")

     ' Vamos aqui usar o componente ASPMail 
     ' pode usar um outro qualquer, este é o que é usado
     ' no servidor ond estamos
     Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
     Mailer.RemoteHost  = "mail.vipseven.com.br"
     Mailer.FromName    = "O Site"
     Mailer.FromAddress = "vipseven@vipseven.com.br"
     Mailer.AddRecipient " ", session("emailpara")
     Mailer.Subject = "Envio de Postal Digital para si de " & session("nomede") & " ..."
     
' vamos buscar a data que está no servidor
d = now()  

' vamos acrescentar-lhe 30 dias, para por no aviso de limite
' de expiração do postal digital
d = DateAdd("d",30,d) 
    
     enviar = "Deixe-me informá-lo de que " & session("nomede") & _ 
              Chr(13) & Chr(10) & _ 
              " enviou-lhe um postal digital. Para o ver " & _ 
              "siga o link :" & _ 
              Chr(13) & Chr(10) & Chr(13) & Chr(10) & _ 
              "http://www.pt4free.net/pd/visualizar.asp?uq=defora&" & _ 
              "ident=" & ident & _ 
              "&psw=" & passw & " " & Chr(13) & Chr(10) & _ 
              " o postal vai estar disponível no nosso site até ao dia " & _   
              formatDateTime(d,2) & _ 
              Chr(13) & Chr(10) & Chr(13) & Chr(10) & _ 
              Chr(13) & Chr(10) & _ 
              "        Obrigado,"   
     Mailer.BodyText = enviar    
     Mailer.SendMail
     If Err <> 0 Then 
         Response.write "ERRO..." 
         Response.Write "<br><br>" & "Houve um Erro : " & Err.description & "<br><br>" 
         Response.Write "<center><p>ERRO DO LADO DO SERVIDOR, " & "contacte o nosso webmaster.</p></center>" 
         goby = 0  
     Else 
         Response.Write "<br><br><br><center><p>POSTAL DIGITAL ENVIADO" & " SEM PROBLEMAS ...<br>" 
     End if 
     Set Mailer = nothing

End If
' penso que reparou que uso o JavaScript history.back 
' com este não perdemos a informação jà criada anteriormente 
%> 
<center>
    <a href="javascript:history.go('-2')"> 
        <Refazer> 
    </a> 
</center> 
</strong></small></font> 
</body> 
</html> 

Se alguém puder me ajudar ou me arrumar um sistema deste em funiconamento eu agradeço bastante.

#2 KAKO-

KAKO-

    loading: again.........

  • Usuários
  • 236 posts
  • Sexo:Não informado
  • Localidade:Joinville
  • Interesses:ASP / PHP

Posted 10/02/2004, 11:00

poste o tipo de erro, para tentar facilitar!
<?php
$nome = "Flávio Rodrigues";
$site = "http://www.expresso.com.br";
$idade = "21";
?>

nada é uma palavra esperando tradução...

#3 Mateus Tosta

Mateus Tosta

    Normal

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

Posted 10/02/2004, 12:30

O erro gerado é:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver] No current record.

/sistemasweb/pd/pd/enviar.asp, line 92

#4 KAKO-

KAKO-

    loading: again.........

  • Usuários
  • 236 posts
  • Sexo:Não informado
  • Localidade:Joinville
  • Interesses:ASP / PHP

Posted 10/02/2004, 14:18

e qual é a linha 92 do arquivo enviar.asp
??????
<?php
$nome = "Flávio Rodrigues";
$site = "http://www.expresso.com.br";
$idade = "21";
?>

nada é uma palavra esperando tradução...

#5 Mateus Tosta

Mateus Tosta

    Normal

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

Posted 10/02/2004, 14:51

Linha

90 ' escrevemos a informação na BD definitivamente
91 rs.Open SQLStmt, Conn, 3, 3
92 SQLStmt = "Select max(id_postal) AS maximo from postal"
93 rs.Open SQLStmt, Conn, 1, 2
94 ident = rs("maximo")

#6 ESPIA

ESPIA

    Eu mesmo!

  • Usuários
  • 157 posts
  • Sexo:Não informado
  • Localidade:Curitiba/PR
  • Interesses:Processos de Engenharia e Qualidade de Software, mais especificamente Gerência de Projetos, requisitos e regras de Negócios, Técnicas de Análise (AE, OO), Projeto, Codificação (qualquer ferramenta), SGBDR e WEB development.

Posted 10/02/2004, 15:05

Linha

90 ' escrevemos a informação na BD definitivamente
91 rs.Open SQLStmt, Conn, 3, 3
92 SQLStmt = "Select max(id_postal) AS maximo from postal"
93 rs.Open SQLStmt, Conn, 1, 2
94 ident = rs("maximo")

Desculpa a colher torta, mas a linha 92, que está dando o erro "No current record" não é essa não...
BB 20 4D 65 75 20 69 6E 74 65 72 65 73 73 65 20 61 71 75 69 20 E9 20 70 61 72 74 69 63 69 70 61 72 2C 20 64 65 20 66 6F 72 6D 61 20 70 6F 73 69 74 69 76 61 20 65 20 70 72 6F 64 75 74 69 76 61 2C 20 64 65 20 74 6F 64 61 73 20 61 73 20 64 69 73 63 75 73 73 F5 65 73 20 72 65 6C 61 63 69 6F 6E 61 64 61 73 20 61 20 48 61 72 64 77 61 72 65 2C 20 53 6F 66 74 77 61 72 65 20 65 20 57 65 62 20 44 65 76 65 6C 6F 70 6D 65 6E 74 2C 20 61 6C E9 6D 20 64 6F 20 70 72 F3 70 72 69 6F 20 72 65 6C 61 63 69 6F 6E 61 6D 65 6E 74 6F 20 65 20 64 65 73 65 6E 76 6F 6C 76 69 6D 65 6E 74 6F 20 68 75 6D 61 6E 6F 2C 20 65 6E 71 75 61 6E 74 6F 20 FA 74 69 6C 20 65 20 61 67 72 61 64 E1 76 65 6C 2E

» Deixe tudo um pouco melhor do que era antes de você chegar!

#7 Mateus Tosta

Mateus Tosta

    Normal

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

Posted 11/02/2004, 06:52

Mas no arquivo enviar a linha 92 é essa mesma

/sistemasweb/pd/pd/enviar.asp, line 92




1 user(s) are reading this topic

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

IPB Skin By Virteq