PHP 和 HTML

PHP 和 HTML 有很多相互作用:PHP 能生成 HTML,HTML 可以向 PHP

传递信息。在阅读这些常见问题之前,先学会怎样从

PHP 之外取得变量很重要。此主题的手册页也包括很多例子。

当我通过表单/URL 传值时需要用什么编码/解码方法?

我在试用 标记,但是没有

$foo.x和

$foo.y变量,它们哪去了?

怎样在 HTML 的

中建立数组?

怎样从可多选的 HTML 的 select multiple 标记中得到所有结果?

怎样从 Javascript 传递一个变量到 PHP?

当我通过表单/URL 传值时需要用什么编码/解码方法?

在几个环节上编码方式很重要。假定有

string

$data,其中包含了想通过非编码方式传递的字符串,那这是相关步骤:

HTML 解析。要指定一个任意的字符串,

必须将其放在双引号中,并用

htmlspecialchars()处理整个值。

URL:URL 由几部分组成。如果希望自己的数据被当作其中一项来解释,

必须用 urlencode() 对其编码。

示例 #1 隐藏的 HTML 表单单元

'."\n";?>

注意:

urlencode()来处理

$data是错误的,因为是浏览器的责任来

urlencode()数据。所有流行的浏览器都能正确处理。注意不论何种方法(例如 GET 或 POST)都会这样。不过只会在用 GET 请求时注意到这一点,因为 POST 请求通常是隐藏的。

示例 #2 等待用户编辑的数据

\n"; echo htmlspecialchars($data)."\n"; echo "";?>

注意:

数据会按照预期的显示在浏览器中,因为浏览器会解释 HTML 转义符号。

当提交时,不论是 GET 或者 POST 方法,数据都会被浏览器进行 urlencode 来传输,并直接被 PHP urldecode。所以最终不需要自己处理任何 urlencoding/urldecoding,全都是自动处理的。

示例 #3 URL 中的例子

'."\n";?>

注意:

事实上这在编造一个 HTML 的 GET 请求,因此需要手工对数据进行

urlencode()。

注意:

需要对整个 URL 进行

htmlspecialchars(),因为 URL 是作为 HTML 属性的一个值出现的。在本例中,浏览器会首先对值进行 un-

htmlspecialchars(),然后再传递此 URL。PHP 将能正确理解 URL,因为对数据进行了

urlencode()。

要注意到 URL 中的

&被替换成了

&。如果忘了这一步,尽管大多数浏览器都能恢复,但也不总是这样。因此即使 URL 不是动态的,也

需要对 URL 进行

htmlspecialchars()。

我在试用 标记,但是没有

$foo.x和

$foo.y变量,它们哪去了?

当提交表单时,可以用图片代替标准的提交按钮,用类似这样的标记:

当用户点击了图片的任何部分,该表单会被发送到服务器并加上两个额外的变量:

foo.x和

foo.y。

因为

foo.x和

foo.y在 PHP 中会成为非法的变量名,它们被自动转换成了

foo_x和

foo_y。也就是用下划线代替了点。因此,可以按照在

来自 PHP 之外的变量这一节中说明的那样访问这些变量。例如,

$_GET['foo_x']。

注意:

请求变量名中的空格被转换为下划线。

怎样在 HTML 的 中建立数组?

要使你的 结果被当成

array发送到 PHP 脚本,要对