问题:网页上提交表单之后,PHP为什么不能获取提交的内容?然而在老版本的PHP上运行却正常。

  新版的PHP已经废弃了原来的表单内容处理方式,即不再把提交的表单的内容直接复制到一个同名变量中。解决办法有四个:

  1. 修改php.ini,查找 register_globals,将其值修改为 On。这样就可以像原来一样,例如,提交的表单中包括一个名为"username"的变量,那么在php中就可以直接使用$username来访问该变量。但是,除非你要使用一段旧的代码而考虑到兼容性问题,否则不建议使用该方法。

  2. 使用 $HTTP_GET_VARS、$HTTP_POST_VARS数组来访问,例如写成$HTTP_POST_VARS["username"]的形式。不过该方法也不建议采用。

  3. (推荐)使用 $_POST、$_GET等数组来访问,例如写成 $_POST["username"]的形式。建议采用这种方法。

  4. (推荐)使用 import_request_variables 函数。该函数将提交内容导入到变量中。例如 import_request_variables("gp", "rvar_");第一个参数可以选择g,p,c,分别表示导入 GET,POST,COOKIE 变量;第二个参数为导入后的变量前缀。执行上面的语句后即可使用 $rvar_username 来访问提交的 username 变量。使用import_request_variables("gp", "");可以兼容以前的PHP程序。

  

PHP $_GET 和 $_POST变量是用来获取表单中的信息的,比如用户输入的信息。

PHP表单操作

在我们处理HTML表单和PHP表单时,我们要记住的重要一点是:HTML页面中的任何一个表单元素都可以自动的用于PHP脚本:

表单举例:

<html>
<body><form action="welcome.php" method="post">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
<input type="submit" />
</form></body>
</html>

上述HTML页面包含了两个输入框[input field]和一个提交[submit]按钮。当用户将信息填写完毕并点击提交按钮时,表单的数据将被发送至“welcome.php”文件。

“welcome.php”文件如下所示:

<html>
<body>Welcome <?php echo $_POST["name"]; ?>.<br />
You are <?php echo $_POST["age"]; ?> years old.</body>
</html>

上述脚本将输出下面这段结果:

Welcome John.
You are 28 years old.

PHP $_GET 和 $_POST变量将在下面作具体讲解。

表单有效性验证[Form Validation]

用户输入的信息应该尽可能的通过客户端脚本程序(如:JavaScript)浏览器上验证;通过浏览器进行信息的有效性验证可以提高效率并减少服务器的下载压力。

如果用户输入的信息需要存进数据库,那么你必须考虑在服务器端进行有效性验证。在服务器上验证信息有效性的最好方法就是把表单信息发给当前页进行验证,而不是调到其他页面进行验证。通过上述方法,如果表单存在错误,用户可以直接在当前页获取错误信息。这使得我们更容易发现存在的错误信息。

PHP $_GET变量是通过get方法从表单中获取“值”的。

$_GET变量

$_GET变量是一个包含名称[name]和值[value]的数组(这些名称和值是通过HTTP GET方法发送的,且都可以利用)。

$_GET变量使用“method=get”来获取表单信息。通过GET方法发送的信息是可见的(它将显示在浏览器的地址栏里),并且它有长度限制(信息的总长度不能超过100个字符[character])。

案例

<form action="welcome.php" method="get">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>

当用户点击“提交Submit”按钮后,URL的方式显示

“welcome.php”文件可以使用“$_GET”变量来获取表单数据(注意:表单栏[form field]内的名称将会自动作为“$_GET”数组中的ID关键词):

Welcome <?php echo $_GET["name"]; ?>.<br />You are <?php echo $_GET["age"]; ?> years old!

为什么要使用“$_GET”?

要点:当使用“$_GET”变量时,所有的变量名和变量值都会显示在URL地址栏内;所以,当你发送的信息包含密码或是其他一些敏感信息时,就不可以再使用这种方法。因为所有的信息会在URL地址栏内显示,所以我们可以把它作为标签放入收藏夹内。这在很多情况下非常有用。

注意:如果需要发送的变量值过大,HTTP GET方法便不适用。发送的信息量不能超过100个字符。

$_REQUEST变量

PHP $_REQUEST变量包含$_GET, $_POST, and $_COOKIE的内容。

PHP $_REQUEST变量可以用来获取通过“GET”和“POST”这两种方法发送的表单数据。

案例

Welcome <?php echo $_REQUEST["name"]; ?>.<br />You are <?php echo $_REQUEST["age"]; ?> years old!

PHP $_POST变量的作用是:获取method = “post”方法发送的表单变量。

$_POST变量

$_POST变量是一个包含名称[name]何值[value]的数组(这些名称和值是通过HTTP POST方法发送的,且都可以利用)

$_POST变量使用“method=POST”来获取表单信息。通过POST方法发送的信息是不可见的,并且它没有关于信息长度的限制。

案例

<form action="welcome.php" method="post">
Enter your name: <input type="text" name="name" />
Enter your age: <input type="text" name="age" />
<input type="submit" />
</form>

当用户点击“提交Submit”按钮后,URL中不会包含任何表单数据

“welcome.php”文件可以使用“$_POST”变量来获取表单数据(注意:表单栏[form field]内的名称将会自动作为“$_POST”数组中的ID关键词):

