Portal Chamar Táxi

Workshop de ASP

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Uso de CDONTS para script de recomendar a um amigo em ASP




Uso do componente de servidor CDONTS em ASP para o envio de correio eletrônico com o servidor. Exemplo de script para que os visitantes possam recomendar a página a um amigo.

Por Fernando Ortiz





Este é um exemplo completo e bastante simples de como enviar um correio usando o componente CDONTS de IIS.

Tal componente está presente em muitas das versões de Windows em seu modo servidor, como Windows NT 4 ou Windows 2000, mas não assim em Windows 98, por não dispor de um servidor de envio de correio (SMTP). Atenção, que no Windows NT e 2000 teráimos que ter o servidor SMTP corretamente configurado e os usuários de Windows XP, que não dispõem essa ferramenta desde o princípio, embora poderiam obtê-la através de outro sistema Windows.

Script para recomendar a um amigo

O exercício seguinte é um script que permite mandar um e-mail desde nossa página a um amigo do visitante que o deseje. É um dos típicos sistemas de "recomenda a um amigo".

Os dados para preencher o e-mail, colocaremos a mão. Se queremos enviar os dados de um formulário só temos que recolher com as instruções tão simples como estas:

cBody = Request.Form("Body")
cPara = = Request.Form("Amigo")

E agora o exemplo, no qual se mostra como enviar a um amigo, uma cópia e uma cópia oculta, o comum.

<%@ Language=VBScript%>
<html>

<head>
<title>Enviar a um amigo</title>

</head>
<body><%
Dim cBody, n

For Each n In Request.Form
cBody = cBody & n & ": " & Request.Form(n) & chr(13)
Next

Set oCDO = Server.CreateObject("CDONTS.NewMail")

'Atribuimos as propriedades ao objeto
oCDO.From = "fernando@seudominio.com"
oCDO.To = "foc@seudominio.com"
oCDO.Subject = "Assunto da mensagem"
oCDO.Body = cBody
'oCDO.Cc = "resal@seudominio.com;webmaster@seudominio.com"
oCDO.Bcc = "quinqui@seudominio.com"
'oCDO.MailFormat = 0

oCDO.Send

Set oCDO = Nothing 'Liberar...
'Mostramos mensagem de que se enviou com sucesso.
Response.Write "Foi enviada Ok, que fácil!!"

%>
</body>
</html>

Bom, amigos, espero que possa servir, como pode-se ver, há pouco o que programar!

 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Servidores nos EUA e o asp




Quando programamos em ASP em servidores que não são de nosso país temos que ter em conta uma série de detalhes de internacionalização dos números, datas, etc.

Por Fabio Núñez Iturriaga





Quando usamos asp em servidores americanos há que ter em conta alguns pequenos detalhes na hora de programar. Principalmente estes problemas derivam-se dos formatos de data e dos formatos de decimais.

Problemas com as datas:

Ao ser o asp uma linguagem de servidor, ou seja, que o servidor é o que o interpreta e nos devolve código html. O problema vem quando o servidor de USA, nos interpreta as datas, e não as devolve com o formato americano, ou seja:

formato americano: mês/dia/ano
formato brasileiro: dia/mês/ano
Isto pode dar lugar a confusões entre os usuários da web, que podem ver a data de um artigo e confundi-la.

Problemas com os decimais:

O outro problema vem dado pelo formato dos decimais dos números, já que no formato americano os decimais se representam por vírgula e em brasileiro se determinam por ponto.

formato americano: 2,78
formato brasileiro: 2.78

Solução aos problemas:

Todos estes problemas têm uma solução mais fácil do que a esperada já que há que colocar somente uma linha de código em cada página para consertar este problema:

<%@LCID = 1034%>

Este código deve substituir ao habitual que colocamos em toda página asp:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

O número de LCID acima, 1046, colocará os ajustes de lugar sobre o servidor ao brasileiro, mudar o lugar a seu próprio país o qual você terá que usar a Carta LCID no fundo desta página para encontrar o que seu próprio lugar ID numera e logo substituir 1034 pelo seu próprio número de LCID.

Para que isto funcione é necessário que estejam instalados em seu servidor os arquivos necessários para a mudança de idioma, normalmente têm múltiplas línguas instaladas, mas no caso de colocar uma não instalada em seu servidor receberá o seguinte erro 'LCID especificado não é disponível'. Nesse caso, você só poderá solucionar isto entrando em contato com o administrador de seu servidor para que a instale.

Isto só mudará o formato mostram as datas, vezes, e divisas, porém não moverá datas a outra zona horária.
Locale Description LCID Locale Description LCID
Afrikaans 1078 Icelandic 1039
Albanian 1052 Indonesian 1057
Arabic - United Arab Emirates 14337 Italian - Italy 1040
Arabic - Bahrain 15361 Italian - Switzerland 2064
Arabic - Algeria 5121 Japanese 1041
Arabic - Egypt 3073 Korean 1042
Arabic - Iraq 2049 Latvian 1062
Arabic - Jordan 11265 Lithuanian 1063
Arabic - Kuwait 13313 FYRO Macedonian 1071
Arabic - Lebanon 12289 Malay - Malaysia 1086
Arabic - Libya 4097 Malay - Brunei 2110
Arabic - Morocco 6145 Maltese 1082
Arabic - Oman 8193 Marathi 1102
Arabic - Qatar 16385 Norwegian - Bokmål 1044
Arabic - Saudi Arabia 1025 Norwegian - Nynorsk 2068
Arabic - Syria 10241 Polish 1045
Arabic - Tunisia 7169 Portuguese - Portugal 2070
Arabic - Yemen 9217 Portuguese - Brazil 1046
Armenian 1067 Raeto-Romance 1047
Azeri - Latin 1068 Romanian - Romania 1048
Azeri - Cyrillic 2092 Romanian - Moldova 2072
Basque 1069 Russian 1049
Belarusian 1059 Russian - Moldova 2073
Bulgarian 1026 Sanskrit 1103
Catalan 1027 Serbian - Cyrillic 3098
Chinese - China 2052 Serbian - Latin 2074
Chinese - Hong Kong SAR 3076 Setsuana 1074
Chinese - Macau SAR 5124 Slovenian 1060
Chinese - Singapore 4100 Slovak 1051
Chinese - Taiwan 1028 Sorbian 1070
Croatian 1050 Spanish - Spain 1034
Czech 1029 Spanish - Argentina 11274
Danish 1030 Spanish - Bolivia 16394
Dutch - the Netherlands 1043 Spanish - Chile 13322
Dutch - Belgium 2067 Spanish - Colombia 9226
English - Australia 3081 Spanish - Costa Rica 5130
English - Belize 10249 Spanish - Dominican Republic 7178
English - Canada 4105 Spanish - Ecuador 12298
English - Caribbean 9225 Spanish - Guatemala 4106
English - Ireland 6153 Spanish - Honduras 18442
English - Jamaica 8201 Spanish - Mexico 2058
English - New Zealand 5129 Spanish - Nicaragua 19466
English - Phillippines 13321 Spanish - Panama 6154
English - South Africa 7177 Spanish - Peru 10250
English - trinidad 11273 Spanish - Puerto Rico 20490
English - United Kingdom 2057 Spanish - Paraguay 15370
English - United States 1033 Spanish - El Salvador 17418
Estonian 1061 Spanish - Uruguay 14346
Farsi 1065 Spanish - Venezuela 8202
Finnish 1035 Sutu 1072
Faroese 1080 Swahili 1089
French - France 1036 Swedish - Sweden 1053
French - Belgium 2060 Swedish - Finland 2077
French - Canada 3084 Tamil 1097
French - Luxembourg 5132 Tatar 1092
French - Switzerland 4108 thai 1054
Gaelic - Ireland 2108 Turkish 1055
Gaelic - Scotland 1084 Tsonga 1073
German - Germany 1031 Ukrainian 1058
German - Austria 3079 Urdu 1056
German - Liechtenstein 5127 Uzbek - Cyrillic 2115
German - Luxembourg 4103 Uzbek - Latin 1091
German - Switzerland 2055 Vietnamese 1066
Greek 1032 Xhosa 1076
Hebrew 1037 Yiddish 1085
Hindi 1081 Zulu 1077
Hungarian 1038







 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Como fazer zonas aleatórias em asp




Script em ASP para criar uma página com alguns conteúdos que mudem aleatoriamente em cada visita.

Por Fabio Núñez Iturriaga





Uma idéia interessante para dar um pouco de dinamismo adicional a um web design é criar áreas onde se mostre um conteúdo aleatório, que mude cada vez que se carrega a página.

Um exemplo desta idéia pode ser mostrar uma imagem no cabeçalho da página diferente, mas não ficamos por aí, também podemos incluir mensagens promocionais ou links distintos que acompanhem à imagem.

O exercício é muito simples. Deve-se gerar um número aleatório, para o que utilizaremos algumas funções matemáticas de ASP, e uma estrutura condicional para mostrar u conteúdo diferente dependendo do número aleatório.

O código

As zonas aleatórias em ASP se conseguiriam com um código parecido ao seguinte:

<%
'Definimos uma constante para representar o número total de zonas aleatórias.

Const totalzonas = 4

' Iniciamos o gerador do número ao acaso.
' Este é o comando que nos dá números ao acaso quando utilizamos Rnd mais adiante.

Randomize


' A fórmula para gerar um número ao acaso em uma gama é:
'
' Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
'
' onde upperbound seria o número máximo a alcançar
' e lowerbound seria o número mínimo a alcançar
' em nosso caso o lowerbound será de 1
' e o resto do upperbound - o lowerbound será representado pela
' constante totalzonas, que determina o número total de zonas

Dim zona ' variável que determinará a zona aleatória

' a forma descrita determinará um número ao acaso entre 1 e o número de zonas(4)

zona = Int((totalzonas * Rnd) + 1)

' A seguir através de uma condicional if determinaremos que zona se mostrará
%>

<% if zona=1 Then ' se o número aleatório for um 1 me mostrará a seguinte zona%>

<b>zona1</b>

<%End if%>

<% if zona=2 Then ' se o número aleatório for um 2 me mostrará a seguinte zona%>

<b>zona2</b>

<%End if%>

