|  | Posted by Rik Wasmus on 06/13/04 12:00 
On Tue, 15 Jan 2008 17:28:59 +0100, Mason Barge <masonbarge@comcast.net>==
 
 wrote:
 > My problem is that the information transmitted to the formhandler  =
 
 > apparently has some sort of whitespace added to it.  If I simply use  =
 
 > trim() on the POST variable, it fails the regex.  If I convert to POST=
 =
 
 > variable to a single variable and use trim(), it solves the problem.
 >
 > This code throws a regex rejection:
 >
 > $_POST['zip']=3Dtrim($_POST['zip']);
 > if (preg_match("/^[\d]{5}/", $_Post['zip'])) {
 
 $_Post !=3D $_Post
 As soon as you've fixed that, this would work, but it is not  =
 
 recommendable. Having a clear view of what your user actually submitted,=
 =
 
 and how you've handled/altered the data after that will save you lots of=
 =
 
 debugging time.
 
 And just on a side note: shouldn't it be "/^[\d]{5}$/" ? The regex now  =
 
 will consider '12345and then some arbitrary text or characters' valid...=
 
 
 > SECONDARY PROBLEM
 >
 > Of course, my real problem is how the whitespace gets in there in the =
 =
 
 > first place.  Or more accurately, why the regex would reject informati=
 on  =
 
 > from the database.  In the case of "$zip", the field is VARCHAR(5).
 >
 > Here's the form entry:
 >          <input type=3D"text" name=3D"zip" size=3D"5" maxlength=3D"5" =
 =
 
 > value=3D"<?php if(isset($_POST['submit'])) {
 >            echo $_POST['zip'];
 >           } else {
 >            echo $zip;
 >           } ?>
 >          " />
 
 Here is is. You have whitespace between '?>' and '" />', which will  =
 
 probably translate itself to a space in the field in HTML context.
 Use:' } ?>" />'
 
 -- =
 
 Rik Wasmus
  Navigation: [Reply to this message] |