电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 在线教程-> PHP
PHP 和 HTML-PHP教程,PHP基础
作者:网友供稿 点击:22
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
php 和 html
php 和 html 可以互操作: php 能够生成 html, 而 html 可以传递信息给 php. 1. 我用一个 form/url传值时,我要怎样 编码/解码? 2. 我在用 <input type="image"> 标记, 但 $foo.x and $foo.y 变量却不可用. 它们在哪里? 3. 我怎样创建 html <form>数组? 4. 我怎样从一个多选框得到所有的结果值?
1. 我用一个 form/url传值时,我要怎样 编码/解码?

在几个阶段里,编码是非常重要的. 假设你有一个 字符串变量 $data, 它包含一些你要以 未编码 方式传递的字符, 要经过下面阶段的编码:

  • html 解释. 为了表示任何一个字符串, 你必须 把它包含在双引号里, 而且是html特殊字符的要使用 htmlspecialchars写法.

  • url: url 由几部分组成. 你想你的数据被看成url的一部分, 你 必须urlencode()编码它.



例 52-1. 隐藏的 html 表单元素
<?php    echo "<input type=hidden value=\"" . htmlspecialchars($data) . "\">\n";?>

注意: 这里不能用urlencode() $data, 因为 urlencode() 数据是浏览器的责任. 绝大多数浏览器可以正确处理这样的数据. 无论用何种方法( get post). 你可以只考虑 get 请求, 因为 post 请求通常被隐藏了.

例 52-2. 用户编辑数据
<?php    echo "<textarea name=mydata>\n";    echo htmlspecialchars($data)."\n";    echo "</textarea>";?>

注意: 在浏览器窗口显示的数据会被解码成可读的,因为浏览器会对 html 标记进行解释.
一旦提交, 无论get 还是 post, 浏览器在传输数据时会进行url编码,php则会对它进行解码. 一切都是自动进行的,你不需要做什么.

例 52-3. 在url串里
<?php    echo "<a href=\"" . htmlspecialchars("/nextpage.php?stage=23&data=" .        urlencode($data)) . "\">\n";?>

注意: 实际上你在自己写一个 get 请求, 所以用urlencode() 对它进行编码就是不可缺少的.

注意: 你需要htmlspecialchars() 整个url串, 因为url串是 html-属性的一部分. 这种情况下, 浏览器首先 反-htmlspecialchars() 这个值, 然后送出 url . php 会识别这个url串, 因为你用 urlencoded() 对它进行了编码.
你会发现 & 在 url 串中 被替换成 &. 虽然你没有编码大部分的浏览器也会帮你做,但并不是所有的都能. 所以即使你在写一个静态的url,你也需要htmlspecialchars() 来对 url 进行编码.


2. 我在用 <input type="image"> 标记, 但 $foo.x and $foo.y 变量却不可用. 它们在哪里?

在提交一个表单里, 可能使用一个 image 控件而不是使用 标准的提交按钮:
<input type="image" src="image.gif" name="foo">
when 当用户点上 image 控件的某个地方时, 表单被提交到服务器,并有两个附加的变量: foo.x and foo.y.
因为 $foo.x 和 $foo.y 在 php 里是无效的变量名, 所以它们自动被转换成$foo_x and $foo_y. 也就是说, 圆点被替换成了下划线.
3. 我怎样创建 html <form>数组?

为了使你的表单结果作为数组送往php脚本,你可以给 <input>, <select> or <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 and phone.

说明: 在元素名里标明下标值是可选的.如果你没有标明,数组会按元素在表单里出现的顺序来依次填充. 如我们的头一个例子里数组的下标分别是: 0, 1, 2 and 3.


参见 array 函数 and php外部变量.
4. 我怎样从一个多选框得到所有的结果值?

html里的多选框是用来让用户从列表里选多个值的.这些值然后被送往表单的处理脚本. 问题在于它们都有同样的变量名. 例如:
<select name="var" multiple>
每一个被选择的项会这样传值给处理脚本:
var=option1var=option2var=option3
每个值覆盖了前一项的值. $var 解决办法是使用 php的 "表单元素数组"特性.下面就是:
<select name="var[]" multiple>
php会把 $var当成一个数组.每个被选择项都会分配给一个数组单元. 第一项是$var[0], 下一项是 $var[1], 依此类推. count() 函数可以用来判断数组有多少选择项 ,如果有必要的话,还可以用 sort() 函数来对数组进行排序.
如果你在使用 javascript , 直接使用元素名引用可能会出错. 你应该使用它的数字索引,或者把变量名放在单引号之内.例如:
variable = documents.forms[0].elements[var[]];

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·Windows下的PHP5.0安装配制详解-PHP教程,PHP安装
·PHP在XP下IIS和Apache2服务器上的安装-PHP教程,PHP应用
·最近忙于FTP,好站多多!有好多好东东哦!不敢独享!-PHP教程,PHP基础
·PHP 5.0 Pear安装方法-PHP教程,PHP安装
·PHP开发利器-PRADO 1.6(4)-PHP教程,PHP应用
·Sun Sparc Solaris 2.6 Apache-1.3.12+MySQL-3.23.5+PHP-3.0.15 安装记-PHP教程,PHP应用
·php5学习笔记(转)-PHP教程,PHP应用
·APACHE安装笔记-PHP教程,PHP安装
·PHP.MVC的模板标签系统(四)-PHP教程,PHP应用
·PHP.MVC的模板标签系统(二)-PHP教程,PHP应用

最新文章
·PHP源码-利用 QQWry.Dat 实现 IP 地址高效检索
·Php高手带路--问题汇总解答[2]
·PHPQQ编程(2):取QQ在线状态
·php5手动最简安装方法
·福利彩票幸运号码自动生成器
·PHP开发利器-PRADO 1.6
·在Apache 服务器上启用PHP支持
·Windows2000_pro下安装Apache+PHP4+My
·php文件上传的实现
·PHP开发框架的现状和展望




版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号