<% if zona=3 Then ' se o número aleatório for um 3 me mostrará a seguinte zona%>

<b>zona3</b>

<%End if%>

<% if zona=4 Then ' se o número aleatório for um 4 me mostrará a seguinte zona%>

<b>zona4</b>

<%End if

' O beneficio de usar este método aleatório é que não só se pode fazer
' imagens aleatórias, como também se pode fazer qualquer coisa que seja aleatória
' um flash, uma tabela, um formulário.... simplesmente há que colocá-lo
' entre a condicional

%>
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Selects dependentes com ASP e banco de dados




Sistema para que as opções de um select se vinculem ao que foi selecionado em outro select, mantendo todas as opções em um banco de dados.

Por Eugenia Bahit





Este é um sistema de "selects dependentes" (ou seja, que interagem um com outro), tomando de uma só vez os dados desde uma banco de dados Access.

Só será necessário 1 módulo ASP (selecs_dependentes.asp) e o banco de dados correspondente (ssdd.mdb).
Referência: Temos outro exemplo de selects dependentes no qual se trabalha unicamente do lado do cliente com Javascript, para quem se interessar de mais uma opção como essa.


Neste exemplo, se trabalhará com dois selects:

- Um de países
- Outro de províncias ou estados
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Banco de dados ssdd.mdb
O banco de dados deverá conter duas tabelas relacionadas entre si.
TABELA CAMPOS
paises idPais (autonumérico) [chave principal]
pais (texto)
provincias pais (numero)
idProvincia (autonumérico) [chave principal]
provincia (texto)


Com uma relação entre tabelas como esta:
select1.gif




selects_dependentes.asp

A página ASP é bastante simples de entender. Trata-se de um script para construir os dois campos select a partir dos valores do banco de dados.

A primeira vez que carregar a página se mostrará unicamente o primeiro campo select com os valores que extrai da tabela de países. Incluímos ao campo select o evento Javascript onchange para que, no momento que mude a opção selecionada, se carregue a página passando por parâmetro o identificador do país selecionado.

A segunda vez que carregar a página -porque foi mudado o valor do primeiro select- receberá pela URL o identificador do país selecionado. Então mostra o segundo select com as opções relacionadas com o país que recebe por parâmetro, ou seja, se foi selecionado o país Argentina, se carregará unicamente as províncias desse país.

O código do exemplo ficaria desta maneira:

<form name=formulario>
PAÍS: <select name=idPais onChange="location.href('selects_dependentes.asp?idPais=' + formulario.idPais.options[formulario.idPais.selectedIndex].value)">
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("ssdd.mdb"))

SQL_pais="select * from paises order by pais asc"
set RS_pais=createobject("ADODB.Recordset")
RS_pais.open SQL_pais,conn
do while not RS_pais.eof
pais = RS_pais("pais")
idPais = RS_pais("idPais")
p = request.querystring("pais")
if p <> "" then

if p = pais then
response.write "<option value="&idPais&"&pais="&pais&" selected>"&pais&"</option>"
elseif p <> pais then
response.write "<option value="&idPais&"&pais="&pais&">"&pais&"</option>"
end if
else
response.write "<option value="&idPais&"&pais="&pais&">"&pais&"</option>"
end if

RS_pais.movenext
loop
RS_pais.close
%>
</select>
<% if request.querystring("idPais") <> "" then %>
PROVINCIA: <select name=localizacao>
<%
SQL_prov="select * from provincias where pais="&request.querystring("idPais")&" order by provincia asc"
set RS_prov=createobject("ADODB.Recordset")
RS_prov.open SQL_prov,conn
do while not RS_prov.eof

pais = request.querystring("pais")
provincia = RS_prov("provincia")
%>
<option value="<%=provincia%>, <%=pais%>"><%=provincia%></option>
<%
RS_prov.movenext
loop
RS_prov.close
%>
</select><% end if %></form>



 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Sistema de Recomendação em ASP com CDONTS



Este sistema permite ao usuário enviar pela web, um e-mail a outra pessoa, convidando-a a visitar o site.

Por Eugenia Bahit





Este sistema permite ao usuário enviar pela web, um e-mail a outra pessoa, convidando-a a visitar o site.

Só requer um módulo ASP que se encarregará de mostrar o formulário de recomendação, enviar o e-mail e devolver um acuse de envio.
Nota: Requer que seu servidor suporte CDONTS Mail.


recomendar.asp

<!-- formulário de recomendação -->

<% if request.querystring("acao") = "" then

%>

<form method="post" action="recomendar.asp?acao=enviar" name="recomende">

<b>Recomende este site</b><br><br>

Seu Nome: <input type="text" name="n_remetente" size="10"><br>

Seu E-mail: <input type="text" name="e_remetente" size="20"><br>

Nome do seu amigo: <input type="text" name="n_destinatario" size="10"><br>

E-mail do seu amigo: <input type="text" name="e_destinatario" size="20"><br><br>

<input type="submit" value="Recomendar">

</form>


<!-- envio do formulário e acuse de envio ou informação de erros -->

<%

elseif request.querystring("acao") = "enviar" then


' recolho as variaveis que veem pelo formulario

n_destinatario = request.form("n_destinatario")

e_destinatario = request.form("e_destinatario")

n_remetente = request.form("n_remetente")

e_remetente = request.form("e_remetente")


' se os campos não estão vazios

if n_destinatario <> "" and e_destinatario <> "" and n_remetente <> "" and e_remetente <> "" then


' indique a url do site

url = "http://www.seusite.com"

' indique o nome do seus site

nome_do_site = "Seu Site"

' indique o assunto da mensagem

assunto = n_remetente & " lhe recomenda um site"


' redija a mensagem

mensaje = "Ola " & n_destinatario & ":<br>"

mensagem = mensagem & n_remetente & " lhe recomenda que visite <b>" & nome_do_site & "</b>.<br>"

mensagem = mensagem & "Poderá vê-lo em <a href='" & url & "'>" & url & "</a><br><br>Saudações!"


' começa envio

Set envio = Server.CreateObject ("CDONTS.NewMail")


' indica que o e-mail é em formato HTML
envio.BodyFormat = 0
envio.MailFormat = 0


' envia a mensagem

envio.Send e_remetente, e_destinatario, assunto, mensagem

Set envio = Nothing


' Informa ao usuário que foi enviada a mensagem

reponse.write "<b>A mensagem foi enviada</b>.<br>Obrigado por nos recomendar!"


' se existir campos vazios, envia uma mensagem de erro

else

response.write "Por favor, é necessário completar todos os campos.<br>"

response.write "<a href='recomendar.asp'>Clique aqui</a> para corrigir os campos."

end if


end if

%>
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Encaminhar o navegador a uma URL com ASP detalhado




Notas interessantes sobre a utilização do método redirect do objeto response. Explicamos a razão de um possível erro ao utiliza-lo e como evita-lo.

Por Miguel Angel Alvarez - Tradução de JML





Recebemos uma consulta interessante que acho que ainda não havíamos tratado com profundidade anteriormente. Trata-se do método redirect do objeto response, que em determinadas situações dá um erro, que nos relatava um visitante da seguinte maneira:

Sempre trabalhei em win2k e IIS para páginas ASP pessoais, mas agora estou em Win98 com PWS e as páginas que tinha funcionando em IIS com PWS me geram um erro Response.Redirect com a seguinte mensagem de erro:

"Os cabeçalhos HTTP já estão escritos no explorador cliente. Qualquer mudança no cabeçalho HTTP deve ser feita antes de escrever o conteúdo da página."

Método redirect

É um método do objeto response e serve para mandar o navegador a uma página que deve se indicar como parâmetro. Um exemplo de utilização seria:

response.redirect "sua_pagina.html"

Isto faria com que o nosso navegador se situasse na página sua_pagina.html.

O redirect se realiza enviando nos cabeçalhos do HTTP a ordem de encaminhamento. O caso é que não se pode enviar nada nos cabeçalhos do HTTP se já se começou a escrever texto da página web, ainda que seja um simples espaço.

Portanto, este código é incorreto:

<head>
<title>Olá</title>
</head>
<%
response.redirect "xxx.asp"
%>

É incorreto porque antes de fazer o redirect foi escrito dentro da página web, neste caso é informação de cabeçalho, porém, este cabeçalho do documento HTML não é o mencionado cabeçalho do HTTP, que o mandam os servidores internamente sem que o programador participe ativamente, salvo para introduzir informação como um redirect ou um refresh a partir de funções ASP.

Armazenamento em buffer da página

Em instalações de ASP a partir da 3.0 se utiliza um buffer de armazenamento da página que tem como missão ir recolhendo o código HTML resultante da execução da página ASP, antes de manda-lo ao cliente. O buffer vai enchendo e quando termina de executar a página manda definitivamente por Internet até o computador do usuário.

A utilização do buffer em ASP 3.0 (IIS 5.0) encontra-se pré-determinada, enquanto que em outras versões de ASP, como a do Personal Web Server (PWS), está pré-determinado para não se utilizar.

Segundo aponta então, em ASP 2.0 e anteriores vai sendo enviado a página ao cliente à medida que for se executando e em ASP 3.0 até que não termina de se executar inteira, a página não é enviada ao cliente.

Sendo assim, o código anterior, onde se escrevia na página antes de executar um redirect, embora esteja mal desenhado em qualquer caso, pode dar erro ou pode não dar nenhum erro. Tudo vai depender de se havia ou não enviado texto ao cliente previamente à realização do redirect.

Tudo isto tem muito a ver com o buffer, pois, se está sendo utilizado, não se envia nada ao cliente e o redirect se realiza sem haver enviado texto, apesar de estiver escrito na página. Se não se utiliza o buffer, o texto colocado antes do redirect sim que teria sido enviado ao cliente e ao executar o redirect apareceria o erro que nos comentava nosso leitor.

Utilização ou não do buffer

Para indicar que se deseja utilizar o buffer temos que escrever esta sentença no princípio do código ASP.

response.buffer = true

Se coloca-se em ASP 3.0 não serve para nada, porque essa opção já estava pré-determinada. Porém, de qualquer forma, não incomoda e pelo menos nos asseguramos que se utilizará o buffer se as páginas forem transferidas a um servidor com ASP 2.0.

