Jump to content
Fórum Script Brasil
  • 0

Cartão Virtual


Mateustg

Question

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 to comment
Share on other sites

5 answers to this question

Recommended Posts

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...