Re: [PHP-DB] & terminates string?

2005-01-06 Thread Jochem Maas
Perry, Matthew (Fire Marshal's Office) wrote:
I am using PHP 4.3.1 and running Apache Server and MySQL.
The following question is probably only related to PHP.
 

Here is the problem:
 

I am passing the following string from one form to another:
"../create.php?dest=Employee/menu_handleemployee.php?action=update&ID=$ID"
 

Here is the actual code:

 

When I view the source it comes out as expected:

action="../create.php?dest=Employee/menu_handleemployee.php?action=update&ID
=82" 

method="post" enctype="multipart/form-data" name="formEMPLOYEE">
 

But after it goes to the next page it turns into this:
"../create.php?dest=Employee/menu_handleemployee.php?action=update"
Everything up to and after the '&' disappears!!
that because PHP sees your URL as having two GET vars:
dest=Employee/menu_handleemployee.php?action=update
ID=82
the ampersand is the default name/value pair seperator.
try using urlencode() [and urldecode() when you actually want to 
redirect to that 'dest' url] on the redirect string when passing it 
along in the URL (or form field)

e.g.
$action = 
'../create.php?dest='.urlencode("Employee/menu_handleemployee.php?action=update&ID=$ID");


and if that doesn't work try replacing the '&' char with something else e.g.
$action = 
'../create.php?dest='.str_replace('&','$$',"Employee/menu_handleemployee.php?action=update&ID=$ID");

and then before your redirect to that url reverse the replacement e.g.:
header('location: ' . 
str_replace('$$','&',"Employee/menu_handleemployee.php?action=update&ID=$ID"));
exit;


BTW: 2 dollar signs may not be the best choice of chars to use.

another way of tackling the issue is by looking at the contents of 
$_SERVER (a auto superglobal var, just like $_GET, $_POST etc) - try:

print_r($_SERVER);
you'll be surprised what kinds of useful items are contained in that array.
while you're at it try:
print_r($_GET);
looking at the output of that will probably help you understand where 
the 'ID' bit of the redirect url went.


print_r() is your friend USE IT!!! OFTEN!!!
sing this as a reminder "When in doubt print it out"
[ (tm) Wong Coding Industries ;-) ]

 

The goal of this code is to send the redirect address to the form that
modifies my data. 

I want variable "dest" to be used to dynamically redirect the page.
 

I have tried the following to fix the problem without avail:
1) I tried saving the variable in other ways such as text fields in the form
itself.
2) I tried addslashes() (which works well with similar problems related to
', " etc.).
3) I tried adding \ before &
4) I danced around my computer and threatened to pull the plug.
you forgot to wave the dead chicken around your head!
None of these worked!
 

 

What is it about '&' that throws everything off with PHP variables?  It
doesn't seem to be a problem with HTML.
its the default request name/value pair seperator.
This is exceedingly difficult to research online because '&' is excluded
from most search engines automatically.
it's called an ampersand. which might help further searching.
 

-Matthew
 

 

 


--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


Re: [PHP-DB] & terminates string?

2005-01-06 Thread Gabino Travassos
Hey Matthew
Example: index..php?id=4539&page=dest.php&wig=top
From this url example I can use the following variables:
$id='4539';
$page='dest.php';
$wig='top';
for ampersands, use %26
the same way that spaces are %20 in URLs
So, if I wanted to pass a variable that had an ampersand in it, like Tony & 
Tina's Wedding
page=Tony%20%26%20Tina%27s%20Wedding

Luck
Gabino
--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php