Se desejarmos fazer um redirect depois de ter escrito texto no buffer, o correto seria executar estas duas sentenças juntas:

response.clear response.redirect "http://www.oquefor.com"

A primeira linha indica que se deve esvaziar o buffer, com o qual se elimina o que tiver sido escrito na página, e a segunda indica que faça o encaminhamento. Insisto, isto só é possível se o buffer estiver sendo utilizado.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Uso de cookies



O uso destes pequenos programas podem personalizar um web site segundo as preferências do usuário.

Por Eugenia Bahit





O que são e para que servem as cookies?

As cookies são pequenos arquivos de texto que se salvam no computador do cliente e armazenam informação referente a este. Esta informação pode ser utilizada para gerar diferentes tipos de configurações e opções que o usuário escolha. Assim como também, com um pouco de imaginação, podem ser utilizados para uma infinidade de funções que veremos mais adiante.



O que podemos fazer com as cookies?

Basicamente as cookies podem ser escritas no computador do cliente com response.cookies e lidas com request.cookies.



Sintaxe de escritura de uma cookies

Escritura de uma cookie



<% response.cookies("nome_da_cookie")="valor_da_cookie" %>



Leitura de uma cookie



<% = request.cookies("nome_da_cookie") %>

As cookies devem ter uma data de vencimento. Do contrário se apagariam automaticamente logo depois de serem criadas. A sentença que indica o vencimento de uma cookie é a seguinte:

Data exata de vencimento

<% response.cookies("nome_da_cookie").Expires=#August 25, 2003# %>

Esta cookie indica que finalizará em 25 de agosto de 2003.



quantidade de dias

<% response.cookies("nome_da_cookie").Expires=Date+365 %>

Esta cookie indica que finalizará dentro de 365 dias.

Exemplos de aplicação de cookies

Com este exemplo vamos criar uma cookie na qual recolheremos os dados de personalização que o usuário escolher para ver uma página. Neste caso, o usuário deverá escolher a cor de fundo e a cor de fonte que deseja ver quando entra em nosso site.



Para isso criaremos um pequeno formulário no qual daremos ao usuário a opção de escolher tais cores:

Salvaremos este formulário como form.htm



<form method="post" action="cookies.asp">
<p align="center"><b>
Selecione as cores que deseja ver:</b></p>
<p style="margin-top: 0; margin-bottom: 0" align="center">
Fundo da página: <select size="1" name="fundo">
<option value="white">Branco</option>
<option value="black">Preto</option>
<option value="blue">Azul</option>
<option value="red">Vermelho</option>
<option value="green">Verde</option>
</select></p>
<p style="margin-top: 0; margin-bottom: 0" align="center">Cor de fonte: 
<select size="1" name="fonte">
<option value="white">Branco</option>
<option value="black" selected>Preto</option>
<option value="blue">Azul</option>
<option value="red">Vermelho</option>
<option value="green">Verde</option>
</select> </p>
<p style="margin-top: 0; margin-bottom: 0" align="center"><input type="submit" value="Enviar"></p></form>


Logo criaremos a página de processo onde se criarão as cookies e se mostrarão os resultados. Chamaremos de cookies.asp.



<%
'recolhemos os dados do formulario
fundo = request.form("fundo")
fonte = request.form("fonte")

'criamos as cookies
response.cookies("CorFundo")=fundo
response.cookies("CorFonte")=fonte

'criamos o vencimento das cookies
response.cookies("CorFundo").Expires=Date+7
response.cookies("CorFonte").Expires=Date+7

'agora, mostramos o resultado obtido escrevendo as cookies
%>
<body

text="<%=request.cookies("CorFonte")%>" bgcolor="<%=request.cookies("CorFundo")%>">
<center><font size="6">Assim se verão as cores</font></center>

 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Galeria de imagens em ASP



Como implementar uma galeria de imagens programada em ASP, utilizando somente 10 minutos de nosso tempo.

Por Miguel Angel Alvarez - Tradução de JML



Vamos ver como realizar rapidamente um sistema de armazenamento e visualização de imagens dinâmicas em ASP, no qual os visitantes possam ver fotografias classificadas em diferentes seções. Ao acessar a uma das classificações de imagens se mostrarão uma série de miniaturas das fotos que há disponíveis e, clicando cada miniatura, se verá a fotografia em tamanho completo.
Obviamente, este não é um sistema que se possa desenvolver desde zero em poucas horas, necessitaríamos na verdade um esforço de vários dias. Entretanto, vamos fazer um atalho no problema de uma maneira muito mais rápida, usando um software gratuito que permite instalar facilmente uma galeria fotográfica em nosso servidor ASP.

Podemos ver um exemplo deste programa em funcionamento em ASP Simple Online Photo Album
online_photo_catalog_vbscript.asp


galeria-imagen-asp.jpg


Quase para qualquer tecnologia de desenvolvimento, existem à disposição dos desenvolvedores certos programas que podemos instalar em nosso servidor. Estes programas podem nos ajudar a simplificar algumas coisas ou dotar a nossas páginas de certas funcionalidades. ASP não é uma linguagem onde se ofereçam muitos sistemas de forma gratuita -são mais típicos os de pagamento-, porém, neste caso veremos um simples script que sim que é gratuito e será muito útil para classificar nossas fotos e publica-las na web.

Online Photo Catalogue

Este programa pode ser conseguido de maneira gratuita através da home page do produto. Simple ASP Online Photo Album
Foi construído para simplificar ao máximo a tarefa de publicação das imagens, evitando o uso de componentes externos a ASP, bancos de dados, sistemas de upload de arquivos, etc.

Para utiliza-lo necessitamos um servidor que suporte a programação em ASP. Além disso, se o servidor também permite utilizar .NET, as funcionalidades disponível melhorarão na hora de mostrar as imagens em miniatura.

Online Photo Catalogue utiliza o objeto do sistema de arquivos (FSO: File System Object) para conhecer que imagens existem em um diretório e que subdiretórios pode também conter. Com os dados que obtém do sistema de arquivos, se encarrega de construir uma árvore de diretórios, aos que se pode acessar para visualizar as fotos que existem em cada pasta.

Portanto, não é necessário subir as imagens em nenhum banco de dados, simplesmente têm que ser armazenadas em uma pasta e a partir desse momento estarão disponíveis para o visitante.

Instalação

O processo para colocar em funcionamento este programa é extremamente simples. Primeiro, teremos que baixar os arquivos com o software, que teremos que colocar em nosso servidor.

Logo, temos que colocar as imagens na pasta "IMAGES". Dentro desta pasta podemos criar outras subpastas para fazer uma árvore de diretórios a gosto do administrador. Podemos criar uma pasta para nossos amigos e outra para nossas viagens. Por exemplo, dentro da pasta de viagens, também poderemos criar outros subdiretórios com cada um dos lugares aos que fomos. Se utilizarmos um servidor remoto, teremos que subir as imagens por FTP.

A partir de agora, podemos acessar a foto-galeria e ver na parte superior esquerda a árvore de diretórios criada para classificar as imagens. Clicando em cada pasta poderemos ver as fotos, em miniatura, que há nessa pasta. Clicando finalmente em uma das miniaturas, poderemos ver a imagem em tamanho completo.

Para a geração dinâmica das miniaturas utiliza-se um pouco de programação em ASP.NET. Como nem todos os hostings que permitem ASP também permitem .NET, pode-se desabilitar a geração de miniaturas através da edição das constantes de configuração do programa. Em concreto, deveremos editar a variável cUseThumbnailFile e lhe atribuir valor false (true é o que vem por padrão para esta variável)

Const cUseThumbnailFile=false

Também há outras variáveis de configuração, mas que se explicam melhor no documento de ajuda do software.

Como detalhes adicionais, o administrador pode comentar as fotografias. Isto se faz mediante a criação de um arquivo de texto chamado com o mesmo nome que a fotografia, porém com extensão txt. Por exemplo, se temos uma imagem chamada foto1.jpg e desejamos incluir um comentário nela, teremos que criar um arquivo chamado foto1.txt e escreveremos dentro o texto que quisermos. O arquivo de texto tem que ser salvo no mesmo diretório que a fotografia.

Também permite a inclusão de comentários às fotografias por parte dos visitantes. Para salvar os comentários se utiliza um arquivo de texto em formato XML, portanto não é necessário configurar nada. Somente há que estar certo que as permissões de escritura estejam habilitados para esse arquivo.

O exemplo deste programa em funcionamento pode ser visto em: ASP Simple Online Photo Album
online_photo_catalog_vbscript.asp

A página de início do produto pode ser visto em: Simple ASP Online Photo Album



 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Escrever um arquivo Excel através de ASP



Como gerar utilizando ASP um arquivo CSV, compatível com Excel e outras folhas de cálculo, a partir de uma tabela do banco de dados.

Por Miguel Angel Alvarez - Tradução de JML





Através de uma página programada em ASP podemos obter múltiplas saídas, à parte da tradicional em uma página web. Neste caso veremos como realizar uma saída em um formato de tipo CSV, que é um arquivo compatível com Microsoft Excel ou outros sistemas de folha de cálculo comuns. O arquivo CSV, para quem não sabe, é na verdade um arquivo de texto no qual se colocam os valores de cada uma das colunas separados por vírgulas e cada fila de valores em uma linha independente.

Veremos como conseguir um arquivo CSV no qual aparecem uns valores obtidos desde um banco de dados. Para isso, vamos nos apoiar em um script que se distribui como código aberto em licença GNU. Este tipo de licença implica que o Script é gratuito e pode se distribuir, utilizar ou modificar de qualquer maneira, sempre que se cite a procedência original.

Na verdade, o script ao qual nos referimos chama-se GenerateXSL, desenvolvido por Brain Scan Studios, que pode ser encontrado no endereço Brain Scan Studios - Home.

O script pode ser instalado em qualquer servidor ASP, em um website ou em um servidor local ou de Intranet, e pode se modificar facilmente. Para utiliza-lo em nossos trabalhos simplesmente teríamos que modificar umas variáveis. Para começar, a variável "sDSN" que contém o DSN origem de nosso banco de dados. Também devemos modificar a variável "sFields", para atribuir os nomes dos campos do banco de dados, e "sTable", para indicar o nome da tabela.