Welcome <?php echo $_POST["name"]; ?>.<br />
You are <?php echo $_POST["age"]; ?> years old!

为什么要使用$_POST?

通过HTTP POST发送的变量不会在URL中显示出来

变量的大小没有限制

然而,因为变量不能在URL中显示出来,所以也不可能把这个页面作为标签储存在收藏夹里。

$_REQUEST变量

PHP $_REQUEST变量包含$_GET, $_POST, and $_COOKIE的内容

PHP $_REQUEST变量可以用来获取通过“GET”和“POST”这两种方法发送的表单数据。

案例

Welcome <?php echo $_REQUEST["name"]; ?>.<br />
You are <?php echo $_REQUEST["age"]; ?> years old!

php表单提交方法汇总的更多相关文章

  1. html基础之 表单提交方法

    最普通最常用最一般的方法就是用submit type..看代码: <form name=”form” method=”post” action=”#"> <input ty ...

  2. php 表单提交方法

    1.收集 HTML 表单提交的数据 ,PHP $_REQUEST 用于收集 HTML 表单提交的数据. <!DOCTYPE html><html><body> &l ...

  3. layui框架实现多图片手动上传和随表单提交方法

    首先在官方文档并没有手动上传的说明文档,这里手动实现上传原理是:在表单中有三个按钮,分别是上传图片按钮.隐藏上传按钮.表单提交按钮,点击上传图片按钮之后,图片添加在前端但是并没有真正的上传,而是在点击 ...

  4. CSRF verification failed. Request aborted. 表单提交方法为POST时的报错

    本人所用Django版本为1.11,在设置请求方法为POST时,遇到标题中的错误,尝试了多种方法,最终通过下面的操作来修复: 在template文件中添加图中红框部分 接着,导入csrf_exempt ...

  5. jquery 阻止表单提交方法

    <form name="message_form" action="?m=mobilecenter&c=index&a=service" ...

  6. ajax提交form表单资料详细汇总

    一.ajax提交form表单和不同的form表单的提交主要区别在于,ajax提交表单是异步提交的,而普通的是同步提交的表单.通过在后台与服务器进行少量数据交换,ajax 可以使网页实现异步更新.这意味 ...

  7. Validator验证Ajax提交表单的方法

    Validator验证Ajax提交表单的方法 转自:http://hunanpengdake.iteye.com/blog/1671360 当我们在一些稍微复杂的业务时,可能会遇到需要多个表单form ...

  8. js实现无刷新表单提交文件,将ajax请求转换为form请求方法

    最近在做项目的时候遇到一个需要上传文件的需求,因为ajax请求是无法上传二进制文件流的,所以只能用form表单提交,而form提交有一个问题就是会使页面刷新,本文解决了form表单提交文件时页面刷新的 ...

  9. asp.net.mvc 中form表单提交控制器的2种方法和控制器接收页面提交数据的4种方法

    MVC中表单form是怎样提交? 控制器Controller是怎样接收的? 1..cshtml 页面form提交 (1)普通方式的的提交

随机推荐

  1. SQL数据库的备份和恢复

    SQL数据库的备份和恢复 一.SQL数据库的备份: 1.依次打开 开始菜单 → 程序 → Microsoft SQL Server 2008 → SQL Server Management Studi ...

  2. CSS 分组 和 嵌套 选择器

    Grouping Selectors 在样式表中有很多具有相同样式的元素. h1{color:green;}h2{color:green;}p{color:green;} 为了尽量减少代码,你可以使用 ...

  3. 数据库(学习整理)----7--Oracle多表查询,三种join连接

    聚合函数:(都会忽略null数据) 常用的有5种:将字段中所有的数据聚合在一条中 .sum(字段名) :求总和 .avg(字段名) :求平均值 .max(字段名) :求最大值 .min(字段名) :求 ...

  4. HDU_1241 Oil Deposits(DFS深搜)

    Problem Description The GeoSurvComp geologic survey company is responsible for detecting underground ...

  5. DFS的基础训练清单

    HDU 1010  (AC) HDU 1015    (AC) HDU 1016     (AC) HDU 1172   (AC) HDU 1312   (AC) POJ 2362  (AC,1011 ...

  6. Visual Studio 2008中添加运行按钮 转载

    在Visual Studio 2008中添加运行按钮 默认情况下,VS2008中的工具栏上没有运行按钮,只有调试(Debug)按钮,可按照以下方法添加 1.点击菜单Tools(工具)->Cust ...

  7. SlidesJS 3.0.4 在手机上遇到的一些问题及解决办法

    SlidesJS 3.0.4 http://slidesjs.com 在手机上遇到的一些问题及解决办法 1.手机上打开有sliderjs的页面后, 切换到别的页面再回来时, sliderjs部分不能滑 ...

  8. jcarousellite 实现图片列表滚动

    jcarousel Lite与jcarousel 相比去掉了皮肤的约束,可以自定义的设置前后按钮和选项卡按钮,生成的html更加简洁,文件更小(2k) 下载链接:http://www.gmarwaha ...

  9. Node.js(window)基础(2)——node环境下的模块,模块间调用

    参考:http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/00143450241959 ...

  10. Android 下拉刷新控件Android-PullToRefresh

    需要用到一个开源库 Android-PullToRefresh https://github.com/chrisbanes/Android-PullToRefresh ---------------- ...