urlencoding.
| From: | Chris W | Date: | Mon, 29 Dec 2003 17:02:24 +0000 |
| Subject: | urlencoding. | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-173554@lists.php.net to get a copy of this message | ||
Let me give a quick background. I am a very experienced programmer but I haven't done much php and only a little web development in perl. I am now creating a web site with Apache, php and MySQL.
I am having the user fill out a form and then save the data in MySQL. Before I save the data I do a few checks and if there is a problem I do a redirect back to the form and send all the data back so they don't have to fill out the whole form again. Here is some sample code I use to build my redirect url....
$UserID = $_POST['UserID'];
$Password1 = $_POST['Password1'];
$Password2 = $_POST['Password2'];
$Email = $_POST['Email'];
$FName = $_POST['FName'];
$LName = $_POST['LName'];
do checking of data here.
if(there is a problem with the data){
$ErrorMsg = "some error";
$redirectStr = "$httpHost/CreateAccount.php?";
$redirectStr .= "UserID=" . urlencode(stripslashes($UserID));
$redirectStr .= "&Password=" . urlencode(stripslashes($Password));
$redirectStr .= "&Email=" . urlencode(stripslashes($Email));
$redirectStr .= "&FName=" . urlencode(stripslashes($FName));
$redirectStr .= "&LName=" . urlencode(stripslashes($LName));
$redirectStr .= "&ErrorMsg=" . urlencode($ErrorMsg);
header("Location: $redirectStr");
exit;
}
My problem is that any field that contains a double quote, all data after the first double quote is missing from the form field. When I look at the long URL I do see a %22 where the " are supposed to be, and all other data is there too.
Any Ideas? If there is a better way to do this feel free to suggest a change in my whole method here. Just as a note validation of the UserID has to be done on the server side, to check for duplicates in the MySQL db.
I would also welcome insight on standard techniques to make sure the user isn't trying to break the code by sending bogus data. I am already checking that the data isn't longer than I am expecting.
Chris W