首页 Soft PlugIn RAN乱 Dev开发 Info资料 English WAP 留言 登陆 注册
-
Posted by Yippee | 评论(0) | 引用(0) | 阅读4680次
PHP GET POST 古怪的POST问题

一个很奇怪的表单提交~~~~

代码如下:
<form name=form3 action="?actname=save" method="post" target="_self">
定义提交事件,进行UPDATE 更新

在最后加上一个隐藏文本框,保存ID,以便进行UPDATE
<?php
           echo "<a href=\"?id=$i&actname=del\"> 删除</a>";
           $i=$row['operatorid'];
           printf("%d", $i);
           $i7777=$row['operatorid'];
            printf( "<input name=iddd type=\"text\" value=%d>",$i7777);
            echo "<input name=id type=hidden value=43434>";
            printf("%d", $i);
          
            ?> 

在主PHP里面打印参数
print_r($_POST);

结果显示:
Array ( [namessearch] => [loginname] => sf [level] => 0 [name] => sf [phone] => 123 [fax] => 345 [mail] => 3 at 123 dot cpm [iddd] => 0 [id] => 43434 [go] => )

除了我想要的IDDD,其他的都很正常

试验了PRINTF,PRINT,ECHO,文本框,TEXT,%d,%s,直接取值,赋值,仍然不行?!

而页面显示则非常正常。我前后都ECHO PRINT,文本框里面也显示正常

HTTP GET 变量:$_GET
注: 在 PHP 4.1.0 及以后版本使用。之前的版本,使用 $HTTP_GET_VARS。
通过 HTTP GET 方法传递的变量组成的数组。是自动全局变量。
这是一个“superglobal”,或者可以描述为自动全局变量。这只不过意味这它在所有的脚本中都有效。在函数或方法中不需要使用 global $_GET; 来访问它,就如同使用 $HTTP_GET_VARS 一样。
$HTTP_GET_VARS 包含着同样的信息,但是不是一个自动全局变量(注意:$HTTP_GET_VARS 和 $_GET 是不同的变量,PHP 处理它们的方式不同)。
如果设置了 register_globals 指令,这些变量也在所有脚本中可用;也就是,分离了 $_GET 和 $HTTP_GET_VARS 数组。相关信息,请参阅安全的相关章节使用 Register Globals。这些单独的全局变量不是自动全局变量。

HTTP POST 变量:$_POST
注: 在 PHP 4.1.0 及以后版本使用。之前的版本,使用 $HTTP_POST_VARS。
通过 HTTP POST 方法传递的变量组成的数组。是自动全局变量。
这是一个“superglobal”,或者可以描述为自动全局变量。这只不过意味这它在所有的脚本中都有效。在函数或方法中不需要使用 global $_POST; 来访问它,就如同使用 $HTTP_POST_VARS 一样。
$HTTP_POST_VARS 包含着同样的信息,但是不是一个自动全局变量(注意:$HTTP_POST_VARS 和 $_POST 是不同的变量,PHP 处理它们的方式不同)。
如果设置了 register_globals 指令,这些变量也在所有脚本中可用;也就是,分离了 $_POST 和 $HTTP_POST_VARS 数组。相关信息,请参阅安全的相关章节使用 Register Globals。这些单独的全局变量不是自动全局变量。

我的理解是如果按照上面那种方法,通过 SUBMIT和action,那么ACTION传递方法参数,而表单里面的内容则是通过
$_POST[key]获得

如果通过超级链接 如http://www.shengfang.org/blog/index.php?job=showcat&cat=1
表示参数有 CAT 和 JOB
可以通过 $_GET获得,也可以直接 global 关键字
global 关键字
在函数中申明了全局变量 $a 和 $b,任何变量的所有引用变量都会指向到全局变量。对于一个函数能够申明的全局变量的最大个数,PHP 没有限制。
在全局范围内访问变量的第二个办法,是用特殊的 PHP 自定义 $GLOBALS 数组。
例子 12-2. 使用 $GLOBALS 替代 global
<?php $a = 1;$b = 2;
function Sum()
{
    $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}
Sum();echo $b;?> 
在 $GLOBALS 数组中,每一个变量为一个元素,键名对应变量名,值变量的内容。$GLOBALS 之所以在全局范围内存在,是因为 $GLOBALS 是一个超全局变量。

今天莫名其妙好了

 <?php
           echo "<a href=\"?id=$i&actname=del\"> 删除</a>";
           echo "<input name=idd type=hidden value=$id>";
            ?> 

其中:$i=$row['operatorid'];  是在HTML里面定义的,是循环从数据库读取出来的,而$id是由 http://127.0.0.1/bill/admin/admin.php?id=5&actname=edit 编辑传递过去的~

我明白了,由于循环语句,所以每次都定义一个TEXT,导致NAME不断被重叠,就是说IDD本来是1,然后变成下一个记录的ID,最后变成最后一条记录的ID,所以都是0。

所以如果直接显示$ID,那么每次都是同样的值,所以就没有关系。

如果我放在IF里面:<?php
          //printf("<input type=hideen name=\"iddd\"   value=%s>",$row["operatorid"] );
           //echo "<input name=idd type=hidden value=$id>";
          if ($boolEdit==true && $row['operatorid']==$id)
           {
    echo "<input name=idd type=hidden value=$id>";
            printf("<input type=text name=\"mail\" size=6 maxlength=11 value=%s>",$row["mail"] );
            }
           else
            echo $row["mail"] ?>
          </td>

那么也是正确的~~~~~~~


字体:

Permanant URI永久地址 http://www.shengfang.org/blog/p/phppostprm.php
Trackback URI引用地址 http://www.shengfang.org/blog/tb.php?tb_id=1129593211

2005年10月18日07:53星期二  [Dev开发] 追踪此文的RSS
提示:
此文还没有评论。

称呼:    登陆   注册
   不注册,但记住我的信息
邮件:
(非必须)
评论: [UBB代码帮助]
粗体 斜体 下划线 链接 水平线 引用



验证码: 请输入你看见的数字
关闭UBB      提交时自动将内容复制到剪贴板

公告





统计信息
[Yippee]||[统计]||日志:2143
在线: 14||用户: 2635 [列表]
今日:689||到访:3654474
Rss:||评论:1668

最新日志

最新评论

友情链接

日历
342009 - 0734
   1234
567891011
12131415161718
19202122232425
262728293031 

最新引用
搜索

归档

杂项
Get RSS Feed (Version 2.0)
Get Atom Feed (Version 0.3)
编码:  UTF-8