Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lendadomato

Passagem de parâmetros com Objeto ServerVariables

Recommended Posts

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:

  1. 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.)
  2. CONTENT_LENGHT – permite determinar a extensão do conteúdo da solicitação HTTP do cliente usando o método POST.
  3. Query_String – Contém os parâmetros passados como parte de uma requisição a uma URL . (Tudo depois de um "? " é armazenado)
  4. SERVER_NAME – Fornece o nome do servidor contido na URL da página atual.
  5. HTTP_UA_COLOR – Indica o número de cores disponíveis na máquina do usuário.
  6. HTTP_UA_PIXELS – Contém a resolução da tela do navegador que fez a requisição.
  7. REMOTE _ADRR – O endereço IP do host remoto que esta solicitando o serviço.
  8. REMOTE _HOST – O nome do host que esta fazendo a solicitação do serviço.
  9. LOGON_USER - A conta no Windows NT no qual o usuário esta logado.
  10. HTTP_UA_OS – O nome e a versão do software servidor que está respondendo ao pedido.
  11. AUTH_TYPE - O método de autenticação que o servidor usa para validar usuários quando eles tentam acessar um script protegido.
  12. LOGON_USER - A conta no Windows NT do usuário.
  13. SERVER_PORT – O número da porta da qual a requisição foi enviada
  14. SERVER_PROTOCOL – O nome e a versão para o protocolo de informação.
  15. SERVER_SOFTWARE – O nome e a versão do software do servidor.
  16. SCRIPT_MAP – Informa a base da URL
  17. SCRIPT_NAME – Informa todo o caminho virtual para o roteiro presente.
  18. REQUEST_ADDR – Informa o endereço IP do host remoto que fez a requisição.
  19. 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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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")
%>
<H1></H1>
<P>

Este script irá solicitar a página do servidor especificado no URL e analisar o título, descrição e palavras-chave para você
</P>
<FORM>
	<INPUT size="50" name="URL" value="<%=StrURL%>"><BR>
	<INPUT type="Submit" value="Parse">
</FORM>
<BR><BR>
<%
If Not StrURL = "" Then
	Set ObjParser = New clsHTMLParser
	With ObjParser
		StrHTML = .GetURL(StrURL)
		%>
		<TABLE border="1">
			<TR>
				<TD>Title</TD>
				<TD><%=.Title%></TD>
			</TR>
			<TR>
				<TD>Keywords</TD>
				<TD><%=.Keywords%></TD>
			</TR>
			<TR>
				<TD>Description</TD>
				<TD><%=.Description%></TD>
			</TR>
		</TABLE>
		<HR>
		<%
		Response.Write Replace(Server.HTMLEncode(StrHTML), vbCrLf, "<BR>")
	End With
	Set ObjParser = Nothing
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 = ""
		mObjRegExp.Pattern = "<TITLE>([^<]*)</TITLE>"
		Set mObjMatches = mObjRegExp.Execute(mStrHTML)
		If mObjMatches.Count = 0 Then Exit Sub
		Title = mObjMatches.item(0).Value
		Title = Replace(Title, "<TITLE>", "", 1, -1, vbTextCompare)
		Title = Replace(Title, "</TITLE>", "", 1, -1, vbTextCompare)
	End Sub
' ------------------------------------------------------------------------------
	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, "", ""
			.Send
			GetURL = .ResponseText
		End With
		Set LobjSpider = Nothing

		HTML = GetURL
		
	End Function
' ------------------------------------------------------------------------------
End Class
' ------------------------------------------------------------------------------
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem uma função que coloquei no fórum dá uma olhada, faz o tratamento certinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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"
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mudou de UTF-8 para ISO e fez ao contrário tb

Compartilhar este post


Link para o post
Compartilhar em outros sites

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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">
<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">
<meta name="keywords" content="Camisetas,promocionais,regatas,camisetas bh, camisetas

 

 

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.