O script, que podemos modificar para ajusta-lo a nossas necessidades, é o seguinte:

<%@ Language=VBScript %>
<%
' GenerateXLS Version 1.0 by Brian Kirsten (bkirsten@brainscanstudios.com)
' 1st modified 11/29/00
' 2nd modification 10/25/02
' copyright Ó 2000 Brain Scan Studios, Inc. (Brain Scan Studios - Home)
' source distributed under the gnu general public license.
' let me know if your site is using the code i will put a link up to your page!

Dim sTable
Dim sDSN
Dim sFields

sDSN = "<DSN>" 'Name of your DSN
sFields = "<FIELDS>" 'List of fields comma delimited
sTable = "<TABLE_NAME>" 'Name of your table or View

Set DB = Server.CreateObject("ADODB.Connection")
Set RS = Server.CreateObject("ADODB.Recordset")

DB.Open sDSN

RS.Open "select "& sFields &" from "& sTable,DB

Response.ContentType = "application/csv"
Response.AddHeader "Content-Disposition", "filename=mydata.csv;"
' lets print the fields on top

for i = 0 to RS.Fields.Count-1
if i = (RS.Fields.Count - 1) then
Response.Write lcase(RS.Fields(i).Name)
else
Response.Write lcase(RS.Fields(i).Name) & ","
end if
next

Response.write vbNewLine
Response.write vbNewLine

while not RS.EOF

for u=0 to RS.Fields.Count - 1
if u = (RS.Fields.Count - 1) then
Response.Write RS.Fields(u).Value
else
Response.Write RS.Fields(u).Value & ","
end if
next

response.write vbNewLine

rs.MoveNext
wend

Response.write vbNewLine
Response.write vbNewLine

Set RS = Nothing
Set DB = Nothing

%>
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Tratar erros em sentenças SQL executadas em ASP




Como fazer para que as sentenças SQL mal formadas não dêem erros nas páginas ASP e possam ser tratadas para informar ao usuário ou ao administrador.

Por Miguel Angel Alvarez - Tradução de JML




Veremos um pequeno workshop que poderá servir para fazer nossas aplicações ASP mais completas e compactas. Trata-se de evitar um erro bastante freqüente na programação de páginas, que ocorre quando se tenta executar uma sentença SQL mal formada. Nestes casos, o servidor nos informa do erro, embora sempre ofereça informação que não serve muito para o visitante, inclusive pode lhe confundir. Seria preferível que nós tratássemos o erro e informássemos por nossa conta ao usuário, de uma maneira agradável e clara.

Para isso, vamos realizar um tratamento de erros em ASP, que evitará que a página se detenha diante de um erro e nos permita fazer coisas se isto ocorrer.

On error Resume Next
conn.execute(ssql)
if Err<>0 then
' realizo acoes para tratar o erro
end if

Com a primeira linha estamos dizendo a ASP que se ocorrer um erro não ser informado dele, e sim, que continue. Na segunda linha executamos uma sentença SQL.

No seguinte bloco se avalia a variável de sistema "Err", que armazena um possível erro. Se a variável vae qualquer coisa diferente de 0, então é porque ocorreu um erro. Portanto, no caso positivo do if poderemos realizar qualquer tipo de ação para tratar o erro.

Tratar o erro de uma maneira simples

Para tratar o erro de uma maneira fácil de implementar, dentro do if poderíamos chamar a uma função que se encarregasse de fazer todas as ações frente a um erro.

Essa função poderia receber o erro e introduzi-lo em um log de erros. Poderia também informar por correio ao administrador e obviamente, mostrar uma mensagem de erro claro ao visitante.

sub tratar_erro_ssql(ssql,meuerro)

'trato o possivel erro
'coloco a sentenca errada em um arquivo de texto

'criamos o textstream do arquivo
arquivo= request.serverVariables("APPL_PHYSICAL_PATH") & "erros\log.txt"
set confile = createObject("scripting.filesystemobject")
set fich = confile.OpenTextFile (arquivo,8)
'escrevo no arquivo
fich.WriteLine(ssql)
fich.WriteLine(Err.Description)
fich.WriteLine("-----------------------------")

'fechamos o arquivo
file.close()

'vou informar ao administrador
set obj_mail = server.createObject("Persits.MailSender")
assunto_mensagem = "Erro SQL na página"
email_origem_mensagem = "correio@dominio.com"
texto_origem_mensagem = "Empresa"
txt_mail = "Detectamos um erro. Consulte o log de erros para encontrar descrição."
txt_mail = txt_mail & VBNEWLINE & VBNEWLINE & ssql
txt_mail = txt_mail & VBNEWLINE & VBNEWLINE & meuerro

obj_mail.host = "smtp.dominio.com"
obj_mail.from = email_origem_mensagem
obj_mail.FromName = texto_origem_mensagem
obj_mail.Subject = assunto_mensagem
obj_mail.AddAddress email_alertas
obj_mail.body = txt_mail
'o envio
obj_mail.send

'vou informar ao usuario
response.write "Sentimos muito, mas sua ação não pode ser realizada. Entre em contato com os administradores para obter ajuda."

end sub

Esta função faz tudo o que foi comentado para tratar do erro. Primeiro escreve o log de erros em um arquivo de texto, logo envia um correio eletrônico ao administrador e finaliza mostrando um erro ao usuário. A função está toda comentada para que se entenda melhor tudo o que foi realizado (como enviar o e-mail através de ASP ou abrir o arquivo de texto) que já foi visto em outros workshops de ASP.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Validar uma data com ASP



Função para comprovar se uma data é correta, ou seja, se um dia, mês ou ano são corretos, em páginas programadas com ASP.

Por Miguel Angel Alvarez - Tradução de JML




Vejamos uma função criada com Active Server Pages para fazer uma comprovação de datas. A função recebe um dia, um mês e um ano e comprovam que estes sejam numéricos e que a data criada entre todos é correta e possível no calendário.

A função recebe os dados de dia, mês e ano como string, tal como poderíamos chegar através de um formulário ou como parâmetro em uma URL. Não obstante, visto que ASP é uma linguagem pouco "typed", mesmo passando valores numéricos à função continuará dando resultados corretos.

Como resultado a função devolverá um valor verdadeiro ou falso, dependendo se a data é correta ou incorreta.

O código da função é o seguinte:

'valido uma data
'espero receber tres strings com o dia, o mes e o ano

function validarData(dia,mes,ano)

'elimino possiveis espacos aos lados dos numeros que recebo por parametro

dia = trim(dia)
mes = trim(mes)
ano = trim(ano)

'comprovo nº de caracteres que recebo em cada parametro sao os permitidos
'O ano pode ter ate 4 caracteres

if len(dia)=0 or len(dia)>2 or len(mes)=0 or len(mes)>2 or len(ano)=0 or len(ano)>4 then
validarData = false
exit function
end if

'compovo que os caracteres dos parametros sao numeros

if (not isNumeric(dia)) or (not isNumeric(mes)) or (not isNumeric(ano)) then
validarData = false
exit function
end if

'O mes nao pode ser maior que 12 nem menor que 1

mes = cint(mes)
if mes > 12 or mes < 1 then
validarData = false
exit function
end if
dia = cint(dia)

'O dia nao pode ser menor que 1

if dia < 1 then
validarData = false
exit function
end if

'O dia, dependendo do mes que seja, pode ter uns ou outros valores

if mes=1 or mes=3 or mes=5 or mes=7 or mes=8 or mes=10 or mes=12 then

'nesses meses pode ter 31 dias

if dia > 31 then
validarData = false
exit function
end if
elseif mes=2 then

'en fevereiro temos que ver se sera ano bissexto
'consigo o numero de ano de 4 cifras.
'se nos derem um valor de 2 cifras < 31 se refere a 2000 mais esse valor

if ano < 31 then
ano = ano + 2000

'se nos derem um valor de 2 cifras > 31 se refere a 1900 mais esse valor

elseif ano < 100 then
ano = ano + 1900
end if

'calculo se o ano eh bissexto
'se for divisivel por quatro e (nao divisivel por 100 ou divisivel por 400)

if ((ano mod 4)=0) and ((ano mod 100)<>0 or (ano mod 400)=0) then

'eh bissexto

if dia > 29 then
validarData = false
exit function
end if
else

'NAO eh bissexto

if dia > 28 then
validarData = false
exit function
end if
end if
else

'em todos os demais meses chegam a ter 30 dias

if dia > 30 then
validarData = false
exit function
end if
end if

'se estou aqui eh porque todas as comprovacoes foram positivas

validarData = true
end function

O código da função está comentado para que possa ser entendido mais facilmente. Basicamente, o que faz é realizar uma série de comprovações, uma atrás da outra. Se alguma das comprovações faz com que a data seja incorreta, devolve-se o valor false e sai da função. Se chega-se ao final da função e nenhuma das comprobações falhou, se devolve true, pois a data é correta.

Na hora de calcular se um dia é válido, temos que saber os dias que tem um mês. Temos que prestar especial atenção ao mês de fevereiro, para saber se é bissexto. Para saber se um ano é bissexto existe a seguinte regra:
São bissextos todos os anos divisíveis por 4, excluindo os que sejam divisíveis por 100, mas não excluindo os que sejam divisíveis por 400.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Arredondar decimais em ASP



Como arredondar um número em ASP, para que tenha uma quantidade de decimais determinada.

Por Miguel Angel Alvarez - Tradução de JML






Vamos realizar um exercício muito simples que se trata de arredondar uma cifra, de modo que tenha o número de decimais que desejarmos. O arredondamento de decimais em ASP é muito simples, graças a uma função de Visual Basic Script chamada Round().

Função Round()

A função Round() recebe dois parâmetros, o número que se deseja arredondar e o número de decimais que se deseja que tenha:

Round (número, num_decimais)

Devolve o número, arredondado de maneira que tenha tantas posições decimais como se envie no segundo parâmetro. O segundo parâmetro é opcional e se não se indica, entende-se que se deseja arredondar sem decimais.

A função Round() sempre arredonda ao valor mais próximo, com os decimais indicados.

Possíveis exemplos, que podem nos dar uma idéia exata da maneira de funcionar de Round(), são:

