`
iwebcode
  • 浏览: 2009262 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

【PHPFAQ】PHP 和 HTML

 
阅读更多

PHP 和 HTML

转自:http://php.net/manual/zh/faq.html.php

PHP 和 HTML 有很多相互作用:PHP 能生成 HTML,HTML 可以向 PHP 传递信息。在阅读这些常见问题之前,先学会怎样从 PHP 之外取得变量很重要。此主题的手册页也包括很多例子。还要仔细留意register_globals对你意味着什么。

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

在几个环节上编码方式很重要。假定有string$data,其中包含了想通过非编码方式传递的字符串,那这是相关步骤:

  • HTML 解析。要指定一个任意的字符串,必须将其放在双引号中,并用htmlspecialchars()处理整个值。

  • URL:URL 由几部分组成。如果希望自己的数据被当作其中一项来解释,必须urlencode()对其编码。

Example #1 隐藏的 HTML 表单单元

<?php
echo"<inputtype='hidden'value='".htmlspecialchars($data)."'/>\n";
?>

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

Example #2 等待用户编辑的数据

<?php
echo"<textareaname='mydata'>\n";
echo
htmlspecialchars($data)."\n";
echo
"</textarea>";
?>

Note:数据会按照预期的显示在浏览器中,因为浏览器会解释 HTML 转义符号。当提交时,不论是 GET 或者 POST 方法,数据都会被浏览器进行 urlencode 来传输,并直接被 PHP urldecode。所以最终不需要自己处理任何 urlencoding/urldecoding,全都是自动处理的。

Example #3 URL 中的例子

<?php
echo"<ahref='".htmlspecialchars("/nextpage.php?stage=23&data=".
urlencode($data))."'>\n";
?>

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

Note:需要对整个 URL 进行htmlspecialchars(),因为 URL 是作为 HTML 属性的一个值出现的。在本例中,浏览器会首先对值进行 un-htmlspecialchars(),然后再传递此 URL。PHP 将能正确理解 URL,因为对数据进行了urlencoded()要注意到 URL 中的&被替换成了&amp;。如果忘了这一步,尽管大多数浏览器都能恢复,但也不总是这样。因此即使 URL 不是动态的,也需要对 URL 进行htmlspecialchars()

我在试用 <input type="image"> 标记,但是没有$foo.x$foo.y变量,它们哪去了?

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

<input type="image" src="image.gif" name="foo" />
当用户点击了图片的任何部分,该表单会被发送到服务器并加上两个额外的变量:foo.xfoo.y

因为foo.xfoo.y在 PHP 中会成为非法的变量名,它们被自动转换成了foo_xfoo_y。也就是用下划线代替了点。因此,可以按照在来自 PHP 之外的变量这一节中说明的那样访问这些变量。例如,$_GET['foo_x']

Note:

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

怎样在 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。

Note:

指定数组的键名是 HTML 的可选项。如果不指定键名,则数组被按照单元在表单中出现的顺序填充。第一个例子将包含键名 0,1,2 和 3。

参见数组函数来自 PHP 之外的变量

怎样从可多选的 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[]'];

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

由于 Javascript (通常情况下)是客户端技术,而 PHP (通常情况下)是服务器端技术,而且 HTTP 是一种“无状态”协议,因此两种语言之间不能直接共享变量。

但是,有可能在二者之间传递变量。一种实现的方法是用 PHP 生成 Javascript 代码,并让浏览器自动刷新,将特定的变量传递回 PHP 脚本。以下例子显示了如何这样做——让 PHP 代码取得显示屏幕的高度和宽度,通常只能在客户端这么做。

<?php
if(isset($_GET['width'])ANDisset($_GET['height'])){
//outputthegeometryvariables
echo"Screenwidthis:".$_GET['width']."<br/>\n";
echo
"Screenheightis:".$_GET['height']."<br/>\n";
}else{
//passthegeometryvariables
//(preservetheoriginalquerystring
//--postvariableswillneedtohandleddifferently)

echo"<scriptlanguage='javascript'>\n";
echo
"location.href=\"${_SERVER['SCRIPT_NAME']}?${_SERVER['QUERY_STRING']}"
."&width=\"+screen.width+\"&height=\"+screen.height;\n";
echo
"</script>\n";
exit();
}
?>
分享到:
评论

相关推荐

    高仿seowhy最新版本phpfaq,博百优修改无乱码

    相信很多朋友都不知道seowhy使用的是什么程序, 其实seowhy使用的是国外一个非常流行的phpfaq问答程序。 参加博百优大赛,我为了使用一个问答...此修改版权权利归phpfaq官方和www.okbase.net所有转载请著名出处。 

    Wrodpress安装、使用及FAQ功能定制

    Wrodpress安装、使用及FAQ功能定制

    机械设计同轴剥皮机sw18可编辑非常好的设计图纸100%好用.zip

    机械设计同轴剥皮机sw18可编辑非常好的设计图纸100%好用.zip

    node-v12.22.5-linux-arm64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    Honeywell BR-310 条形码扫描器手册

    Honeywell BR-310 条形码扫描器手册

    中国诗词APP「西窗烛」产品需求文档.docx

    中国诗词APP「西窗烛」产品需求文档

    unity开发的教程.doc

    当然可以!Unity开发是一个非常受欢迎的游戏开发工具,适合初学者入门。以下是一些Unity开发的教程,供您参考: 1. Unity官方文档:Unity官方网站提供了详细的文档和教程,包括Unity的基本概念、工具使用、场景编辑、游戏逻辑编写等。您可以根据自己的需求和水平选择相应的教程。 2. Unity官方的Unity Creator在线课程:Unity Creator是Unity的在线教育平台,提供了许多免费的Unity Creator教程和课程,适合初学者入门。您可以根据教程的内容和难度选择适合自己的课程。 3. Unity中文社区:Unity中文社区是一个非常活跃的社区,提供了许多Unity开发的教程和资源。您可以搜索相关的教程和资源,与其他开发者交流和学习。 4. Unity教程网站:有许多网站提供了Unity开发的教程和资源,如游戏学院、编程教室等。这些网站提供了许多基础和进阶的Unity开发教程,适合初学者和有一定基础的开发者。 5. Unity插件开发:Unity插件开发是Unity开发的一个重要方向,适合有一定基础的开发者。您可以学习如何创建自定义的Unity插件,

    node-v12.19.1-linux-arm64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    惠普服务器安装说明

    惠普服务器安装说明

    node-v12.18.2-linux-s390x.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v12.22.4-linux-ppc64le.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    python烟花代码示例

    附件是一个简单的烟花效果的代码示例。 在Python中,可以使用多种方式来模拟烟花效果,其中一种常用的方法是使用turtle模块,它提供了一个画布和一个小海龟,可以用来绘制各种图形。 这段代码首先导入了turtle模块和random模块,然后在屏幕上绘制了10次烟花爆炸的效果。每次爆炸都是由5个小圆组成,颜色随机选择,圆的大小也是随机的。 请注意,这段代码需要在支持turtle模块的Python环境中运行,并且需要有图形界面的支持。如果你在没有图形界面的环境中(比如某些服务器或者命令行界面),这段代码可能无法正常运行。

    基于MATLAB和Simulink通过正运动学和逆运动学设计了PID控制器.zip

    基于MATLAB和Simulink通过正运动学和逆运动学设计了PID控制器.zip基于MATLAB和Simulink通过正运动学和逆运动学设计了PID控制器.zip基于MATLAB和Simulink通过正运动学和逆运动学设计了PID控制器.zip基于MATLAB和Simulink通过正运动学和逆运动学设计了PID控制器.zip基于MATLAB和Simulink通过正运动学和逆运动学设计了PID控制器.zip基于MATLAB和Simulink通过正运动学和逆运动学设计了PID控制器.zip

    基于python的深度学习的声学回声消除基线代码

    基于深度学习的声学回声消除基线代码 # 数据准备 按照以下文件结构,放好语音,我直接使用的是AEC-Challenge 数据集中的合成数据集 ```angular2html └─Synthetic ├─TEST │ ├─echo_signal │ ├─farend_speech │ ├─nearend_mic_signal │ └─nearend_speech ├─TRAIN │ ├─echo_signal │ ├─farend_speech │ ├─nearend_mic_signal │ └─nearend_speech └─VAL ├─echo_signal ├─farend_speech ├─nearend_mic_signal └─nearend_speech ``` 数据处理脚本为 `data_preparation.py`

    Dell Edge Gateway 3002 安装和操作手册

    Dell Edge Gateway 3002 安装和操作手册

    88888888888.mp3

    88888888888.mp3

    Java毕设之ssm002学院党员管理系统+jsp.rar

    环境说明: 开发语言:java 框架:springboot,vue JDK版本:JDK1.8 数据库:mysql5.7+(推荐5.7,8.0也可以) 数据库工具:Navicat11+ 开发软件:idea/eclipse(推荐idea) Maven包:Maven3.3.9+

    node-v12.18.4-linux-s390x.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    KR-18 y KR-24 INSTALACIÓN INTRODUCCIÓN

    KR-18 y KR-24 INSTALACIÓN INTRODUCCIÓN KR-18 和 KR-24 安装说明

    node-v12.22.4-linux-s390x.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

Global site tag (gtag.js) - Google Analytics