Newsgroup: it.comp.www.asp
Titolo: stampa da browser di pagina asp riservata

ciao a tutti.
ho realizzato un sito che ha uno script che fa la formattazione e la
stampa del documento visualizzato.
con le pagine html va perfettamente, mentre con le pagine asp che hanno
un controllo di autenticazione con semplice session non mi viene
stampata la pagina visualizzata ma il form di no_log che si ha appunto
se l'utente non si è registrato, nonostante il fatto sia registrato e
quindi la session ci sia...
non so come scavalcare il problema... con le pagine asp senza
autenticazione funziona bene...
--
ciaociao
     ******* SMARTBASTARDINSIDE *******
 
http://www.casodesign.net
 
http://www.smartrix.net
Alberto aka _cAsO_ (30,SSBwas55,MI) from I.D.A

 autenticazione funziona bene...
Stampa nel senso di stampa a video, non stampa stampante, sě?
Quindi, il problema č che l'autenticazione NON ti funziona, sě?
.... rivedi il codice, altro non saprei dire. 
Oltre al fatto che le session sono comunque legate ai cookie (cioč 
devono essere abilitati), quindi se hai i cookie disabilitati, manco le 
session funziano.

 autenticazione funziona bene...
Ma tale pagina che formatta il codice della pagina, lo prende con l'url
grabbing (prendi il risultato da un'altra pagina ASP)?
Ciao
--
AZ [Microsoft .NET MVP]

 Quindi, il problema è che l'autenticazione NON ti funziona, sì?
no, anche quella va benissimo, il problema è, cerco di spiegarmi meglio, che
quando clicco sulla pagina stampa contenuta in una pagina riservata a cui ho
avuto regolare accesso con controllo di none utente e pwd invece di
visualizzare formattato il tutto mi visualizza formattato ancora la finestra
di login.
se ci fossero incomprensioni vi faccio vedere il sito direttamente, tanto
ormai è pronto...


 grabbing (prendi il risultato da un'altra pagina ASP)?
si, prende tutto dalla pagina asp e sempre con asp lo ripulisce da tutto
quello che non serve e scrive una nuova pagina


 Alberto aka _cAsO_ (30,SSBwas55,MI) from I.D.A
Ciao


Scusa ma xche invece delle session che come ti hanno detto funzionano a
cookie attivi non fai loggare l'utente 1 volta e ti salvi l'utente in una
variabile e te lo porti a presso sempre??? come la metti tu mi sembra uno
sforzo inutile. Se hai problemi di autentificazione puoi sempre creare una
variabile e fare una cosa del tipo:
autentificato = true
oppure
autentificato = "si"
oppure
autentificato = "attivo"
Boh poi lo scegli tu il sistema... puoi crearti un file include e fare che
ogni pagina lo carichi... a me sembra meno difficile che gestire una session
che non a tutti può funzionare.
Ciao.

 da modificare.
eccolo, chiaramente non è opera mia... :P
<%
Response.Buffer = True
Dim print_Vals, print_QueryStr, print_Path
Const print_file = "/printversion/print.asp"
'CHECK PRINTLINK FLAG
If Len(Request.QueryString.Key("pntverldg")) Then
 'SHOW PAGE LOADING MESSAGE
 Call PrintLoadingMsg()
ElseIf Len(Request.QueryString.Key("printlink")) Or printlink Then
 'CREATE LINK TO PRINT VERSION
 'check for querystring values
 If Request.QueryString.Count > 0 Then
  print_QueryStr = Replace(Request.QueryString,"printlink","")
  If Len(print_QueryStr) Then
   print_Vals = print_Vals & "&qstr=?" & Server.URLEncode(print_QueryStr)
  End If
 End If
 'check for posted values
 If Request.Form.Count > 0 Then
  print_Vals = print_Vals & "&fstr=" & Server.URLEncode(Request.Form)
 End If
 'limit the length of the querystring
 If Len(print_Vals) > 2000 Then
  print_Vals = Left(print_Vals,2000)
 End If
 'set file path
 If Len(Request.ServerVariables("HTTP_REFERER")) > 0 Then
  print_Path = Request.ServerVariables("HTTP_REFERER")
  print_Path = Mid(print_Path,Instr(1,Replace(print_Path,"://",""),"/")+3)
 Else
  print_Path = Request.ServerVariables("PATH_INFO")
 End If
 'write javascript to create link to print.asp
 With(Response)
  .Write vbcrlf & "<!--/*--><!-- noprint --><script
language='javascript'><!--*/-->" & vbcrlf
  .Write "print_file = '"&print_file&"'" & vbcrlf
  .Write "path = '"&print_Path&"'" & vbcrlf
  .Write "vals = '"&print_Vals&"'" & vbcrlf
  .Write "if(print_file == path){" & vbcrlf
  .Write " var newpath = String(window.location)" & vbcrlf
  .Write " newpath = newpath.replace(':\/\/','')" & vbcrlf
  .Write " newpath = newpath.substring(newpath.indexOf('/'))" & vbcrlf
  .Write " path = newpath;" & vbcrlf
  .Write "}" & vbcrlf
  .Write "var fileExt=/\..{3,4}$/" & vbcrlf
  .Write "if(!fileExt.test(path)){" & vbcrlf
  .Write " path = '';" & vbcrlf
  .Write "}" & vbcrlf
  .Write "if(path.length>0){" & vbcrlf
  If FALSE Then 'choose type
   'text icon
   .Write " print_icon = '&#202;'" & vbcrlf
  Else
   'image icon
   .Write " print_icon = '<img src=""/printversion/print_icon.gif"" border=""0""
height=""15"" width=""15"" alt=""Go to print version"">'" & vbcrlf
  End If
  .Write " with(document){" & vbcrlf
  .Write "
write('<style>.print_icon{font-family:webdings;color:navy;text-decoration:none;font-size:15pt}</style>');"
& vbcrlf
  .Write "  write('<table border=""0"" cellpadding=""0"" cellspacing=""0"">');" &
vbcrlf
  .Write "  write(' <tr>')" & vbcrlf
  .Write "  write('  <td><a href="""&print_file&"?pntverldg=&page='+path+vals+'""
class=""print_icon"" title=""Go to print version"">'+print_icon+'&nbsp;</a></td>')"
& vbcrlf
  .Write "  write('  <td align=""left""><font face=""Verdana"" size=""1""><a
href="""&print_file&"?pntverldg=&page='+path+vals+'""
style=""color:navy;text-decoration:none;font-size:10px"" title=""Go to print
version"">Versione stampabile</a></font></td>')" & vbcrlf
  .Write "  write(' </tr>')" & vbcrlf
  .Write "  write('</table>')" & vbcrlf
  .Write " }" & vbcrlf
  .Write "}" & vbcrlf
  .Write "<!--/*--></script><!-- /noprint --><!--*/-->" & vbcrlf
 End With
Else
 'CREATE PRINT VERSION
 Call CreatePrintVersion()
End If
'SUPPORTING ROUTINES
'---------------------------------------------------------------------------------------------
Sub CreatePrintVersion()
 Dim qstr, fstr, expObj, match, matches
 Dim page, pageHTML, FSO, stime
 Dim xmlhttp, printlink
 stime = Timer()
 page = Request.QueryString("page")
 qstr = Request.QueryString("qstr")
 fstr = Request.QueryString("fstr")
 'BASIC ERROR HANDELING
 If ScriptEngineMajorVersion < 5 Then
  PrintErrMsg("You are using " & ScriptEngine & " version " &
ScriptEngineMajorVersion & "." & ScriptEngineMinorVersion & "<br>This page requires
that you use version 5.0 or greater.")
  Exit Sub
 ElseIf Len(page) = 0 Then
  PrintErrMsg("Please provide a web page to create a print version.")
  Exit Sub
 End If
 'OPEN THE PAGE SOURCE
 '(you can easily add more page types below)
 Select Case Lcase(StripFileExt(page))
  Case ".asp"
   Set xmlhttp = Server.CreateObject("Microsoft.XMLHTTP")
   ' xmlhttp.Open "POST", "
http://localhost
" & page & qstr, False
   xmlhttp.Open "POST", "
http://www.anasf.it
" & page & qstr, False
   xmlhttp.Send fstr
   pageHTML = xmlhttp.ResponseText
   'check if file was found
   If Not xmlhttp.status = 200 Then
    If xmlhttp.status = 404 Then
     PrintErrMsg("Web Page not found,<br>please check the URL.")
    Else
     PrintErrMsg("HTTP Error: "&xmlhttp.status&" - "&xmlhttp.statusText)
    End If
    Set xmlhttp = Nothing
    Exit Sub
   End If
   Set xmlhttp = Nothing
  Case Else
   Set FSO = Server.CreateObject("Scripting.FileSystemObject")
   'check if file exists
   If FSO.FileExists(Server.MapPath(page)) Then
    pageHTML = FSO.OpenTextfile(Server.MapPath(page)).ReadAll
   Else
    PrintErrMsg("Web Page not found,<br>please check the URL.")
    Set FSO = Nothing
    Exit Sub
   End If
   Set FSO = Nothing
 End Select
 'BEGIN WRITING THE PRINTER VERSION
Response.Write "<table width='650px' border='0' cellpadding='0' cellspacing='0'
align='center'><tr><td><a href='javascript:history.go(-2)'
style='color:navy;font-size:7pt;font-family:verdana;font-weight:bold''><img
src='indietro.gif' width='85' height='18' border='0'></a></i></b></td><td
align='right'><small><a href='javascript:window.print()'
style='color:navy;text-decoration:none;font-size:7pt;font-family:verdana;font-weight:bold'
title='Stampa'>[Stampa]</a></small></td></tr><tr><td colspan='2'><hr noshade
color='#000000' size='1'></td></tr>"
 'CREATE REGEXP OBJECT
 Set expObj = New RegExp
 expObj.IgnoreCase = True
 expObj.Global = True
 On Error Resume Next
 'FIND AND REPLACE THE BODY TAG
 '(here we change the background color to white
 'and a onload function to send the page to the printer)
 expObj.Pattern = "<\s*body.*>"
 'Debug matches (use to debug what the reg exp is finding)
 If FALSE Then
  Call DebugMatches(expObj,pageHTML,stime)
 Else
  pageHTML = expObj.Replace(pageHTML,"<body bgcolor='#FFFFFF'
onload=""javascript:if(confirm('Stampare il documento?')){window.print()}"">")
  Call Chk4RegExpErr(expObj)
 End If
 'FIND ALL THE "NO PRINT" SECTIONS
 expObj.Pattern =
"<!--\s*noprint\s*-->((((?!<!--\s*noprint\s*-->)|(<!--\s*noprint\s*-->((.|\n)*?)<!--\s*/noprint\s*-->))(.|\n))*?)<!--\s*/noprint\s*-->"
 'Debug matches
 If FALSE Then
  Call DebugMatches(expObj,pageHTML,stime)
 Else
  'REMOVE THE "NO PRINT" SECTIONS
  pageHTML = expObj.Replace(pageHTML, "")
  Call Chk4RegExpErr(expObj)
 End If
 'DISABLE ALL THE INPUTS & LINKS
 '(takes the remaining html and disables tag types below)
 '--find input tags
 expObj.Pattern =
"<\s*input\s+[((\n|.)+?)]*type\s*=[\s""']*([a-zA-Z0-9/._\-~`!@#$%^&*+\\:?=\(\)\;]*)[""']*"
 'Debug matches
 If FALSE Then
  Call DebugMatches(expObj,pageHTML,stime)
 Else
  pageHTML = expObj.Replace(pageHTML, "<input type='$1' disabled")
  Call Chk4RegExpErr(expObj)
 End If
 '--find textarea tags
 expObj.Pattern = "<\s*textarea\s+[((\n|.)+?)]*"
 'Debug matches
 If FALSE Then
  Call DebugMatches(expObj,pageHTML,stime)
 Else
  pageHTML = expObj.Replace(pageHTML, "<textarea disabled ")
  Call Chk4RegExpErr(expObj)
 End If
 '--find select tags
 expObj.Pattern = "<\s*select\s+[((\n|.)+?)]*"
 'Debug matches
 If FALSE Then
  Call DebugMatches(expObj,pageHTML,stime)
 Else
  pageHTML = expObj.Replace(pageHTML, "<select disabled ")
  Call Chk4RegExpErr(expObj)
 End If
 '--find link tags (this is not perfect yet but it will find most)
 expObj.Pattern = "<a.*href\s*=[\s""'].*[""']"
 'Debug matches
 If FALSE Then
  Call DebugMatches(expObj,pageHTML,stime)
 Else
  pageHTML = expObj.Replace(pageHTML, "<a href='#' onclick='javascript:return
false;' ")
  Call Chk4RegExpErr(expObj)
 End If
 On Error GoTo 0
 'RELEASE MEMORY
 Set expObj = Nothing
 'FINISH WRITING OUT THE PAGE
 Response.Write pageHTML & "<tr><td colspan='2'><a href='javascript:scrollTo(0,0);'
style='color:navy;text-decoration:none;font-size:7pt;font-family:verdana;font-weight:bold'
title='Back to Top'>[Top]</a><br><hr noshade color='#000000'
size='1'></td></tr><tr><td><p><font size='1' face='verdana'> ANASF - Copyright
&#169; "&DatePart("yyyy",Date())&" - Tutti i diritti riservati / All rights
reserved<br />La riproduzione di tutto o in parte in qualunque forma e con
qualunque mezzo &egrave; vietata senza autorizzazione. <br /> Questa pagina è parte
integrante del sito 
http://www
."&Request.ServerVariables("Server_Name")&"</font>"
 Response.Write "<br><br><font color='#AAAAAA' size='1'>Page Load Time
["&formatnumber(Timer() - stime,2) & "] sec.</font></td><td align='right'
valign='top'><a href='javascript:window.print()'
style='color:navy;text-decoration:none;font-size:7pt;font-family:verdana;font-weight:bold'
title='Stampa'>[Stampa]</a></td></tr></table>"
 Response.Flush()
End Sub
'---------------------------------------------------------------------------------------------
Sub PrintLoadingMsg()
 With(Response)
  .Clear()
  .Write "<html>"
  .Write "<head>"
  .Write "<script language=""javascript""><!--" & vbcrlf
  .Write "function gotonext(){" & vbcrlf
  .Write " window.location.href =
'"&Request.ServerVariables("PATH_INFO")&"?"&Right(Request.QueryString,Len(Request.QueryString)-11)&"'"
& vbcrlf
  .Write "}" & vbcrlf
  .Write "function start(){" & vbcrlf
  .Write "    if(document.layers){block = document.blockDiv" & vbcrlf
  .Write "    }else{block = document.getElementById('blockDiv').style}" & vbcrlf
  .Write "    block.xpos = 0;" & vbcrlf
  .Write "    slide();" & vbcrlf
  .Write "}" & vbcrlf
  .Write "function slide(){" & vbcrlf
  .Write "    if (block.xpos < 120){" & vbcrlf
  .Write "  block.xpos += 10;" & vbcrlf
  .Write "  block.left = block.xpos;" & vbcrlf
  .Write "  setTimeout('slide()',100);" & vbcrlf
  .Write " }else{" & vbcrlf
  .Write "  block.xpos = 0;" & vbcrlf
  .Write "  block.left = block.xpos;" & vbcrlf
  .Write "  slide();" & vbcrlf
  .Write "    }" & vbcrlf
  .Write "}" & vbcrlf
  .Write "//--></script>"
  .Write "</head>" & vbcrlf
  .Write "<body onload=""javascript:setTimeout('gotonext()',700)"">" & vbcrlf
  .Write "<style>span {width:5;height:5}" & vbcrlf
  .Write "#block0{background-color:#567886;}" & vbcrlf
  .Write "#block1{background-color:#6DA1B7;}" & vbcrlf
  .Write "#block2{background-color:#BFCFD7;}" & vbcrlf
  .Write "</style>" & vbcrlf
  .Write "<div id=""parent""
style=""position:absolute;left:46%;top:46%;color:#567886;font:10px Arial"">" &
vbcrlf
  .Write " <div id=""load""
style=""position:absolute;left:45px;top:0px;color:#567886;font:12pt
Arial"">Attendere prego</div>" & vbcrlf
  .Write "  <div id=""blockDiv""
style=""position:absolute;left:0px;top:22px;width:21px;height:5px;clip:rect(0px
21px 5px 0px)""><span id='block2'>&nbsp;</span>&nbsp;<span
id='block1'>&nbsp;</span>&nbsp;<span id='block0'>&nbsp;</span></div>" & vbcrlf
  .Write " <center> <br><br>se la versione stampabile non viene caricata<br>entro
qualche secondo <a href=""javascript:gotonext();""  STYLE=""color:#567886;font:10px
Arial;"">cliccare qui</a>.</center>" & vbcrlf
  .Write "</div>" & vbcrlf
  .Write "<script>start();</script>" & vbcrlf
  .Write "<body>" & vbcrlf
  .Write "</html>"
  .Flush()
 End With
End Sub
'---------------------------------------------------------------------------------------------
Sub PrintErrMsg(msgtxt)
 With(Response)
  .Clear()
  .Write "<style type='text/css'><!--.bevel{BORDER-RIGHT: #000000 1px
solid;BORDER-TOP: #000000 1px solid;FONT-WEIGHT: bold;FONT-SIZE: 12px;BORDER-LEFT:
#000000 1px solid;COLOR: #ffffff;BORDER-BOTTOM: #000000 1px solid;FONT-FAMILY:
Arial, Helvetica, sans-serif;BACKGROUND-COLOR: #e9e9e9}"
  .Write ".body{FONT-WEIGHT: normal;FONT-SIZE: 11px;COLOR: #4e4f4f;FONT-FAMILY:
arial, verdana, helvetica, sans-serif;TEXT-DECORATION: none}"
  .Write ".Text50{FONT-SIZE: 11px;WIDTH: 50px;COLOR: #333333;FONT-FAMILY: arial,
verdana, helvetica, sans-serif}"
  .Write ".red_icon{font-family:webdings;color:darkred;font-size:32pt}--></style>"
  .Write "<table width='250' border='0' cellspacing='0' cellpadding='4'
class='bevel'>"
  .Write "<tr><td align='center' valign='top'><font class='red_icon'>i</font></td>"
  .Write "<td class='body'>"&msgtxt&"</td>"
  .Write "<tr><td><br><br></td><td><input type='button' name='Cancel' value='Back'
class='text50' onclick='javascript:history.go(-2)'>"
  .Write "</tr></table>"
  .Write "</td></tr>"
  .Write "</td></tr></table></form>"
  .Flush()
 End With
End Sub
'---------------------------------------------------------------------------------------------
Sub DebugMatches(expObj,pageHTML,stime)
 'SHOW ANY MATCHES FOUND
 Set Matches = expObj.Execute(pageHTML)
 Call Chk4RegExpErr(expObj)
 counter = 1
 With(Response)
  .Clear()
  .Write "<br><b><font color=#000066>Pattern Used:</font></b> <font
color=#444444>"&Server.HTMLEncode(expObj.Pattern)&"</font><br><b><font
color=#000066>Matches found:</font> <font color=#444444>"&Matches.Count &
"</font></b>"
  For Each Match In Matches
   .Write vbcrlf&"<br><font color=darkred><i><b>Match
"&counter&":</b></i></font><pre>"&Server.HTMLEncode(Match.value)&"</pre>"
   counter = counter + 1
  Next
  .Write "<br><font color='#AAAAAA' size='1'>Page Load Time ["&formatnumber(Timer()
- stime,2) & "] sec.</font>"
  .Flush()
 End With
 Set Match = Nothing
 Set Matches = Nothing
 Response.End()
End Sub
'---------------------------------------------------------------------------------------------
Function StripFileExt(ByVal sFileName)
 If sFileName = "" Then Exit Function
 If InStr(1, sFileName, ".") = 0 Then Exit Function
 StripFileExt = Right(sFileName, Len(sFileName) - InStrRev(sFileName, ".") + 1)
End Function
'---------------------------------------------------------------------------------------------
Sub Chk4RegExpErr(obj)
 If Err.Number = 0 Then Exit Sub
 PrintErrMsg("<b>Invalid Reqular Expression:</b><br><br>
"&obj.Pattern&"<br><br><font size='1'>Error Description:</font><br><font
color='darkred'>"&Err.Description&"</font><br>Please check the syntax.")
 On Error GoTo 0
 Set obj = Nothing
 Response.End()
End Sub
%>


 autentificato = "attivo"
beh, scusa, non sono molto ferrato in asp...
io ho il login che fa il controllo utente e pwd e se è ok
 if db_cognome = cognome and db_password = password then
 Session("Autenticato") = "OK"
 Session("Socio") = cognome
come dovrei fare per passare invece l'autenticazione creando una variabile?
e poi il controllo delle pagine protette come avviene?
grazie.
scusa per le domande banali, ma non essendo un programmatore mi incricco come
niente...


 Alberto aka _cAsO_ (30,SSBwas55,MI) from I.D.A


 Così dovrebbe in teoria andare.
ecco finalmente ho provato e... non va...
nel senso che mi manda in printversion la pagina di login...
ma questo comando non fa altro che prendere tutti i cookies e passarli
vero?
non capisco come mai allora mi chieda la login dato che l'utente è già
registrato in un cookie...
--
ciaociao
     ******* SMARTBASTARDINSIDE *******
 
http://www.casodesign.net
 
http://www.smartrix.net