Round (2.2) devolve 2
Round (2.6) devolve 3
Round (41.2855,3) devolve 41.286
Round (41.2009,2) devolve 41.2
Round (41.2009,3) devolve 41.201

Funções Int() e Fix()

Estas duas funções estão relacionadas com Round(). Servem para obter a parte inteira de um número com decimais. Não existem diferenças entre Int() e Fix(), as duas fazem exatamente o mesmo.

Vejamos dois exemplos:

Int (54.23) devolve 54
Fix (0.2) devolve 0

Como vemos, não é um arredondamento, e sim a obtenção do número inteiro uma vez tirado os decimais.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Devolver um arquivo de Word através de uma página ASP



Sistema para gerar um arquivo de Word através de uma página ASP e envia-lo ao navegador, no lugar de uma página web.

Por Miguel Angel Alvarez - Tradução de JML




Veremos aqui um típico exemplo de criação de um arquivo de Word através de uma página web ASP. O arquivo de Word será gerado automaticamente e a página ASP, ao invés de mostrar o conteúdo como uma página web, mostrará um arquivo de Word, que poderá ser baixado utilizando qualquer navegador. Se acessarmos com Internet Explorer, também se poderá visualizar o arquivo de Word no próprio navegador.

O exemplo é simples. Simplesmente há que tratar com o ContentType, para indicar que o tipo de conteúdo que se envia é um arquivo de Word. O próprio navegador, ao ver que se envia um arquivo de Word ao invés de uma página web, mostrará a opção de baixa-lo ou de abri-lo. Para especificar o ContetType de Word utilizamos esta linha de código ao princípio do arquivo ASP:

<% Response.ContentType = "application/msword"%>

Com isso já temos a maior parte do trabalho realizado. Agora, qualquer conteúdo que colocarmos depois dessa etiqueta, será parte do conteúdo do arquivo de Word que se enviará ao visitante.

Podemos colocar conteúdo HTML e se verá perfeitamente no arquivo de Word:

<% Response.ContentType = "application/msword" %><html>
<html>
<head>
<title>Criação de word</title>
</head>
<body bgcolor="orange" text="blue">
<h1>Oi</h1>
<a href="http://www.website.com">Isto é um link a website.com</a>
<p>
<i>Obrigado pela sua visita</i>
</p>
</body>
</html>

Outra coisa que podemos fazer é ter o conteúdo em um arquivo a parte e inclui-lo por meio de um include de ASP.

<% Response.ContentType = "application/msword"%>
<!--#include file="arquivo-incluir.html"-->

Assim o navegador receberá um arquivo de Word gerado com o conteúdo que houver no arquivo arquivo-incluir.html.



 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Um Chat em ASP



ASP pode não ser a linguagem mais adequada para uma aplicação de chat, porém o caso é que funciona e ao ser ASP é completamente compatível com qualquer navegador, e ademais é, como vocês verão, tremendamente simples de desenvolver.

Por Pedro Rufo Martin


O código que lhes mostro é o utilizado no chat de minha web, o introduzir melhoras será com vocês, é fácil adicionar funcionalidades ao estilo das que vocês verão em outros chats em Java, como cores, lista de usuários, etc ...

Bom, começamos pelo princípio.

1.-O primeiro que necessitamos é um lugar para armazenar as frases que os usuários introduzirem para logo mostrá-las. Para isso, usaremos um array de nove elementos, que serão a quantidade de frases que mostraremos no chat ( poderão mudar o número ao que lhes parecer oportuno). Este array será salvo dentro do objeto Application, a fim de que possa ser acessado por todo o mundo. A fim de que esteja disponível sempre, o criaremos dentro do arquivo global.asa.

Global.asa

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
Dim Auxiliar()
Redim Auxiliar(9)
Application("Opinioes")=Auxiliar
End Sub
</SCRIPT>

A partir deste momento temos uma variável de aplicação denominada "opiniões" que contém nosso chat .

2.-O seguinte que necessitamos é uma página que nos mostre o conteúdo de nosso chat (ou seja, o que há em application("opinioes"). A este modulo o denominaremos visualizacao.asp. Consiste em uma página que se chama a si mesma cada x segundos (META HTTP-EQUIV="REFRESH" CONTENT="5), com o que nos refresca a informação, e que mostra os dados contidos em Application("opinioes") mediante um simples loop FOR

Visualizacao.asp

<% PaginaAtual="http://"&_
Request.ServerVariables("SERVER_NAME")&_
Request.ServerVariables("SCRIPT_NAME") %>
<html>

<head>
<META HTTP-EQUIV="REFRESH" CONTENT="5;<%=PaginaActual%>">
<title>MiniChat (visualizacao)</title>
</head>

<body>
<FONT FACE="Comic Sans MS" COLOR="Blue" size="1">
<%
IF NOT isArray( Application("Opinioes")) THEN
Application.Lock
Dim Auxiliar()
Redim Auxiliar(9)
Application("Opinioes")=Auxiliar
Application.UnLock
END IF

Temporal=Application("Opinioes")
FOR Opinion=8 to 0 step -1%>
<%= Temporal(Opinion) %> <BR>
<% NEXT %>
<FONT>
</body>

</html>

3.-Nosso terceiro módulo será "incluir.asp" o qual nos vai permitir que os usuários escrevam opiniões no chat. Para que um usuário escreva uma colaboração, este usuário deve estar identificado por um apelido ou "nick", este apelido será salvo em uma cookie.

incluir.asp

<%
IF Request.Cookies("Apelido")="" and request.form("opiniao")<>"" THEN
if request.form("apelido")<>"" then
Response.Cookies("Apelido")=Request.Form("Apelido")
else
Response.Cookies("Apelido")="Anônimo"
end if
Application.Lock
Temporal=Application("Opinioes")
FOR i=7 TO 0 STEP -1
Temporal(i+1)=Temporal(i)
NEXT
if request.form("apelido")<>"" then
Temporal(0)="<FONT COLOR=""#000000"">** " & Request.Form("Apelido") & " ** Entra no minichat</FONT>"
else
Temporal(0)="<FONT COLOR=""#000000"">** Anonimo ** Entra no minichat</FONT>"
end if
Application("Opinioes")=Temporal
Application.Unlock

END IF
IF Request.Form("Opiniao")<>"" THEN
Apelido=Request.Cookies("Apelido")
Application.Lock
Temporal=Application("Opinioes")
FOR i=7 TO 0 STEP -1
Temporal(i+1)=Temporal(i)
NEXT
Temporal(0)=Apodo&": "&Request.Form("Opiniao")
Application("Opiniao")=Temporal
Application.Unlock
END IF%>

<html>

<head>
<title>incluir opiniao</title>
<base target="_self">
</head>

<body bgcolor="#6699FF">
<FORM METHOD="POST" ACTION="incluir.asp">
<% IF Request.Cookies("Apelido")="" THEN %>
<font color="#FFFFFF">
Apelido:</font> <INPUT TYPE="TEXT" SIZE=10 NAME="Apelido">
<input type="hidden" name="go" size="20" value="si"><BR>
<% END IF %>
<INPUT TYPE="TEXT" SIZE=30 NAME="Opiniao">
<INPUT TYPE="SUBMIT" VALUE="Enviar">
<a href="fechar.asp" target="_top">Sair</a>
</FORM>
</body>

</html>
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
4.- Quando o usuário terminar sua sessão de chat devemos eliminar a cookie que o identifica, para isso usaremos o modulo fechar.asp

fechar.asp

<% if Request.cookies("Apelido")<>"" then
Application.Lock
Temporal=Application("Opinioes")
FOR i=7 TO 0 STEP -1
Temporal(i+1)=Temporal(i)
NEXT
Temporal(0)="<FONT COLOR=""#FF0000"">** " &Request.cookies("Apelido")&" ** sai do minichat</FONT>"
Application("Opinioes")=Temporal
Application.Unlock
response.cookies("apelido")=""

END IF%>
<HTML>
<HEAD>
<script language="JavaScript">
{close();}
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>

5.- Agora montaremos tudo em uma página de frames

default.asp

<html>

<head>
<title>Sala de bate-papo</title>
</head>

<FRAMESET rows="*,70">
<FRAME SRC="visualizacao.asp">
<FRAME SRC="incluir.asp" target="_self">
</FRAMESET>

</html>

6.- Para que fique "bonito" mostraremos o chat em uma nova janela sem barras e menor, isso será feito com JavaScript

<HTML>
<HEAD>
<script language="JavaScript">
<!--
function openWindow(url, name) {
popupWin = window.open(url, name, 'scrollbars,resizable,width=400,height=350')
}
// -->
</script>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#000000" VLINK="#000000">
<a HREF="javascript:eek:penWindow('default.asp', 'minichat');">Enter chatroom</a>
</BODY>
</HTML>
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Averiguar o endereço IP de um visitante e bloquear IPs, em ASP




Script para obter o endereço IP de um visitante e bloquear se a IP não estiver permitida.

Por Miguel Angel Alvarez - Tradução de JML





Veremos como averiguar o endereço IP de um visitante em uma página ASP. É um processo muito simples, já que existem duas variáveis de servidor que nos oferecerão diretamente esta informação.

Podem ocorrer dois casos que temos que comprovar: 1) que o visitante navegue ele mesmo sobre a página y 2) que navegue através de um proxy. Isto podemos comprovar da seguinte maneira:

' Salvar a IP do visitante
'O visitante pode acessar por proxy, então pego a IP que estiver utilizando
ip = request.servervariaveis("HTTP_X_FORWARDED_FOR")
'Se não vier de um proxy, pego a ip do visitante
if ip ="" then
ip = Request.servervariaveis("REMOTE_ADDR")
end if

Se quisermos evitar que um visitante navegue em nossas páginas com uma IP dada, simplesmente temos que comprovar com um IF que essa IP que queremos bloquear não é a do visitante.

if ip = "127.0.0.1" then
response.write ("bloqueio")
end if

Imaginemos que temos uma lista de IPs que queremos bloquear. Então seria útil colocar um simples array de IPs a bloquear e um loop para percorre-lo, de modo que possamos comprovar se a IP do visitante está no array de bloqueadas.

