php中,post与get获取参数的异同

  最近在做一个小型的个人博客时,发现自己在数据获取方面总是出现各种问题,现就网页数据的获取方式加以归类总结。

  最常见的获取数据的方式有两种:

  1. get方法 从指定的资源请求数据 即从服务器上获取数据

  2. post方法  向指定的资源提交要被处理的数据 即向服务器传送数据

  需要注意的一点是:

  Get方法:

  • 查询字符串(名称/值对)是在 GET 请求的 URL 中发送的,若使用get方法请求参数,需要在请求的URL后面传入请求的参数值 (该信息用户可以看到)

  ex:http://localhost/17.5.21/postGet.php?name=max&pass=123

  Post方法:

  • 查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的 (该信息用户看不到)
 Post: http://localhost/17.5.21/postGet.php HTTP/1.1
 Host: localhost
 name=max&pass=123


  下面用一些代码来实现具体的效果:

  • Get方法:
<?php
$name = $_GET[‘name‘];
var_dump($name);
$pass = $_GET[‘pass‘];
echo "<br/>";
echo ‘pass=‘.$pass;
echo ‘<hr>‘;
?>

 因为使用get方法请求数据,所以在请求参数时,应在请求的URL后面加上请求的参数数据:?name=max&pass=123

  • Post方法:

  

<form method="post" name="form" action="postGet.php">
  <table >
      <tr>
       <td>用户名:</td>
       <td><input type="text" name="username"/></td>
      </tr>
      <tr>
       <td>密码:</td>
       <td><input type="password" name="psw"/></td>
      </tr>
      <tr>
       <td><input type="submit" name="Submit" value="提交"/></td>
      </tr>
  </table>
</form>
<?php
    $username = $_POST[‘username‘];
    echo "用户名:".$username;
    echo "<br/>";
    $password = $_POST[‘psw‘];
    echo "密码:".$password;
?>

  Html效果如图:

  因为使用Post方法请求数据,所以在获取参数时可以使用$_POST[‘‘]; 直接通过获取html页面中的name值得到对应的用户在输入框输入的参数值

  



  总结:

  1. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。

    post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。

  2. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。

  3. get传送的数据量较小,不能大于2KB。

    post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为 100KB。

  4. get安全性非常低,post安全性较高。但是get执行效率却比Post高。

  

  建议:

  1、get方式的安全性较Post方式要差些,包含机密信息的话, 建议用Post数据提交方式;

  2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式。

时间: 2024-08-26 08:02:09

php中,post与get获取参数的异同的相关文章

Node.js中的express框架获取参数

express获取参数有三种方法: req.query  适合 http://localhost:3000/form?num=8888 req.body   适合http://localhost:3000/form,然后Post一个num为tinyphp req.params  适合获取form后的num:http://localhost:3000/form/num 一.GET app.js var express = require('express'); var app = express(

JSP userBean setProperty直接从request中获取参数

JSP userBean setProperty直接从request中获取参数: form表单Jsp: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page isELIgnored="true"%> <% String path = request.getContextPath(); String

form中action属性后面?传递参数 获取不到

1 $p_id = $_REQUEST['p_id']; 2 3 echo "<h1>您将更新商品编号为<span>$p_id</span>的商品信息 <a href='listproduct.php'>查看所有</a></h1> 4 <form action='updateproduct.do.php?p_id=$p_id' method='get'> 5 商品名称:<input type='text'

Node.js中的express框架获取http参数

最近本人在学习开发NodeJs,使用到express框架,对于网上的学习资料甚少,因此本人会经常在开发中做一些总结. express获取参数有三种方法:官网介绍如下 Checks route params (req.params), ex: /user/:id Checks query string params (req.query), ex: ?id=12 Checks urlencoded body params (req.body), ex: id=1.例如:127.0.0.1:3000

Django中获取参数(路径,查询,请求头,请求体)

一.通常HTTP协议向服务器传参有几种途径 : 提取URL的特定部分,如/weather/shanghai/2018,可以在服务器端的路由中用正则表达式截取: 查询字符串(query string),形如key1=value1&key2=value2: 请求体(body)中发送的数据,比如表单数据.json.xml: 在http报文的头(header)中. 1.URL中参数的获取 在定义路由URL时,可以使用正则表达式提取参数的方法从URL中获取请求参数,Django会将提取的参数直接传递到视图

(六)、nodejs中的express框架获取http参数

express获取参数方法: 一.通过req.params app.get('/user/:id', function(req, res){ res.send('user ' + req.params.id); }); 也可以: app.get('/user/:id', function(request, response){ response.send('user ' + request.params.id); }); 二.通过req.body var app = require('expre

JSP基础知识?获取参数和过滤器(四)

JSP表单提交和参数获取 JSP表单提交的两种方式:post和get,通过这两种方式提交的参数到后台,获取参数的值主要由request来处理,获取值的方式有以下几种: getParameter(): 使用 request.getParameter() 方法来获取表单参数的值. getParameterValues(): 获得如checkbox类(名字相同,但值有多个)的数据. 接收数组变量 ,如checkbox类型 getParameterNames():该方法可以取得所有变量的名称,该方法返回

JavaScript从URL里面获取参数

如何从URL中获取参数是一个很基本的问题.首先假定URL是合法的,code 如下,欢迎各位大大code review. 1. 可以使用一个match和循环split function findQueriesFromUrl(url){ var regex, matches, i, length, pair, result = {}, query; if(!url) return; regex = /\w+\=\w*/g; matches = url.match(regex); for(i = 0,

http中 get方法 传送中文参数乱码解决办法

http传送参数有两种方法:get 和post  当时使用get方法传递中文参数是会有乱码现象 解决办法: 1.在jsp压面url后面的参数使用 encodeURI:"&zxbghy="+ encodeURI(zxbghy) 2.在后台java获取参数时使用字节数组:temphgdmhy = new String(hgdmhy.getBytes("ISO-8859-1"), "UTF-8");  案例,用get方法传递两个中文参数:zxb