in reply to Re: CGI parsing difficulty
in thread CGI parsing difficulty

OK - the form is just a single field, a textarea field.
I type in multiple lines, seperated by :: (for now)

Here is the code that is troublesome in the target script:

my $text = $query->param("text"); make_image($text); exit(0); ########################################################## # Make an image from the lines in the array # sub make_image { my $text = shift; my @lines = split(/\n/,$text); my $counter = 80; foreach my $line (@lines) { $im->stringTTF($black, "/home/httpd/html/ribbon.ttf", 15, 0, 5 +0, 80,$line); if ($@) { $im->string(gdSmallFont, 50, 150, "$@", $black); die "Cannot print!$!\n"; } $counter += 10; } binmode STDOUT; print $query->header(-type=>'image/png'); print $im->png; }
This code has been altered a million times, so if you find some syntax error, it's probably something I haven't fixed from the last edit ;-)

Anyhow, if I hit http://localhost/myscript.pl?text=I+LOVE+MY+WIFE then it works. Going through a web form which then writes <img src="/myscript.pl?$text"> ($text being pulled by $text = $q->param("text") ) then it only prints the first letter, the I.

My goal here is to eventually make a script that people can type in their text, the thing makes a multi-line image from it with that nice ribbon font, and the result gets sent as a kind of greeting card/invitation (for weddings, child birth announcements, etc).

Any help would be appreciated.

What does this little button do . .<Click>; "USER HAS SIGNED OFF FOR THE DAY"

Replies are listed 'Best First'.
Re: Re: Re: CGI parsing difficulty
by merlyn (Sage) on Nov 22, 2000 at 01:01 UTC
    Anyhow, if I hit http://localhost/myscript.pl?text=I+LOVE+MY+WIFE then it works. Going through a web form which then writes <img src="/myscript.pl?$text"> ($text being pulled by $text = $q->param("text") ) then it only prints the first letter, the I.
    You are properly URI-escaping the code you print in $text, right? You can't just do this:
    print qq{<img src="/myscript.pl?$text">};
    because you need to re-percentify or plusify spaces, etc etc., as in:
    use URI; my $uri = URI->new("/myscript.pl"); $uri->query($text); my $uri_string = $uri->as_string; print qq{<img src="$uri_string">};

    -- Randal L. Schwartz, Perl hacker

      Well CRAP!!

      Finally someone has the answer!!

      Thanks Merlyn. Too bad all my votes for today are gone ;-)

      What does this little button do . .<Click>; "USER HAS SIGNED OFF FOR THE DAY"
      Randall, this worked fine with one exception:

      I had to replace $uri->query with $uri->query_form($key=>$text)

      As it stands I also had to replace the imager.cfm with an imageform.cgi,
      as there was no way to force Cold Fusion to clean up the
      string before calling the image maker.(At least not a method
      that I am aware of yet.)

      Thanks for all the help, everyone!

      What does this little button do . .<Click>; "USER HAS SIGNED OFF FOR THE DAY"