'crio um array de ips bloqueadas
dim ips_bloqueadas(5)
ips_bloqueadas(0) = "10.10.1.1"
ips_bloqueadas(1) = "103.10.1.21"
ips_bloqueadas(2) = "1.130.41.1"
ips_bloqueadas(3) = "30.105.61.13"
ips_bloqueadas(4) = "102.210.161.1"

'para cada ip bloqueada
for each ip_atual in ips_bloqueadas
'se a ip do visitante for igual a uma delas que há que bloquear
if ip = ip_atual then
response.redirect "explica_bloqueio.html"
end if
next
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Lista dos arquivos de um diretório com ASP




Vejamos como obter a lista de arquivos que existe dentro de um diretório de nosso disco rígido mediante programação ASP, com o sistema de arquivos do servidor FSO.

Por Miguel Angel Alvarez - Tradução de JML





Neste workshop de ASP mostraremos como obter uma lista dos arquivos que existem em uma pasta, dentro do sistema de arquivos do servidor.

ASP dispõe de uma série de objetos para acessar a qualquer recurso dentro dos discos rígidos do servidor web. No entanto, será necessário que nesses discos rígidos tenhamos permissões para poder trabalhar. Possivelmente, se provarmos os scripts dentro de nosso computador local, não haverá nenhum problema para listar os conteúdos de qualquer diretório, porém se o provamos em um servidor de hospedagem compartilhada, possivelmente tenhamos problemas com as permissões, a não ser que estivermos tentando acessar a uma pasta que esteja dentro do nosso diretório de publicação.

Agora vejamos um código para mostrar os arquivos contidos em uma pasta. Primeiro que tudo, temos que decidir o nome da pasta que desejamos explorar, ou seja o diretório físico que desejamos listar seus arquivos. Algo como C:\inetpub\wwwroot\

Se estivermos fazendo provas em nosso computador local, podemos conhecer perfeitamente o nome de qualquer pasta, porque sabemos a estrutura de discos e diretórios de nosso computador. Porém, se estivermos em uma hospedagem compartilhada, teremos que fazer uma pequena ação para saber o nome do diretório físico onde podemos listar seus arquivos.

Em local, podemos decidir diretamente o nome da pasta:

'declaro o nome de uma pasta
nome_pasta = "C:\"

Em uma hospedagem compartilhada, poderíamos obter assim o nome da pasta física onde está o arquivo ASP que estamos executando:

nome_pasta = Server.MapPath(".") & "\"

Como se vê, se utiliza o método de Server.mappath() para obter o nome de um diretório. A este método lhe passamos a rota relativa do diretório que se deseja obter o nome físico. Neste caso, passando-lhe ".", nos devolverá o diretório físico onde está o script ASP que estamos executando. Algo como X:\webs\meudominio.com\Html\

Uma vez tendo o nome do diretório que desejamos listar arquivos, temos que obter o objeto pasta deste diretório. Para isso, devemos conectar com o sistema de arquivos do computador:

'Conecto com o sistema de arquivos
set FSO = server.createObject("Scripting.FileSystemObject")

E logo temos que extrair o objeto pasta do diretório desejado:

'crio o objeto pasta
Set pasta = FSO.GetFolder(nome_pasta)

O seguinte passo é tirar todos os arquivos dessa pasta:

'pego os arquivos da pasta
Set archivos = pasta.Files

Para finalizar, listamos o nome de cada arquivo conteúdo na pasta, mediante um loop for… each:

'para cada arquivo, mostro seu nome.
for each nome_arquivo in arquivos
response.Write "<br>" & nome_arquivo
next

O exemplo completo seria algo como a seguir:

<%
'obtenho o diretório físico da pasta onde está este script
nome_pasta = Server.MapPath(".") & "\"
response.write "<h1>-" & nome_pasta & "</h1>"

'Conecto com o sistema de arquivos
set FSO = server.createObject("Scripting.FileSystemObject")

'crio o objeto pasta
Set pasta = FSO.GetFolder(nome_pasta)

'pego os arquivos da pasta
Set archivos = pasta.Files

'para cada arquivo, mostro seu nome.
for each nome_arquivo in arquivos
response.Write "<br>" & nome_arquivo
next
%>
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Percorrido genérico por um recordset com ASP



Script ASP que realiza um percorrido por um conjunto de registros ou recordset (RS), mostrando todos os registros e todos os campos de cada registro.

Por Miguel Angel Alvarez - Tradução de JML





Neste workshop de ASP vamos realizar uma consulta a uma tabela de um banco de dados para poder tirar um conjunto de registros. Logo, vamos fazer um percorrido por esse conjunto de registros genéricos, sem importar os nomes dos campos e o número de registros ou de campos, mostrando todos os dados extraídos no recordset. A consulta que realizarmos sobre a tabela será indiferente, ou seja, o script está preparado para realizar o percorrido seja qual for o conjunto de registros resultante e os nomes dos campos.

O objetivo é mostrar todos os dados do recordset em uma tabela. Na primeira fila da tabela colocaremos os nomes dos campos que tem cada registro e nas seguintes filas, os valores dos campos de cada registro obtido na consulta.

Lembremos que as explicações sobre conectar e trabalhar com um banco de dados estão em nosso manual de ASP.

O primeiro pedaço de código é uma conexão com o banco de dados por meio de DSN e a execução de uma sentença SQL.

'conecto BD e gero RS
set conn = server.createobject("adodb.connection")
conn.open "meuDSN"
sSQL="select * from tabela"
set rs=conn.execute(sSQL)

Uma vez criado o recordset na variável "rs", temos que escrever o cabeçalho da tabela com os nomes dos campos que tem cada registro recebido.

'nomes dos campos como cabecalho da tabela
response.write "<table border='1'><tr>"
for i = 0 to rs.fields.Count - 1
response.write "<th align='center' bgcolor='#eeeeee'>"
response.write rs.fields(i).name
response.write "</th>"
next
response.write "</tr>"

No código anterior se realizou um percorrido a cada um dos campos do primeiro registro do recordset e para cada um deles foi escrito seu nome, armazenando em rs.fields(i).name, a propriedade name do campo. Assim, mostraremos uma célula por cada nome dos campos do registro.

O passo seguinte será mostrar o conteúdo de cada um dos registros, realizando um percorrido genérico por todo o recordset.

'agora, para cada registro
while not rs.EOF
response.write "<tr>"
'mostro todos os campos que tem
for i = 0 to rs.fields.Count - 1
response.write "<td>" & rs.fields(i) & "</td>"
next
response.write "</tr>"
rs.movenext
wend
response.write "</table>"

O loop "while not rs.EOF" é para percorrer cada registro. Para cada registro cria-se uma fila. Logo, acrescenta-se outro loop "for i = 0 to rs.fields.Count" para percorrer cada campo do registro. Para cada campo escreve-se o valor em uma coluna. Para terminar, fecha-se a tabela.

O script já terminou. Só nos resta fechar as conexões com o banco de dados.

'fecho o bd e o recordset
rs.close
conn.Close

Podemos ver o código fonte completo a seguir:

<%
'conecto BD e gero RS
set conn = server.createobject("adodb.connection")
conn.open "meuDSN"
sSQL="select * from tabela"
set rs=conn.execute(sSQL)

'nomes dos campos como cabecalho da tabela
response.write "<table border='1'><tr>"
for i = 0 to rs.fields.Count - 1
response.write "<th align='center' bgcolor='#eeeeee'>"
response.write rs.fields(i).name
response.write "</th>"
next
response.write "</tr>"
'agora, para cada registro
while not rs.EOF
response.write "<tr>"
'mostro todos os campos que tem
for i = 0 to rs.fields.Count - 1
response.write "<td>" & rs.fields(i) & "</td>"
next
response.write "</tr>"
rs.movenext
wend
response.write "</table>"

'fecho o bd e o recordset
rs.close
conn.Close
%>
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Intranets com ASP



Com ASP podemos criar Intranets que automatizem os processos da empresa.

Por Mario Matías Sebely




Este artigo sai um pouco da temática do Workshop de ASP, porém acho que também pode dar idéias aos leitores sobre o que se pode fazer com ASP na prática no mundo da empresa.


Há alguns dias, um médico daqui da zona onde vivo, me disse:

Preciso que você me faça um programa para o hospital, se anima?

Isso me pareceu bem interessante e ao me informar dos detalhes, vi que era uma enquete que queriam fazer no PC, para logo realizar algumas estatísticas com a informação arrecadada.

Eu lhe disse que me animava, e analisando o projeto me deparei com uma enquete de 170 opções e campos.

Decidi realiza-la e ASP utilizando uma banco de dados de Access para salvar a informação.

Conseguimos a programação em uns dois dias e tudo andou muito bem.

Eles mediante um Servidor NT que tinham poderiam carregar os dados através de formulários e logo utilizar a informação do banco de dados para realizar diferentes consultas.

Aonde quero chegar é que com ASP também podemos utiliza-lo para intranets, através de um Server NT podemos fazer maravilhas, em desenvolvimento de Programas empresariais, já que podemos fazer consultas, que nos arroje gráficos, buscas, etc.

Como exemplo, suponhamos que na nossa empresa temos uma rede, e nosso negócio é a venda de livros.

Então, nós com um pouco de conhecimento administramos um Banco de Dados criando distintos campos, incluímos um buscar, algumas consultas que listem as últimas entradas, os gastos, e desta forma organizar a informação do nosso inventario!

Realmente ASP a parte de ser uma linguagem para Web, pode-se dar utilidades muito grandes para intranets, para o manejo que nós quisermos dar.

Talvez alguns indaguem quais seriam as vantagens de ASP, eu posso comentar algumas:
É leviano e pode correr em PCs normais que tenham Windows e um servidor web.
Pode-se utilizar desde qualquer computador que esteja conectado à rede que tenha instalado um navegador.
É muito fácil de programar, e tem muitas utilidades que com uma breve linha de aprendizagem podem ser modificadas ao seu gosto.
Animem-se como eu me animei, e desenhem seus "Programas" ASP para intranets, que obviamente também podem ser utilizados na Internet.

O ponto está em que as novas tecnologias para Internet podem ter muitos usos e ser o substituto de programas comuns em uma empresa.

