$reg-param, $req-body - is there a way to set form data?

2006-10-27 Thread Patrick Galbraith

Hi all,

I have in my code what used to work on 1.0. I have this variable, $form, 
which is a reference for $req-param. I had cases in the code where 
something is submitted in a form that is incorrect, and I want to change 
the op of the form by setting $form-{op} (the code has a hash reference 
to different subroutines that are keyed by op's value). Now when I do 
this, I get this error:


Can't locate object method STORE via package 
APR::Request::Param::Table at 
/var/www/perl-lib/WebLib/Application/UserReg.pm line 360.\n, referer: 
http://www.patg.net/userreg


Reading the docs, it looks like you can't _set_ a value this way any 
more. Or can you? Is there a way? It's pretty important that I can do 
this. Otherwise, more re-writing.


Thanks in advance for info on this.

--Patrick



Re: $reg-param, $req-body - is there a way to set form data?

2006-10-27 Thread Jonathan Vanasco


On Oct 27, 2006, at 8:25 PM, Philip M. Gollucci wrote:


You can not, they are readonly versions of APR::Table (apr_table_t)

You could always copy the structure to a hash somewhere.  Also,  
check the archvies of this
list, I know someone (probably joes) posted an answer to this  
question before.


Just to add-

I think that approach can lead to some big problems.

I'd strongly suggest having a Form class, or some 'untaint' class,  
loop through the necessary fields -- pulling them from APR::Table,  
and validating/untainting them -- then just deal with those values.


Personally, I have a class that does this:
Loop through values  validate
	valid data gets cleaned ( lead/trailing whitespace stripped, int()  
numerics ), and stored in an cleaned hash

errors get marked in a hash that has an error code keyed to the field

if scalar keys %errors :
reprint form using the valid array as defaults
else:
do biz logic on the valid data




// Jonathan Vanasco

| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
- - - - - - - - - - - - - - - -

| FindMeOn.com - The cure for Multiple Web Personality Disorder
| Web Identity Management and 3D Social Networking
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
- - - - - - - - - - - - - - - -

| RoadSound.com - Tools For Bands, Stuff For Fans
| Collaborative Online Management And Syndication Tools
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
- - - - - - - - - - - - - - - -