At 18:52 06.11.2002, Jason Young spoke out and said:
--------------------[snip]--------------------
>I (think I) have come up with an interesting little solution for pages
>that have/can potentially have a lot of get vars, and I just wanted to
>throw it by everyone to see if I know what I'm talking about...
>
>Instead of having a whole bunch of ...
>"if (isset($_GET['var']))
> $var = $_GET['var']"
>.. lines on top of each page.. does this code look feasable to you?
>
>-----
>$get_allow = array('foo', 'bar', 'add', 'takeovertheworld');
>
>while (list($key,$val)=each($get_allow))
>{
> if (isset($_GET[$key]))
> $$key = $val;
>}
>-----
--------------------[snip]--------------------
You're doing this to filter out parameters, and to emulate
register_globals, right?
To allow only a specific set of variables for $_GET, this loop may present
an elegant solution:
foreach ($_GET as $name => $value) {
if (!in_array(strtolower($name), $get_allow))
unset($_GET[$name]);
}
Note that I'm using "strtolower" for array lookup.
Ever had a headache with posted parameters, as to where to look for the
value, in _GET or _POST? Try this:
foreach ($_POST as $name => $value)
$_GET[$name] =& $value;
Your application may safely use only the $_GET array after this, the POSTed
variables correctly overriding their GET counterparts. The "=&" reference
is there for optimization - faster and less memory-consuming.
Wnat to have these global after all?
foreach ($_GET as $name => $value) {
global $$name;
$$name =& $value;
}
Have fun,
--
>O Ernest E. Vogelsinger
(\) ICQ #13394035
^ http://www.vogelsinger.at/