Na prática você mesmo pode construir uma intranet com a ajuda de criarweb.com, simplesmente trata-se de aprender ASP com os manuais da página. Além disso, tal como está relatado nos manuais, você precisará instalar um servidor web em sua própria máquina para provar as páginas que for criando. O servidor web poderá ser Internet Information Server se trabalhar com NT ou Personal Web Server se seu sistema for Windows 95 ou superior.

Quando estiver provando os scripts em local já terá uma Intranet montada. Se provar chamar a esse servidor desde o navegador de qualquer computador da rede, você poderá acessar as páginas que tiver programado. Podemos chamar ao servidor com uma URL como http://nome_da_maquina/sua_pagina.html ou http://168.255.1.1/sua_pagina.html, sendo o número IP o do servidor ao que se deseja acessar.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Restringir o acesso a páginas com ASP



A muitas pessoas certamente já ocorreu de necessitar que certas páginas de nosso web só possam ser acessadas por usuários previamente autorizados.

Por Pedro Rufo Martin





Mostramos a seguir um método simples, porém eficaz para consegui-lo.

Para salvar a lista de usuários autorizados com seus correspondentes password criaremos em um banco de dados chamada XXXXX (não use um nome óbvio demais) uma tabela que denominaremos USUARIOS com os campos USUARIO e PASSWORD.



usuario-tabla.gif

Vamos passo a passo:

1.-Criamos uma página com um formulário para que o usuário se identifique.

2.- Efetuaremos a comprovação do usuário e password introduzidos com uma simples consulta à tabela USUARIOS, no caso de que a identificação seja correta criaremos para esse usuário uma variável de sessão com um valor que identifique sua validação como usuário.
No caso de que a validação seja errônea, devolvemos ao usuário ao formulário de login com uma mensagem de erro.

Login.asp
<%if request.form("usuario")="" then%>
<form method="POST" action="login.asp">
<p> </p>
<p> </p>
<p> </p>
<p align="center"><%=request.querystring("msg")%></p>
<div align="center">
<center>
<table border="0" width="50%" bgcolor="#F2F2F2">
<tr>
<td width="100%" colspan="2" bgcolor="#0000FF">
<p align="center"><font color="#FFFFFF">Login</font></td>
</tr>
<tr>
<td width="50%">Usuario:</td>
<td width="50%"><input type="text" name="usuario" size="20"></td>
</tr>
<tr>
<td width="50%">Password: </td>
<td width="50%"> <input type="password" name="password" size="20"></td>
</tr>
<tr>
<td width="100%" colspan="2">
<p align="center"><input type="submit" value="Enviar" name="B1"></td>
</tr>
</table>
</center>
</div>
</form>

<%else
'eliminamos as possíveis aspas da entrada
'para evitar a introdução de sentenças SQL
usuario=replace(request.form("usuario"),"'","")
password=replace(request.form("password"),"'","")

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\dirBD\xxxxx.mdb"))
set rs = CreateObject("ADODB.Recordset")
sqltxt="Select * from usuarios where usuario='"&usuario&"' and password= '"&password&"'"
'response.write sqltxt
rs.Open sqltxt, conn
if not rs.eof then
' nos devolveu um registro, agora veremos se é válido
' com isso evitamos o ataque típico SQL
if rs("usuario")=usuario and rs("password")=password then
' se o usuário estiver no banco de dados e a password coincidir
sessao("autorizacao")=1
response.redirect "default.asp"
end if
else
sessao("autorizacao")=-1

end if
rs.close
set rs=nothing
conn.close
set conn=nothing
if sessao("autorizacao")=-1 or session("autorizacao")="" then
' não encontramos o registro
' isso indica que o usuário e/ou a password são errados
response.redirect "login.asp?msg=Usuario%20o%20password%20incorreta"
end if

end if%>

Logo, simplesmente, em cada uma das páginas que quisermos que requeiram autorização prévia checaremos essa variável de sessao e permitiremos o passo se a checagem for correta ou caso contrário, re-encaminharemos o usuário à página de identificação.

<% if session("autorizacao")<>1 then

response.redirect "login.asp"

end if%>

O sistema nos permitiria inclusive conceder diferentes níveis de acesso a páginas dependendo do usuário, simplesmente atribuindo um diferente valor a sua variável de sessao.


 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Saídas em formato compatível Excel



Este exemplo aproveita a capacidade do excel para interpretar o conteúdo de tabelas escritas em linguagem HTML.

Por Pedro Rufo Martin


Uma tabela deste estilo pode ser interpretada por excel:

tabla-excel.gif


que nos mostraria algo deste estilo:

tabla-excel-2.gif


O truque consiste em indicar ao navegador cliente que o que vai receber não é uma página HTML, e sim, um arquivo excel, isto o indicaremos com a instrução asp:

<%Response.ContentType = "application/vnd.ms-excel"%>

No exemplo o que vamos executar é o seguinte código asp:

<html>

<head>
<% Response.Buffer = TRUE
Response.ContentType = "application/vnd.ms-excel"%>

<title>Exemplo de compatibilidade Excel</title>
</head>

<body>
<table border="1" width="60%">
<tr>
<td width="50%" align="center" bgcolor="#C0C0C0">Nº de Fatura</td>
<td width="50%" align="center" bgcolor="#C0C0C0">Importe</td>
</tr>
<tr>
<td width="50%" align="center">1</td>
<td width="50%" align="center">12000</td>
</tr>
<tr>
<td width="50%" align="center">2</td>
<td width="50%" align="center">24000</td>
</tr>
<tr>
<td width="50%" align="center"> </td>
<td width="50%" align="center"><b>=SOMA(B2:B3)</b></td>
</tr>
</table>

</body>

</html>

Quando executarmos o navegador nos dará a opção de salvar o arquivo ou executa-lo através da rede, escolheremos a opção que mais nos interessar.

excel.gif




 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Variáveis de servidor em ASP



Vemos como obter uma lista de todas as variáveis do servidor em ASP, ou em inglês Server Variables. Realizando um percorrido genérico ao array request.servervariables.

Por Miguel Angel Alvarez - Tradução de JML





Em ASP existe uma coleção de variáveis de servidor ou variáveis de ambiente que podem ser interessantes para o programador. As variáveis do servidor oferecem informações relativas tanto ao próprio servidor web como ao cliente que está visitando a página.

Entre os dados que oferecem se encontram o nome do servidor, o nome do arquivo que se está executando, a IP do servidor, a do cliente que está solicitando a página, jogo de caracteres, navegador que utiliza o cliente, etc.

A coleção onde se encontram todas as variáveis do servidor se encontra no array de ASP request.servervariables. Existem muitos valores diferentes nesse array, cada um associado a um nome.

Por exemplo, para mostrar a IP do visitante colocamos:

<%=request.servervariables("REMOTE_ADDR")%>

Para conhecer o navegador do usuário colocaríamos:

<%=request.servervariables("HTTP_USER_AGENT")%>

Ou para ver a rota física onde está o arquivo ASP que se está executando, dentro da estrutura do sistema de arquivos do servidor (o disco rígido e a rota completa do arquivo .asp):

<%=request.servervariables("APPL_PHYSICAL_PATH")%>

Percorrido genérico ao array request.servervariables

Uma boa idéia para conhecer todas as variáveis que existem no array de variáveis de servidor é fazer um percorrido genérico a request.servervariables. Para fazer esse percorrido podemos utilizar um loop for each. Como isto:

for each variable in request.servervariables
response.write "<br> " & variable & ": "
response.write request.servervariables(variable)
next

Com isto mostraremos o nome de cada variável junto com o valor dessa variável. Assim, poderemos ver todas as variáveis que contem o array junto com o dado que armazenam e podemos nos dar conta dos dados que temos disponíveis.

O resultado de execução desse script em um de nossos servidores é o seguinte:

