--- Jordi Canals <[EMAIL PROTECTED]> wrote:
> I have seen an strange thing with the funcion
> Header("Location: $url") and will tell in short words.
>
> I have a method in a class wich composes an URL from the
> database, this method sets some extra params in the url. In
> this case, the function returns:
>
> /myaccount/?opt=sys&id=3
>
> Note the & in the URL
>
> Well, with this code, the url works perfect and the & is
> going as expected redirecting to /myaccount/?opt=sys&id=3
>
> echo '<a href="'. $url .'">Test URL</a>';
There is no redirection taking place here. HTML entities are interpreted
by the browser. In fact, this is their whole purpose - for representing
characters properly in HTML.
> But when triying
>
> header("Location: $url");
>
> What I get is address is literally the & string and not the
> & char.
Yes, because when you use header(), you're setting a raw HTTP header. This
is not to be confused with HTML, which is included in the content of an
HTTP response.
> header('Location: '. html_entity_decode($url));
>
> I would like to know if there is a better way to do it
This should work fine. However, I would prefer to keep the data in its
original format and only use htmlentities() when I plan to display it
within HTML, leaving it unaltered otherwise.
Hope that helps.
Chris
=====
Chris Shiflett - http://shiflett.org/
PHP Security - O'Reilly
Coming December 2004
HTTP Developer's Handbook - Sams
http://httphandbook.org/
PHP Community Site
http://phpcommunity.org/
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php