inblosam has asked for the wisdom of the Perl Monks concerning the following question:

I am trying to login and then post to a site. I have my script successfully working on another form, but now this one (with file fields--only difference I can think of) gives me some problems. When I try to post to this site it gives me this error:
Server: www.site.com Server: 'www.site.com' Date / Time: 06/26/02 00:13:38 Browser: Mozilla/4.5 Error: ODBC Error Code = S1000 (General error) [Oracle][ODBC][Ora]ORA-00936: missing expression The error occurred while processing an element with a general identifi +er of (CFQUERY), occupying document position (394:3) to (394:60).
I don't understand why I am now getting this error. Do I need to set a content_type differently (but why would that affect what seems to be an issue with the database)? Any ideas? Here is what my code looks like:
#!/usr/lib/perl use strict; use warnings; use LWP::UserAgent; use HTTP::Request::Common; use HTTP::Cookies; use LWP::Simple; my $ua = LWP::UserAgent->new; $ua->cookie_jar(HTTP::Cookies->new(file => 'cookie_jar', autosave =>1) +); $ua->agent( "Mozilla/4.5" ); # do redirects after post push @{ $ua->requests_redirectable }, 'POST'; $ua->request(POST "http://www.site.com/login.cfm", { username =>"test", password =>"testabc", sid =>"$sid", submit =>"Submit" }); my $request = $ua->request(POST "http://www.site.com/editproduct.cfm", { name =>"test", version =>"1.1", prodnote =>"test", file =>'/docroot/filename.exe' product_ID =>"888999", session_id =>"3298220938434", update =>"Update" }); $b = $request->is_success ? "Worked\n" : "Error.\n"; my $a = $request->as_string; print $a;


Michael Jensen
michael at inshift.com
http://www.inshift.com

Replies are listed 'Best First'.
Re: Causing an ODBC error in form post?
by dws (Chancellor) on Jun 26, 2002 at 07:41 UTC
    I have my script successfully working on another form, but now this one (with file fields--only difference I can think of) gives me some problems.

    If you're getting ODBC errors form a site when you synthesize a form POST, then that site's code is... brittle. It kind of looks like they may be building a query from fields passed by form. At best, a security problem waiting to happen.

    Two things jump out form your code. First, you are passing an anonymous hash to POST rather than an anonymous array. The HTTP::Request::Common POD shows anonymous arrays (as do the example in the Perl Cookbook), so try that. I suspect you aren't creating the HTTP POST that you think you are.

    The other is that you're not checking $request->is_success after your first post. That might be worth doing.

      I read the docs on HTTP::Request::Common but with my script I am doing some things with useragent that they don't show, and so I am not quite sure how to implement an anonymous hash as you suggested, versus my current method using an array. Do I merely change the {} to brackets? Thanks!

      Michael Jensen
      michael at inshift.com
      http://www.inshift.com
        Do I merely change the {} to brackets?

        That'll do the trick.