HTTP_CONNECTION:keep-alive
HTTP_KEEP_ALIVE:300
HTTP_ACCEPT:text/xml,application/xml,application/xhtml+xml,text/html; q=0.9,text/plain; q=0.8,image/png,*/*; q=0.5
HTTP_ACCEPT_CHARSET:ISO-8859-1,utf-8;q=0.7,*;q=0.7
HTTP_ACCEPT_ENCODING:gzip,deflate
HTTP_ACCEPT_LANGUAGE:es-es,es;q=0.8,en-us;q=0.5,en;q=0.3
HTTP_COOKIE:ASPSESSIONIDASTATCRD=GAJDKNCANGABJAPEOGBONGFN; ASPSESSIONIDAQSBSCRD=LAJDPPEADNEMHDBKOCLAIMAD
HTTP_HOST:entertainment
HTTP_USER_AGENT:Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9
ALL_RAW: Cache-Control: max-age=0 Connection: keep-alive Keep-Alive: 300 Accept: text/xml,application/xml,application/xhtml+xml,text/html; q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Accept-Encoding: gzip,deflate Accept-Language: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3 Cookie: ASPSESSIONIDASTATCRD=GAJDKNCANGABJAPEOGBONGFN; ASPSESSIONIDAQSBSCRD=LAJDPPEADNEMHDBKOCLAIMAD Host: entertainment User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9
APPL_MD_PATH: /LM/W3SVC/881/ROOT
APPL_PHYSICAL_PATH: C:\WWW\dominio.com\Html\
AUTH_PASSWORD:
AUTH_TYPE:
AUTH_USER:
CERT_COOKIE:
CERT_FLAGS:
CERT_ISSUER:
CERT_KEYSIZE:
CERT_SECRETKEYSIZE:
CERT_SERIALNUMBER:
CERT_SERVER_ISSUER:
CERT_SERVER_SUBJECT:
CERT_SUBJECT:
CONTENT_LENGTH: 0
CONTENT_TYPE:
GATEWAY_INTERFACE: CGI/1.1
HTTPS: off
HTTPS_KEYSIZE:
HTTPS_SECRETKEYSIZE:
HTTPS_SERVER_ISSUER:
HTTPS_SERVER_SUBJECT:
INSTANCE_ID: 881
INSTANCE_META_PATH: /LM/W3SVC/881
LOCAL_ADDR: 255.176.130.0
LOGON_USER:
PATH_INFO: /pruebas_dw/variables_server.asp
PATH_TRANSLATED: C:\WWW\dominio.com\dominio.com\Html\pruebas_dw\variables_server.asp
QUERY_STRING:
REMOTE_ADDR: 1.17.117.37
REMOTE_HOST: 1.17.117.37
REMOTE_USER:
REQUEST_METHOD: GET
SCRIPT_NAME: /pruebas_dw/variables_server.asp
SERVER_NAME: entertainment
SERVER_PORT: 80
SERVER_PORT_SECURE: 0
SERVER_PROTOCOL: HTTP/1.1
SERVER_SOFTWARE: Microsoft-IIS/6.0
URL: /pruebas_dw/variables_server.asp
HTTP_CACHE_CONTROL: max-age=0
HTTP_CONNECTION: keep-alive
HTTP_KEEP_ALIVE: 300
HTTP_ACCEPT: text/xml,application/xml,application/xhtml+xml,text/html; q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
HTTP_ACCEPT_CHARSET: ISO-8859-1,utf-8;q=0.7,*;q=0.7
HTTP_ACCEPT_ENCODING: gzip,deflate
HTTP_ACCEPT_LANGUAGE: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3
HTTP_COOKIE: ASPSESSIONIDASTATCRD=GAJDKNCANGABJAPEOGBONGFN; ASPSESSIONIDAQSBSCRD=LAJDPPEADNEMHDBKOCLAIMAD
HTTP_HOST: entertainment
HTTP_USER_AGENT: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9
Nota: Mudei algum dado sensível desta lista de variável, como a IP do visitante ou a do servidor, ou a rota física dos arquivos. Porém, é perfeito para se ter uma idéia dos conteúdos que oferece o array request.servervariables.


 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
GeoLite Country para ASP. Conhecer o país de um IP



Versão gratuita de GeoIP Country para averiguar o país de procedência dos visitantes de nossa web.

Por Miguel Angel Alvarez - Tradução de JML





Vamos falar de GeoLite Country, um produto gratuito que nos serve para conhecer o país de procedência de nossos visitantes, que se deduz a partir de seu endereço IP. Cada endereço IP corresponde a um provedor de acesso a Internet, localizado em um país. Cada provedor tem atribuído uma categoria de endereços IP para realizar suas atividades. Estes produtos têm um banco de dados com essas categorias de endereços IP que se correspondem a cada provedor e país.

Este software pode ser baixado gratuitamente, porém não é tão preciso como GeoIP Country, a versão avançada paga, também desenvolvida por MaxMind. Como GeoLite Country é gratuito, se oferece sem suporte técnico e as atualizações do banco de dados são menos freqüentes que a versão paga. Trataremos neste artigo concretamente a versão gratuita para instala-la em um servidor ASP.

Na página de MaxMind pode-se encontrar tanto as versões gratuitas como as pagas de GeoIP. Além disso, têm vários formatos ou módulos, para averiguar países ou cidades e um API que se pode utilizar em páginas web para consultar o banco de dados de IPs.

A versão gratuita de GeoIP está em MaxMind - GeoLite Country | Open Source IP Address to Country Database

O mais simples é utilizar o API que oferecem gratuitamente para fazer localizações de países. O API está no endereço MaxMind - Resources for Developers

Como estamos interessados na instalação do API em um servidor ASP, de todas as linguagens nas quais se oferece o API, nos interessa o "MS COM Object" (Objeto COM de Microsoft), que está no endereço MaxMind - GeoIP MS COM API

Ali veremos um link para download grátis, que nos levará a um diretório onde encontraremos vários arquivos. Nós selecionamos o arquivo GeoIP-COM-1.0.zip. Obviamente, teríamos que obter a versão mais nova disponível. Uma vez baixado, podemos descompactar e veremos que inclui vários arquivos, com tudo que nos faz falta para começar nossa localização de países por IP. Entre o que encontraremos neste arquivo está um arquivo .dll que temos que instalar no servidor e uma série de páginas com exemplos de programação para localizar o país do visitante por seu IP. Há exemplos de programação em ASP, PHP, Cold Fusion, Perl, Python… Também há um txt com instruções para instalar o componente e usa-lo corretamente.

Instalar o componente GeoIP

Para instalar um componente COM no servidor temos que realizar uma série de passos relatados no artigo Componentes do servidor ASP. Embora no txt nos explicam também a tarefa:

Copiar GeoIPDemo.dat en C:\Arquivos de programa\geoip\GeoIPDemo.dat
(Este diretório pode-se muda-lo ao nosso gosto. Logo, na programação ASP, indicaremos o diretório concreto onde tivermos colocado o arquivo)
Copiar GeoIPCOM.dll no diretório "system32". Dependendo de nossa instalação de Windows este diretório pode estar em ou outro site. Por exemplo, em Win XP Pro está em C:\windows\system32
Registrar o componente COM, com as instruções:
C:\> cd windows\system32
C:\windows\system32> regsvr32 GeoIPCOM.dll

De qualquer forma, muitas vezes queremos instalar o componente em um servidor de hospedagem compartilhada, onde teremos que realizar ações distintas. O normal é que no servidor nos indiquem como registrar componentes COM. Certamente, alguns provedores não o permitam, mas o normal é que sim nos deixem instala-los. No caso de não ser assim, teríamos que pensar em mudarmos de servidor de hosting.

Quanto a copiar .dat em C:\Arquivos de programa\geoip\GeoIPDemo.dat, logicamente, em um servidor de hosting normal não vamos poder, porque não vamos ter acesso a esse diretório. Por isso, teremos que subir por FTP o arquivo e hospeda-lo em um diretório onde sim possamos subir arquivos. Como dissemos, posteriormente, no script ASP para localizar o IP, poderemos indicar onde se colocou esse arquivo.

Script ASP de prova do componente

Como dizíamos, no próprio pacote de download temos uma série de exemplos em várias linguagens de programação para provar o sistema de localização de IP de GeoLite. Nós vamos utilizar o arquivo .asp, que modificamos um pouco para adicionar uns comentários e simplifica-lo ao nosso gosto.

O código do exemplo que funcionou perfeitamente em nosso servidor local é o seguinte:

<% Response.Buffer = TRUE %>
<html>
<title>GeoIP Lite Test</title>
<body bgcolor=#CCCCDD>
<h1><center>GeoIP Lite Test</center></h1>
<br><center>
<br>
<form action="GeoIPTest.asp" method="POST">
<table border=0>
<tr><td>hostname:</td><td><input type=text name=hostname></td></tr>
</table>
<input type=submit value="Submit" name=submit>
</form>
<%
if Request.Form("submit") = "Submit" then
'se se recebem dados de formulario

'recebo o nome do host que queremos ver a ip
hostname = Request.Form("hostname")

'crio o objeto geoip
set geoip = Server.CreateObject("GeoIPCOM.GeoIP")
'carrego o arquivo com os dados de ips e países
geoip.loadDataFile("C:\Arquivos de programa\geoip\GeoIPDemo.dat")
'obtengo dados sobre o hostname recebido por formulario
country_code = geoip.country_code_by_name(hostname)
country_name = geoip.country_name_by_name(hostname)

'mostramos os dados deste host
Response.Write("<table cellpadding=2 border=1><tr><th colspan=2>Results</th></tr>")
Response.Write("<tr><td>Hostname</td><td>" + hostname + "</td></tr>")
Response.Write("<tr><td>ISO 3166 Country Code</td><td>" + country_code + "</td></tr>")
Response.Write("<tr><td>Full Country Name</td><td>" + country_name + "</td></tr>")
Response.Write("</table>")

end if
%>
</center>
</body>
</html>
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Um Sistema de postais Virtuais em ASP I



Muitos de vocês me pediram um artigo sobre o desenvolvimento de uma aplicação de envio de postais, pois aqui está.

Por Pedro Rufo Martin




O código que vou mostrar é o mesmo que o usado no sistema de postais de ASPTutor, portanto para que você tenha uma idéia do funcionamento geral antes de se confundir com o código, lhe recomendo que passe por esta página.

O ActiveX que vamos usar para enviar o postal é ASPemail de Persit, entre outras coisas porque pouco a pouco se converteu em um padrão e além disso, nos permite enviar correio com formato HTML. Você tem todos os procedimentos de configuração e uso de ASPEmail em ASPTutor.com Tutorial de ASPEmail

Nossa aplicação vai custar de uma estrutura de diretórios para armazenar as imagens, um banco de dados e três módulos asp.

Vamos começar descrevendo a estrutura de diretórios que vamos criar.
Situaremos nossa aplicação de e-postais e um diretório que denominaremos "postais" (aqui situaremos nossos módulos .asp) que por sua vez criaremos ou sub-diretório de "postais" chamado "images" para situar as imagens que enviaremos em nossas postais. Debaixo de "images" criaremos o diretório "miniaturas" destinado a conter cópias reduzidas de todas nossas imagens a fim de agilizar o carregamento quando mostremos os catálogos de imagens.

Nossa estrutura final deveria ficar assim:


postales-asp-1.gif


Descrição do banco de dados:

postales-asp-2.gif


Como se vê, o banco de dados é muito simples, só contém uma tabela denominada "postais" e três campos

id Campo auto-numérico que nos faz de identificador de cada imagem
url Nome físico da imagem (mariposa.gif, avion.jpg,...)
tema El campo tema nos servirá para agrupar todas as imagens de um mesmo tipo (paisagens, infantil, ...)



Ate aquí é simples, não é? Bom, pois como se vê agora o código tampouco é tão complexo.

Módulos da aplicação

Como dissemos ao princípio, a aplicação consta de 3 módulos:
default.asp Será a página de início de nosso sistema de postais. Cumprirá uma dupla função, nos servirá tanto para escolher o tema do postal (se se entra nele sem parâmetros) como para que o usuário confeccione o postal uma vez escolhido o tema
confirmapostal.asp Neste modulo comprovaremos que o usuário introduziu todos os dados necessários para o envio, e sendo assim, lhe mostraremos uma pré-visualização do postal e lhe daremos a oportunidade de envia-lo ou voltar atrás para corrigi-lo.
enviarpostal.asp Neste módulo chamaremos a ASPEmail e confeccionaremos e enviaremos o postal



 
Topo