PHP 和 HTML 有很多相互作用:PHP 能生成 HTML,HTML 可以向 PHP 传递信息。在阅读这些常见问题之前,先学会怎样从 PHP 之外取得变量很重要。此主题的手册页也包括很多例子。还要仔细留意 register_globals 对你意味着什么。
- 56.1. 当我通过表单/URL 传值时需要用什么编码/解码方法?
- 56.2. 我在试用 <input type="image"> 标记,但是没有 $foo.x 和 $foo.y 变量,它们哪去了?
- 56.3. 怎样在 HTML 的 <form> 中建立数组?
- 56.4. 怎样从可多选的 HTML 的 select multiple 标记中得到所有结果?
- 56.5. 怎样从 Javascript 传递一个变量到 PHP?
| 56.1. | 当我通过表单/URL 传值时需要用什么编码/解码方法? |
在几个环节上编码方式很重要。假定有 string $data,其中包含了想通过非编码方式传递的字符串,那这是相关步骤:
例56.1.隐藏的 HTML 表单单元
<?php
例56.2.等待用户编辑的数据
<?php
例56.3.URL 中的例子
<?php
| |
| 56.2. | 我在试用 <input type="image"> 标记,但是没有 $foo.x 和 $foo.y 变量,它们哪去了? |
当提交表单时,可以用图片代替标准的提交按钮,用类似这样的标记: <input type="image" src="image.gif" name="foo" />当用户点击了图片的任何部分,该表单会被发送到服务器并加上两个额外的变量:foo.x 和 foo.y。 因为 foo.x 和 foo.y 在 PHP 中会成为非法的变量名,它们被自动转换成了 foo_x 和 foo_y。也就是用下划线代替了点。因此,可以按照在来自 PHP 之外的变量这一节中说明的那样访问这些变量。例如,$_GET['foo_x']。
| |
| 56.3. | 怎样在 HTML 的 <form> 中建立数组? |
要使你的 <form> 结果被当成 array 发送到 PHP 脚本,要对 <input>,<select> 或者 <textarea> 单元这样命名: <input name="MyArray[]" /> <input name="MyArray[]" /> <input name="MyArray[]" /> <input name="MyArray[]" />注意变量名后的方括号,这使其成为一个数组。可以通过给不同的单元分配相同的名字来把单元分组到不同的数组里: <input name="MyArray[]" /> <input name="MyArray[]" /> <input name="MyOtherArray[]" /> <input name="MyOtherArray[]" />这将产生两个数组,MyArray 和 MyOtherArray,并发送给 PHP 脚本。还可以给数组分配指定的键名: <input name="AnotherArray[]" /> <input name="AnotherArray[]" /> <input name="AnotherArray[email]" /> <input name="AnotherArray[phone]" />AnotherArray 数组将包含键名 0,1,email 和 phone。
参见数组函数和来自 PHP 之外的变量。 | |
| 56.4. | 怎样从可多选的 HTML 的 select multiple 标记中得到所有结果? |
可多选的 select multiple 标记是 HTML 的一个构造,允许用户从一个列表中选择多个项目。这些项目接着被传递给该表单 action 中指定的处理程序。问题是它们都会被用同样的名字传递。例如: <select name="var" multiple="yes">每个被选项将这样被传递到表单处理程序: var=option1 var=option2 var=option3每个选项将覆盖前面一个 $var 变量的内容。解决方案是用 PHP 的“表单单元数组”特性。使用方法如下: <select name="var[]" multiple="yes">这将告诉 PHP 将 $var 当成数组对待,每个对 var[] 的赋值都会给数组增加一项。第一项将成为 $var[0],下一个是 $var[1],等等。可以用 count() 函数来测定选择了多少个项目,必要时可以用 sort() 函数来对选项的数组进行排序。 注意如果在 JavaScript 中通过名字来引用单元,单元名字中的 [] 可能会造成问题。用表单单元中的数字序号来替代,或者将变量名用单引号括起来并用其作为单元数组的索引,例如: variable = documents.forms[0].elements['var[]']; | |
| 56.5. | 怎样从 Javascript 传递一个变量到 PHP? |
由于 Javascript (通常情况下)是客户端技术,而 PHP (通常情况下)是服务器端技术,而且 HTTP 是一种“无状态”协议,因此两种语言之间不能直接共享变量。 但是,有可能在二者之间传递变量。一种实现的方法是用 PHP 生成 Javascript 代码,并让浏览器自动刷新,将特定的变量传递回 PHP 脚本。以下例子显示了如何这样做——让 PHP 代码取得显示屏幕的高度和宽度,通常只能在客户端这么做。
<?php |
add a note
User Contributed NotesPHP 和 HTML

使用 PHP