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

Cartão Virtual


Mateustg

Pergunta

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.

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

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...