首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  PHP与模板与代码加密/优化 » 手记:用POST和GET方法在页面间传/收数据彻底教程  


  作者:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

  nqp@nqp.me
  4304410
  www.nqp.me

 

 发表:2004-04-05 19:37:52 阅读 2892 次 回复 7 次 得分7  |   字号 字色
手记:用POST和GET方法在页面间传/收数据彻底教程
   作过动态网站开发的朋友,不论是PHP还是ASP还是其他什么语言,都经常用到在页面之间用表单或者其他方法传递数据。我们随便做一个用户注册,就需要用户把输入的资料传递到服务器端,然后服务器端处理之后存入数据库,页面之间传递变量的方法当然还可以使用session等等,但是我们今天要重点研究一下,在php中,用post和get方法传递的数据是如何接收的。
    在php3以及在此之前,php对每一个传递到服务器端的变量自动创建一个全局变量,也就是说,如果你在网页中有这么一个表单
   a.php
   ............
    <form action=b.php method=post>
 你的姓名:<input type=text name="username">
  <input type=submit value="提交">
    </form>
   ..............
  这个表单被提交之后,会自动在服务器端创建一个变量$username,也就是说,您可以直接用这个变量名来使用其值,比如:
   b.php
   ........
   <?php
   echo "您刚才输入的名字是:".$username;
   ?>
   .........
   也就是说,不需要任何接受动作,服务器会自动为你创建这个变量。get方法传递的变量也是一样的,当然,如果post和get同时传递,那么接受的顺序按照php.ini中规定的顺序进行。这样看起来是比较简单的,我们不需要作专门的接收语句,就可以使用提交过来的变量。这在php4以前的版本中很受欢迎,大家也都这么使用——直到今天我们还经常见到这样的代码,以至于我们经常一头雾水,不知道某个变量是从哪里来的,原来是post或者get方法传递过来的!!但是到了php4,这种接收变量的方法便默认不再被支持。当然,你可以通过修改php.ini中的register_globals选项来开启这项功能,但是,php开发者已经不建议您这么做,配置文件的注释中写道:
---------------------------------------
You should do your best to write your scripts so that they do not require register_globals to be on;  Using form variables as globals can easily lead to possible security problems, if the code is not very well thought of.
 我粗略翻译一下, 意思是说:你应该尽你的最大能力来写你的脚本,使你的脚本不需要自动注册全局变量,如果使用自动注册表单全局变量,那么如果你写的代码不够深思熟虑,将会很容易导致安全问题。
---------------------------------------------

   看来,PHP开发者已经不再鼓励使用以前的看起来很方便的方法,所以,在php4的配置文件中,register_globals 默认值为:off。是关闭的。
   那么,在php4中,我们如何来接收post,get方法传递的变量呢?不用紧张,php4提供了另一种更加安全的机制来解决这个问题,你可以使用形如$_POST[],$_GET[],$_SERVER[]等等形式的全局变量来接收传递过来的参数。打个比方,还是刚才A.PHP的例子,我们B.PHP只要这样改写,就可以了。
b.php
------------------------
<?php
 echo "你刚才输入的名字是:".$_POST["username"];
?>
------------------
  这样,你的代码就会顺利执行,get方法传递的变量同理可以接收。

   这篇文章简单的介绍了一下在php4中接收使用post,get传递过来的数据的方法。主要目的是让大家明白,php4中的接收机制和php3是不同的,初学者很容易犯这个错误,因为网络上很多源程序是php3的,下载下来以后在php4环境下条是不能通过,很多时候是这个原因。
    希望这篇文章对您学习php有所帮助。
  
 
 1#楼  
 
  回复人:Miyahoo
  注册时间:2004-04-04
  主题/回复:39/255
  积分:1210
  等级:★★★☆(七级)
  称号:论坛贤士

   
 1#楼 发表于2004-04-05 23:48:21  评分:1 

echo "你刚才输入的名字是:".$_POST["username"];

.$_post[username];

.是连接字符串??

$是什么?_是什么啊?

 2#楼  
 
  回复人:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

   
 2#楼 发表于2004-04-06 02:26:36  评分:× 

对,PHP中,“.”是字符串连接符号。就像asp中的“&”。
$是PHP的一大特点,PHP中,每个变量的名字前都要加一个$来调用。简单点说,就是php中每一个变量都以$开头。
比如
$a=123;
表示,给变量$a赋值123,asp中直接a=123就可以了。
你多看一点php基础教程吧。
 3#楼  
 
  回复人:ziying
  注册时间:2004-11-09
  主题/回复:9/21
  积分:467
  等级:★★☆(五级)
  称号:略有小成

   
 3#楼 发表于2004-12-17 06:20:23  评分:2 

站长写的好呀,收到 !
 4#楼  
 
  回复人:小猪
  注册时间:2005-02-04
  主题/回复:1/11
  积分:416
  等级:★★☆(五级)
  称号:略有小成

   
 4#楼 发表于2005-02-11 02:49:55  评分:2 

支持
 5#楼  
 
  回复人:tenminutes
  注册时间:2005-02-24
  主题/回复:1/1
  积分:406
  等级:★★☆(五级)
  称号:略有小成

用户联系方式已设置为保密
 5#楼 发表于2005-02-24 05:26:20  评分:1 

好!
 6#楼  
 
  回复人:yfei
  注册时间:2005-03-30
  主题/回复:3/9
  积分:424
  等级:★★☆(五级)
  称号:略有小成

用户联系方式已设置为保密
 6#楼 发表于2005-03-30 21:37:20  评分:1 

我的配置文件已经改过了,register_globals的值也是off!
但是变量的值还是传不下去呀?
 7#楼  
 
  回复人:yfei
  注册时间:2005-03-30
  主题/回复:3/9
  积分:424
  等级:★★☆(五级)
  称号:略有小成

用户联系方式已设置为保密
 7#楼 发表于2005-03-30 21:47:46  评分: 

我用的是php4
  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.011sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版