Bug #13953 Updated: HTML Entities and $HTTP_POST_VARS

From: Date: Sat, 08 Dec 2001 23:54:02 +0000
Subject: Bug #13953 Updated: HTML Entities and $HTTP_POST_VARS
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-73147@lists.php.net to get a copy of this message
ID: 13953
Updated by: cardinal
Reported By: markm@sprintout.com
Old Status: Open
Status: Bogus
Bug Type: Arrays related
Operating System: Free BSD 4.2
PHP Version: 4.0.4pl1
New Comment:

I can't reproduce any part of this bug report on 4.0.6.  My $HTTP_POST_VARS matches
jeroen's exactly for the product description script, and the following script does not
translate html entities from their user-entered value.

<form method="post" action="<?= $PHP_SELF ?>"
enctype="multipart/form-data">
<textarea name="text" wrap="virtual"><?=
htmlentities($HTTP_POST_VARS['text'])?></textarea>
<br><input type="submit" value="Submit multipart">
</form>

<form method="post" action="<?= $PHP_SELF ?>">
<textarea name="text" wrap="virtual"><?=
htmlentities($HTTP_POST_VARS['text'])?></textarea>
<br><input type="submit" value="Submit not multipart">
</form>

<?
  
if (count($HTTP_POST_VARS))
{
    echo '<pre>';
    print_r($HTTP_POST_VARS);
    echo '</pre>';
}
 
?>

I suggest taking this up on a support forum (php-general@lists.php.net,
#php on irc.php.net) if it's still an issue.

Previous Comments:
------------------------------------------------------------------------

[2001-11-07 09:12:27] markm@sprintout.com

I get the same output with both var_dump($HTTP_POST_VARS) and print_r($HTTP_POST_VARS):
"InfoID" is missing from $HTTP_POST_VARS when I submit the form. The strange thing about
this problem is that I can't reproduce it on earlier versions of PHP.

Perhaps, we should look at the broader question of how PHP deals with HTML entities.

I just placed the following text in the textarea box of the form:
  This is a &#149; test.

When the form is submitted, the script inserts the content into a "text" field in a MySQL
(v. 3.23.33) database. I checked the record through phpMyAdmin and found that the field held exactly
what I submitted. No surprises there.

However, when I updated the record, my line of text was changed to:
 This is a &#8226; test.

In other words, the representation of the HTML entity was changed from &#149; to &#8226;,
either by PHP or MySQL.

This transformation seems to be the source of my problems. Any ideas what's going on?

P.S. -- The MySQL gurus argue that this is a PHP problem.

------------------------------------------------------------------------

[2001-11-06 17:16:22] jeroen@php.net

With 4.0.3pl1, I cannot reproduce.

Use var_dump($HTTP_POST_VARS) to check out what vars are submitted and which are not. I get:

HTTP_POST_VARS:

array(4) {
  ["InfoID"]=>
  string(2) "67"
  ["InfoTitle"]=>
  string(8) "Product2"
  ["InfoText"]=>
  string(196) "Blah blah blah blah? Blah blah blah
blah™ Blah blah blah blah.
Blah blah blah blah™. Blah blah blah blah.
Blah blah blah blah®. Blah blah blah blah;"
  ["option"]=>
  string(6) "Modify"
}

HTTP_GET_VARS:

array(1) {
  ["selection"]=>
  string(11) "Description"
}




------------------------------------------------------------------------

[2001-11-06 16:43:22] markm@sprintout.com

Below is a stripped-down version of the form that causes the problems. Note that values have been
inserted into the form fields, including HTML entities in the "InfoText" field. When I
click the "Modify" button, "InfoID" does not show up in $HTTP_POST_VARS.
Thanks.

<html>
<head>
<title>Administration Page</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form action="index.html?selection=Description" method="post"
enctype="multipart/form-data">
<p>
<b>Select an Existing Product Description Title</b><br>
<SELECT NAME="InfoID">
<option value="0">Click On a Product Description</option>
<option value="63">Product1</option>
<option value="67" selected>Product2</option>
<option value="69">Product3</option>
<option value="55">Product4</option>
<option value="65">Product5</option>
</select>
&nbsp;<input type="submit" name="option" value="Find">
</p>
<p>
<b>Product Description Title/Headline</b><br>
<input type="text" name="InfoTitle" size="30"
maxlength="200" value="Product2">
</p>
<p>
<b>Product Description Text</b><br>
<textarea name="InfoText" cols="40" rows="10"
wrap="VIRTUAL">Blah blah blah blah? Blah blah blah
blah<sup>&#8482;</sup> Blah blah blah blah.
Blah blah blah blah<sup>&#8482;</sup>. Blah blah blah blah.
Blah blah blah blah<sup>®</sup>. Blah blah blah blah;</textarea>
</p>
<p>
<input type="submit" name="option"
value="Modify"><br><br>
<input type="submit" name="option"
value="Delete"><br><br>
<input type="submit" name="option" value="Clear">
</p>
</form>
</body>
</html>

------------------------------------------------------------------------

[2001-11-06 16:10:45] jeroen@php.net

Please submit the shortest reproducing script which does something strange. It's very hard to
track down the problem if you don't show us exactly what you did.

------------------------------------------------------------------------

[2001-11-06 13:30:29] markm@sprintout.com

Removing enctype="multipart/form-data" from the form tag does seem to solve the problem.
However, it creates another. I was planning to add a "file" input type field to the form
to enable users to upload images. To accomplish that, I'll need to include
enctype="multipart/form-data". What then? Also, I was hoping to get to the bottom of the
problem and figure out what's going on with HTML entities and form input. Thanks.

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/?id=13953


Edit this bug report at http://bugs.php.net/?id=13953&edit=1



Thread (8 messages)

« previous php.dev (#73147) next »