On Fri, 9 Jan 2004, Fagyal, Csongor wrote: > Skylos, > > I don't really follow the code snippet you presented here,
I'm not sure how to be more simple. What part didn't you understand? > but it sounds to me that you have generated a closure. This is a very > usual mod_perl issue. I should know, I use them regularly in my programming. :) They're not an issue so much as a useful feature? > See: > http://perl.apache.org/docs/general/perl_reference/perl_reference.html#Understanding_Closures____the_Easy_Way Been there. > Also look at this: > http://perl.apache.org/docs/general/perl_reference/perl_reference.html#my___Scoped_Variable_in_Nested_Subroutines But this information about scoped variables in nested subroutines I believe is the clue. If my script is a subroutine of Apache::ASP cache stuff, then my Main() subroutine is a nested subroutine, and its keeping the old value of $frm that was there the last time it ran the nested subroutine. Pretty much, mystery solved! Thanks muchly for the reference. > In general you should not declare subroutines inside ASP pages. *WHAT*???????? Whyever NOT? Subroutines are.... like one of my most basically consistent ways of subdividing programs. I use them extensively! > (However, I have the rather faint memory that the newest version of > Apache::ASP presents a workaround... others will probably comment on this.) I never found any issue with it, outside of occaisonal "redefined subroutine" errors in the logs if I had two scripts with the same subroutine name... > - Csongor > > >Okay, I've gotta bounce this off some other programmers who work with > >Apache::ASP. > > > >This has been reported twice. > > > >Procedure: > > > >User loads signup form > > > >Result: > > > >User sees somebody else's credit card data - VERY VERY VERY BAD > > > >Attempts by programmer to recreate: > > > >Fruitless. > > > >Thoughts: > > > >I store the form data in a variable. This is a my scoped variable in the > >root file scope. > > > >I then utilize this $frm variable in a subroutine that I call, without > >passing the value. Utilizing it as a global variable, for the file, at > >least. > > > >The simplest case for example: > > > >---index.asp--- > ><[EMAIL PROTECTED]> > ><% > >my $frm = $Request->Form(); > > > >Main(%Results); > > > >sub Main { > > %>various html stuff > > <input type=text name="cc_number" value="<%=$frm->{'cc_number'}%>"> > > more html stuff%> > >} > >%> > >---index.asp--- > > > >Now what has happened, reportedly twice (probably many more times), > >is that the Main() subroutine displays the cc_number that was entered > >BY A DIFFERENT SESSION! > > > >The question is. Is it at all possible that some other session (perhaps > >within the same apache process) acquired some other value of $frm through > >the persistant-across-page-loads value of $frm within Main? I think you > >programmers can understand what I'm asking, though it seems muddled even > >as I try to type it. > > > >As I understood it, a file 'my' scoped variable would NOT be persisted > >anywhere, but is considered global within subroutines in the same file. > > > >Maybe I'm wrong. I know that its ugly what I did there, and I have > >revised my code to pass the $frm variable from the file scope to the > >subroutine. Much prettier. > > > >Your thoughts? > > > >Skylos > > > >- [EMAIL PROTECTED] > >- The best part about the internet is nobody knows you're a dog. > > (Peter Stiener, The New Yorker, July 5, 1993) > >- Dogs like... TRUCKS! (Nissan commercial, 1996) > >- PGP key: http://dogpawz.com/skylos/mykey.asc > > > >--------------------------------------------------------------------- > >To unsubscribe, e-mail: [EMAIL PROTECTED] > >For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > - [EMAIL PROTECTED] - The best part about the internet is nobody knows you're a dog. (Peter Stiener, The New Yorker, July 5, 1993) - Dogs like... TRUCKS! (Nissan commercial, 1996) - PGP key: http://dogpawz.com/skylos/mykey.asc --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]