SPUG: Trapping Named Anchor References

ced at carios2.ca.boeing.com ced at carios2.ca.boeing.com
Mon Oct 9 14:23:11 CDT 2000

> > I need to capture a named anchor reference for a redirect.
> Story line:
> A user clicks on a saved link or a link in an email like:
> http://www.myserver.com/cgi/coolsite.pl?page=124#item16
> but the coolsite.pl script notices the user doesn't have a logged-in cookie so
> it displays a log-in page rather than the requested content page. Fine so far.
> The user fills in UserID and Password and clicks on Submit. The form action
> specifies the log-in script which verifies the users info and then does a
> re-direct to the url the user originally wanted to see (which still appears in
> its entirety in the browser Location box) to be displayed by the normal display
> script.
> Everything works fine except the named anchor reference.
> Here's the problem: I can find no way to trap the '#item16' portion of the url.
> I need that in order to compose the complete URL for the 'Location:' header so
> the user does not end up confused to find themselves at the top of a long page
> when they really want to see an item farther down.
> On Linux/Apache, the anchor ref does not appear anywhere in %ENV
>   You can check this at:
>   http://caucus.bigmindmedia.com/cgi-dv/showenv.pl?data=123#AnchorRef
> Not surprisingly then, I can find no tool in CGI.pm to grab it.
> My searches of the likely archives have come up dry.
> Lest you suggest integrating the User Verification into the main script, I
> should mention that one purpose of the redirect is to avoid the 'Resubmit Form
> Data' problem.
> My best solution is redundancy: Always dup the anchor ref in the query string.
> Thus:
> http://www.myserver.com/cgi/coolsite.pl?page=124&anch=item16#item16
> This allows me to handle any link the user may have saved and to rebuild the
> anchor ref from the query string during log-in. It's not exactly normalized but
> it does the job. <g>
> Any suggestions?

Perhaps URI would help... ?

use URI;

my $uri = "http://caucus.bigmindmedia.com/cgi-dv/showenv.pl?data=123#AnchorRef";

my $u = URI->new($uri);

print $u->fragment;   # AnchorRef

Charles DeRykus

 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     POST TO: spug-list at pm.org       PROBLEMS: owner-spug-list at pm.org
      Subscriptions; Email to majordomo at pm.org:  ACTION  LIST  EMAIL
  Replace ACTION by subscribe or unsubscribe, EMAIL by your Email-address
 For daily traffic, use spug-list for LIST ;  for weekly, spug-list-digest
  Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/

More information about the spug-list mailing list