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/