Re: Re: problem with super global '$_REQUEST'
| From: | Justin Patrin | Date: | Thu, 15 Jul 2004 22:46:00 +0000 |
| Subject: | Re: Re: problem with super global '$_REQUEST' | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-190651@lists.php.net to get a copy of this message | ||
You *can* unset it, you just have to unset the place where it really
sits. When you have a global in a function, then unset it, you only
disconnect the variable. unset doesn't destroy a variable, it just
breaks the reference.
As I said in my earlier e-mail, using this *will* work (I tested it):
unset($GLOBALS['_REQUEST']);
$GLOBALS is itself a superglobal.....hmmm, wonder what would happen if
you unset($GLOBALS['GLOBALS'])....
On Thu, 15 Jul 2004 15:25:55 -0700, Dennis Gearon <gearond@fireserve.net> wrote:
> OK, after lots of reading, I find out it's not possible to unset something that has been
> 'globalized' in a function, nor ANY global value. However, some online manual pages
> documented that it's possible to assign NULL to the value. Well that's NOT unset.
>
> But,that got me to thinking. What about assigning an unset variable to the global? IT WORKS!
>
> Change the line below:
>
> unset( $_REQUEST );
> *--to--*
> $unset_variable;
> $_REQUEST = $unset_variable;
>
> VOILA! no more $_REQUEST super_global. Now, I need to see if it can still be assigned to as if
> it's a super global.
>
>
>
> Dennis Gearon wrote:
>
> > I have a function in a class that unsets the superglobal $_REQUEST;
> >
> > Well, it's supposed to, it doesn't do it. I'm on version 4.2.3 of PHP.
> > This page:
> >
> >
> > http://us2.php.net/manual/en/language.variables.predefined.php#language.variables.superglobals
> >
> >
> > says that $_REQUEST is a super global as of version 4.1.0. Is there some
> > bug I don't know about or am I doing something wrong?
> >
> > Here's the code:
> >
> > <?PHP
> > $_REQUEST["var1"]="\"><script>script
> > stuff</script>";
> > $_REQUEST["var2"]="a_string_of_course";
> > $_REQUEST["arr1"]["elem1"]="<script>script
> > stuff2</script>";
> > $_REQUEST["arr1"]["elem2"]="another_string_of_course";
> >
> > if( !defined('TEST_UNSET') ){
> > define('TEST_UNSET', TRUE);
> >
> > class abstract_environment{
> > var $_REQUEST;
> > function abstract_environment(){
> > $this->_REQUEST=$_REQUEST;
> > unset( $_REQUEST );
> > echo("unset was done");
> > $this->_clean_all_vars();
> > }
> > function _clean_all_vars(){
> > //ADD OTHER PROCESSING AS NEEDED
> > $this->_strip_tags_arr( $this->_REQUEST );
> > }
> > function _strip_tags_arr( &$arr_or_solo ){
> > if( isset($arr_or_solo) ){
> > if( !is_array($arr_or_solo) ){
> > $arr_or_solo= strip_tags($arr_or_solo);
> > } else {
> > reset ($arr_or_solo);
> > while (list($key, ) = each ($arr_or_solo)) {
> > if( isset($arr_or_solo[$key]) ){
> > if( is_array($arr_or_solo[$key]) ){
> > $this->_strip_tags_arr($arr_or_solo[$key]);
> > } else {
> > $arr_or_solo[$key] =
> > strip_tags($arr_or_solo[$key]);
> > }
> > }
> > }
> > }
> > }
> > }
> >
> > }
> > }
> > $abs_env=new abstract_environment;
> > echo "<pre>";
> > print_r($_REQUEST);
> > print_r( $abs_env );
> > echo "</pre>";
> > ?>
> >
> >
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
> !DSPAM:40f7048930729073420354!
>
>
--
DB_DataObject_FormBuilder - The database at your fingertips
http://pear.php.net/package/DB_DataObject_FormBuilder
paperCrane --Justin Patrin--