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
> [EMAIL PROTECTED]

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to