Re: HTTP_POST_VARS and eval?

From: Date: Fri, 16 Nov 2001 15:37:09 +0000
Subject: Re: HTTP_POST_VARS and eval?
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-74877@lists.php.net to get a copy of this message
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

« previous php.general (#74877) next »