Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, andei lendo sobre o objeto ServerVariables para passar informações de uma página em uma url, e não sei se é possível passar dados
como o código-fonte (conteúdo) de uma página através da url, aqui temos as funções mais conhecidas:
-
Path_info – Armazena a informação do caminho da URL requisitada pelo navegador.(Não armazena a raiz do diretório do endereço URL.)
-
CONTENT_LENGHT – permite determinar a extensão do conteúdo da solicitação HTTP do cliente usando o método POST.
-
Query_String – Contém os parâmetros passados como parte de uma requisição a uma URL . (Tudo depois de um "? " é armazenado)
-
SERVER_NAME – Fornece o nome do servidor contido na URL da página atual.
-
HTTP_UA_COLOR – Indica o número de cores disponíveis na máquina do usuário.
-
HTTP_UA_PIXELS – Contém a resolução da tela do navegador que fez a requisição.
-
REMOTE _ADRR – O endereço IP do host remoto que esta solicitando o serviço.
-
REMOTE _HOST – O nome do host que esta fazendo a solicitação do serviço.
-
LOGON_USER - A conta no Windows NT no qual o usuário esta logado.
-
HTTP_UA_OS – O nome e a versão do software servidor que está respondendo ao pedido.
-
AUTH_TYPE - O método de autenticação que o servidor usa para validar usuários quando eles tentam acessar um script protegido.
-
LOGON_USER - A conta no Windows NT do usuário.
-
SERVER_PORT – O número da porta da qual a requisição foi enviada
-
SERVER_PROTOCOL – O nome e a versão para o protocolo de informação.
-
SERVER_SOFTWARE – O nome e a versão do software do servidor.
-
SCRIPT_MAP – Informa a base da URL
-
SCRIPT_NAME – Informa todo o caminho virtual para o roteiro presente.
-
REQUEST_ADDR – Informa o endereço IP do host remoto que fez a requisição.
-
REQUEST_METHOD – O método usado para fazer a requisição.(GET, POST, etc..)
eu preciso recuperar todo código-fonte de uma página que nesta lista de funções eu não encontrei, existe algum outro método para ASP Clássico?
Obrigado xanburzum, agora como eu trato da acentuação que está vindo com caracteres especiais?
tem uma função que coloquei no fórum dá uma olhada, faz o tratamento certinho
procurei por toda parte e não encontrei a função para decodificar, encontrei e testei algumas que encontrei mas não obtive sucesso.
tentei com: <%Response.charset="utf-8"%> e nada, eu acho que tenho que tratar
a string só não sei como fazer.
talvez eu consigo alguma resposta com a imagem do texto codificado abaixo, veja que tudo que é acento é substituído pelo mesmo caracter :
/applications/core/interface/imageproxy/imageproxy.php?img=http://www.lendadomato.com/log-erro-codificacao.jpg&key=e8d4ac43507d6bb1d05341aa0dcc6c23f6ab1772ed2c8c9695d27e939a23bb1f" alt="log-erro-codificacao.jpg" />
mude o charset da sua pagina, coloca assim:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"
Response.Charset="ISO-8859-1" %>
No cabeçalho do site coloque a meta tag <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
e para UTF-8
Mudar o head da página que solicita os dados para que ele fique assim
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
Na página que responde os dados colocar isso antes do retorno do conteúdo (logo no topo):
<%
Response.AddHeader "Content-Type", "text/html; charset=utf-8"
Response.AddHeader "Pragma", "no-cache"
response.Charset="utf-8"
%>
não resolveu, nos textos do arquivo a acentuação está ok, o resultado da string é que imprime errado, já
tentei fazendo um replace mas o caracter é sempre o mesmo para todo tipo de acentuação e cedilhas sendo aquele quadrado com quatro Fs dentro, dessa forma ele substitui pela letra sem acento, mas eu precisaria da acentuação correta na string "StrHTML".
Mudou de UTF-8 para ISO e fez ao contrário tb
xanburzum, eu acho que já sei o que pode estar acontecendo, fiz teste com outras urls e me retornou a acentuação
correta, o teste que estou fazendo é com sites que contém includes, eu acho que pode ser isso a causa do problema
pois o <head> está no topo que acompanha todas as outras páginas que não tem a orientação de codificação, então
ele codifica somente o topo da página, vendo que cada página contém 4 includes, sendo eles: topo.asp, principal.asp, canto_direito.asp, e rodapé.asp, e pelo resultado, somente a acentuação do topo que vem correta, será que é isso?
que pena que não posso ir mais além, desenvolvi um sistema de url amigável sem uso do Rewrite que pega o título e o código fonte da página anterior, e cria uma página html tipo: "camiseta-legiao-urbana.html" e grava mais uma linha no arquivo sitemap.txt com essa url, isso em asp clássico, mas o código fonte está gravando como Unicode e eu não consigo resolver, só está faltando essa parte,segue abaixo os link de teste:
http://www.lendadomato.com/gravando-codigo-fonte.asp
consegui resolver o problema dos caracteres, agora está gravando certinho o código fonte no arquivo criado como html, mas eu usei a mesma função pra gravar um arquivo txt e o html criado imprime como um arquivo de texto mesmo com a extensão em html, tem alguma forma de fazer isso ou devo abrir outro tópico?
xanburzum, quando grava a página ela é exibida assim:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml">](http://www.w3.org/1999/xhtml)
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Camisetas SIPAT 2014 Gianturco</title>
<META NAME=DESCRIPTION CONTENT="Camisetas SIPAT 2014 Gianturco">e quando eu abro o código fonte dela ele está gravado assim:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><BR><html xmlns="http://www.w3.org/1999/xhtml"><BR><head><BR><meta http-equiv="content-type" content="text/html; charset=utf-8" /><BR><title>Camisetas SIPAT 2014 Gianturco</title><BR><META NAME=DESCRIPTION CONTENT="Camisetas SIPAT 2014 Gianturco"><BR><meta name="keywords" content="Camisetas,promocionais,regatas,camisetas
estou fazendo dessa forma para enviar os dados:
If Not StrURL = "" Then
Set ObjParser = New clsHTMLParser
With ObjParser
StrHTML = .GetURL(StrURL)
codigo = replace(Server.HTMLEncode(StrHTML), vbCrLf, "<BR>")
gravar.write codigo
usei essa função e ainda continua gravando com os caracteres e em uma única linha, vi que o arquivo gravado está no formato ASCII:
Function HTMLEspeciais(sString)
If (sString <> "") Then
sString = Replace(sString, "á", "á")
sString = Replace(sString, "â", "â")
sString = Replace(sString, "à", "à")
sString = Replace(sString, "ã", "ã")
sString = Replace(sString, "ç", "ç")
sString = Replace(sString, "é", "é")
sString = Replace(sString, "ê", "ê")
sString = Replace(sString, "í", "í")
sString = Replace(sString, "ó", "ó")
sString = Replace(sString, "ô", "ô")
sString = Replace(sString, "õ", "õ")
sString = Replace(sString, "ú", "ú")
sString = Replace(sString, "ü", "ü")
sString = Replace(sString, "Á", "Á")
sString = Replace(sString, "Â", "Â")
sString = Replace(sString, "À", "À")
sString = Replace(sString, "Ã", "Ã")
sString = Replace(sString, "Ç", "Ç")
sString = Replace(sString, "É", "É")
sString = Replace(sString, "Ê", "Ê")
sString = Replace(sString, "Í", "Í")
sString = Replace(sString, "Ó", "Ó")
sString = Replace(sString, "Ô", "Ô")
sString = Replace(sString, "Õ", "Õ")
sString = Replace(sString, "Ú", "Ú")
sString = Replace(sString, "Ü", "Ü")
sString = Replace(sString, """", """) '"
sString = Replace(sString, "<", "<") '<
sString = Replace(sString, ">", ">") '>
End If
HTMLEspeciais = sString
End Function
consegui um bom resultado com essa função:
Function HTMLDecode(ByVal EncodedString)
'Declarations
Dim ret
Dim i
'Decoding
ret = EncodedString
ret = Replace( ret, """, chr(34) )
ret = Replace( ret, "<" , chr(60) )
ret = Replace( ret, ">" , chr(62) )
ret = Replace( ret, "&" , chr(38) )
ret = Replace( ret, " ", chr(32) )
For i = 1 to 255
ret = Replace( ret, "" & i & ";", chr( i ) )
Next
'Return
HTMLDecode = ret
End Function
gravar.write replace(HTMLDecode(codigo), vbCrLf, "<BR>")
gravar.close
mas continua gravando tudo em uma linha e com formato ASII.
encontrei essa função que resolveu todo problema de acentuação e caracteres ASCII, agora só falta resolver as quebras de linha e espaços, alguém pode me ajudar?:
function htmlspecialchars_decode(someString)
htmlspecialchars_decode = replace(replace(replace(replace(someString, "&", "&"), ">", ">"), "<", "<"), """, """")
end function
ôpa, problema resolvido, eu mudei:
codigo = replace(Server.HTMLEncode(StrHTML), vbCrLf, "<BR>")
para
codigo = Server.HTMLEncode(StrHTML)
e adicionei esse replace:
function htmlspecialchars_decode(someString)
htmlspecialchars_decode = replace(replace(replace(replace(someString, "&", "&"), ">", ">"), "<", "<"), """, """")
end function
obrigado xanburzum pela força, vou organizar os códigos e postar um tuto em outra sessão sobre
"Urls Amigáveis sem Rewrite" e enviando a url para o arquivo sitemap.txt num só clique.
Pode marcar como resolvido!
tem um código que postei que vc consegue ler/recuperar o código-fonte de uma outra página.
olha o exemplo:
<!--#INCLUDE FILE="clsHTMLParser.asp"-->
<%
Dim StrURL
Dim StrHTML
Dim ObjParser
StrURL = Request.QueryString("URL")
%>
Este script irá solicitar a página do servidor especificado no URL e analisar o título, descrição e palavras-chave para você
<%
If Not StrURL = "" Then
Set ObjParser = New clsHTMLParser
With ObjParser
StrHTML = .GetURL(StrURL)
%>
End If
%>
Classe
<%
' HTML Parser
' ------------------------------------------------------------------------------
Class clsHTMLParser
' ------------------------------------------------------------------------------
Private mStrHTML
Private mObjRegExp
Private mObjMatches
Private mObjMatch
Public Title
Public Keywords
Public Description
' ------------------------------------------------------------------------------
Public Property Let HTML(ByRef pStrHTML)
mStrHTML = pStrHTML
Set mObjRegExp = New RegExp
mObjRegExp.IgnoreCase = True
Call ParseTitle()
Call ParseDescription()
Call ParseKeywords()
Set mObjMatch = Nothing
Set mObjMatches = Nothing
Set mObjRegExp = Nothing
End Property
' ------------------------------------------------------------------------------
Public Property Get HTML()
HTML = mStrHTML
End Property
' ------------------------------------------------------------------------------
Private Sub ParseTitle()
Title = ""
' ------------------------------------------------------------------------------
Private Sub ParseDescription()
Description = ""
mObjRegExp.Pattern = "<META[^>]+(name=""description""|content=""([^""])"")[^>]+(name=""description""|content=""([^""])"")[^>]*>"
Set mObjMatches = mObjRegExp.Execute(mStrHTML)
If mObjMatches.Count = 0 Then Exit Sub
Description = mObjMatches.item(0).Value
Description = Mid(Description, InStr(1, Description, "content=""", vbTextCompare) + 9)
Description = Mid(Description, 1, InStr(1, Description, """", vbTextCompare) -1)
End Sub
' ------------------------------------------------------------------------------
Private Sub ParseKeywords()
Keywords = ""
mObjRegExp.Pattern = "<META[^>]+(name=""keywords""|content=""([^""])"")[^>]+(name=""keywords""|content=""([^""])"")[^>]*>"
Set mObjMatches = mObjRegExp.Execute(mStrHTML)
If mObjMatches.Count = 0 Then Exit Sub
Keywords = mObjMatches.item(0).Value
Keywords = Mid(Keywords, InStr(1, Keywords, "content=""", vbTextCompare) + 9)
Keywords = Mid(Keywords, 1, InStr(1, Keywords, """", vbTextCompare) -1)
End Sub
' ------------------------------------------------------------------------------
Public Function GetURL(ByRef pStrURL)
Dim lObjSpider
Dim strText
If pStrURL = "" Then Exit Function
On Error Resume Next
' Different variations of XML objects
'Set lObjSpider = Server.CreateObject ("MSXML2.XMLHTTP.3.0")
'Set lObjSpider = Server.CreateObject ("MSXML2.ServerXMLHTTP")
Set lObjSpider = Server.CreateObject ("Microsoft.XMLHTTP")
' Could not create Internet Control
If Err Then
GetURL = "Error: " & Err.Description
Exit Function
End If
On Error Goto 0
With lObjSpider
.Open "GET", pStrURL, False, "", ""
' ------------------------------------------------------------------------------
End Class
' ------------------------------------------------------------------------------
%>