- From: <bugzilla@wiggum.w3.org>
- Date: Fri, 06 Jan 2006 14:45:10 +0000
- To: www-validator-cvs@w3.org
- Cc:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=2669
Summary: URL encoding in JavaScript/PHP
Product: Validator
Version: HEAD
Platform: PC
URL: http://bungalan.nl/test.php
OS/Version: Windows 2000
Status: NEW
Severity: normal
Priority: P2
Component: Parser
AssignedTo: link@pobox.com
ReportedBy: info@megaman.nl
QAContact: www-validator-cvs@w3.org
Hello,
the following has kept me busy for some time. While validating pages I've
noticed a problem with URLs in JavaScript. I'm supposed to encode all & into
& in a page and in <A> tags. The validator requires me to encode strings in
JavaScript also. But this will cause trouble for PHP script.
I've created a sample (/simple) page that demonstrates the issue:
----------------------------------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Language" content="en" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Validator test</title>
<script language="JavaScript" type="text/javascript">
function openLink() {
window.location.href = '<?php echo $_SERVER['SCRIPT_NAME']; ?>?a=1&b=2';
}
</script>
</head>
<body>
<a href="<?php echo $_SERVER['SCRIPT_NAME']; ?>?a=1&b=2">open via
link</a><br /><br />
<form method="post" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>?a=1&b=2">
<input type="submit" value="open via form" /><br /><br />
</form>
<input type="button" value="open via jscript" onclick="openLink()" /><br /><br />
<pre><?php
// show submitted vars
var_dump($_REQUEST);
?></pre>
</body>
</html>
----------------------------------------------------------------------
The link and form methods will correctly output:
array(2) {
["a"]=>
string(1) "1"
["b"]=>
string(1) "2"
}
The JavaScript method however will output:
array(2) {
["a"]=>
string(1) "1"
["amp;b"]=>
string(1) "2"
}
So with the JS method it seems the URL isn't decoded. I'm wondering what the
problem is...
a) It's not required to encode JS strings, and the validator incorrectly checks
them;
b) PHP isn't decoding for some reason;
c) the browser doesn't handle the string as it should (tested with latest MS IE
and Mozilla FF);
d) I'm all wrong and there is a better way to do what I want.
Would be nice to hear what other people think.
Regards, Willem
Received on Friday, 6 January 2006 14:45:26 UTC