在php中取得image按钮传递的name值

我需要使用图片按钮来美化我的web,但是使用连接的传递方式会在浏览栏里面出现变量值,这样看上去不舒服,如果使用hidden来提交呢,又觉得没有必要,因为既然image有name属性,就应该能取到的,何必要多加一个变量呢?在bbs里贴了好几天也没人回答,我就只能自己看书想办法,后来找到了!

PHP 和 HTML
PHP 和 HTML 可以互操作: PHP 能够生成 HTML, 而 HTML 可以传递信息给 PHP.

在表单中的image作为submit的话,会产生两个相关变量,譬如:
<input type=image src=”…” name=aaa>
然后呢,在提交的过程中会产生两个变量,为aaa_x和aaa_y
其中包含了图片在屏幕上的具体位置x和y
然后么在php中只要对aaa_x和aaa_y判断一下就行了

  1. 我用一个 form/URL传值时,我要怎样 编码/解码? 2. 我在用 <input
    type=”image”> 标记, 但 $foo.x and $foo.y 变量却不可用. 它们在哪里? 3.
    我怎样创建 HTML <form>数组? 4.
    我怎样从一个多选框得到所有的结果值?
  2. 我用一个 form/URL传值时,我要怎样 编码/解码?
    在几个阶段里,编码是非常重要的. 假设你有一个 字符串变量 $data,
    它包含一些你要以 未编码 方式传递的字符, 要经过下面阶段的编码:

不需要任何隐藏域,javascript,和连接传值行为!

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
进行编码.

您可能感兴趣的文章:

  1. 我在用 <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. 也就是说,
    圆点被替换成了下划线.
  2. 我怎样创建 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外部变量.

  1. 我怎样从一个多选框得到所有的结果值?
    88必发手机客户端下载,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[]’];