Re: Re: HTTP_POST_VARS and eval?

From: Date: Sat, 17 Nov 2001 16:03:37 +0000
Subject: Re: Re: HTTP_POST_VARS and eval?
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-74894@lists.php.net to get a copy of this message
Thanks. It actually turned out that I wanted to do just: $HTTP_POST_VARS[\\1] in the regex (ie: removing the quotes entirely inside the array) and it works just fine. Thanks for the info however. On Friday 16 November 2001 09:37, George Whiffen wrote: > Henrik, > > I think your problem is jsimply that you are not getting variable > substitution of $HTTP_GET_VARS["whatever"] inside double quotes. > > print "whatever is $HTTP_GET_VARS["whatever"]"; > > is not safe. > > You need > > print "whatever is {$HTTP_GET_VARS["whatever"]}"; > > or, (IMHO better), > > print 'whatever is '.$HTTP_GET_VARS["whatever"]; > > The fact that you are actually evaluating an assignment is I think > irrelevant, it's just the variable substitution that's failing. See the > variable parsing section of > http://www.php.net/manual/en/language.types.string.php > > > George > > Henrik Hudson wrote: > > Hey List- > > > > Working on a program and I seem to have run into a problem with > > HTTP_POST_VARS. Are the HTTP_VARS considered "special"? > > > > Here is what I am doing, reading in from a file into an array and then > > grabbing each line and looking for ]string[ and replacing that with > > $HTTP_POST_VARS["string"] > > > > The first echo prints out the lines correctly, but the echo after the > > eval prints out the same lines. My error log shows this: > > > > PHP Parse error: parse error, expecting T_STRING' or > > T_VARIABLE' or > > `T_NUM_STRING' in > > /data/www/webpages/test.rhavenn.net/public_html/formmail/formmail.php(164 > >) : eval()'d code on line 1 > > > > So, its having problems doing an eval on the HTTP_POST? If I replace the > > HTTP_POST stuff with just $\\1 and then define $string = > > $HTTP_POST_VARS["string"] it works just fine, but I can't do this since I > > don't know what string is going to be, just that it is between ] [ chars > > and there can be multiple ] [ on one line. > > > > Any thoughts? Code is below. > > > > //Read the array > > $form_data = ""; > > for($i=0; $i < count($filearr); $i++){ > > $line = $filearr[$i]; > > //Strip the ] [ from around the variables so they will be > > interpreted $line = eregi_replace("\]([^\[]+)\[", > > "\$HTTP_POST_VARS['\\1']", $line); > > echo "Line: $line<BR>"; > > //eval the variables from $line into themselves and they become > > literal > > eval ("\$line = \"$line\";"); > > echo "Lineafterwards: $line<BR>\n"; > > //Write the line back into a single variable > > $form_data = $form_data . $line; > > } > > exit; > > > > Thanks! > > > > Henrik > > -- > > > > Henrik Hudson > > lists@rhavenn.net -- Henrik Hudson lists@rhavenn.net

« previous php.general (#74894) next »