PHP中$_GET $_POST $_REQUEST三者的区别
- 格式:doc
- 大小:29.00 KB
- 文档页数:2
get与post区别⼀、get和post区别1.url可见性 get传参⽅式是通过地址栏URL传递,是可以直接看到get传递的参数,post传参⽅式参数URL不可见,get把请求的数据在URL后通过?连接,通过&进⾏参数分割。
psot将从参数存放在HTTP的包体内2.传输数据⼤⼩ get传递数据是通过URL进⾏传递,对传递的数据长度是受到URL⼤⼩的限制,URL最⼤长度是2048个字符。
post没有长度限制3.后退页⾯ get后退不会有影响,post后退会重新进⾏提交4.缓存 get请求可以被缓存,post不可以被缓存5.编码⽅式 get请求只URL编码,post⽀持多种编码⽅式6.历史记录 get请求的记录会留在历史记录中,post请求不会留在历史记录7 字符类型 get只⽀持ASCII字符,post没有字符类型限制⼆、post相⽐较get传参⽅式的优点 1.安全性⽐get传参⽅式好: a.存在于HTTP包中,⼀般不会直接被查找到 b.post不会被浏览器进⾏缓存 c.不会留在历史记录中 (并不代表post⼀定安全,因为在HTTP下都是明⽂传输,post仍然可以被查找到,增加安全性最好使⽤https协议) 2.post没有字符和编码的限制,能发送的数据类型更多 3.post传送数据没有⼤⼩限制,⽐get可以发送的更多的数据 post的缺点:速度⽐get传输慢,get的效率更⾼三、为什么get的效率⽐post⾼ 1.post在接收返回来的数据会先将请求头发送给服务器确认,然后才真正的发送数据,(相当于第⼀次先向服务器打个招呼,第⼆次才将数据真正的发过来,get则是直接发送数据。
专业的说法是,get产⽣⼀个TCP数据包,post产⽣两个TCP。
数据包但并不是所有的浏览器post都会请求两次,⽕狐浏览器就会请求⼀次)总结起来就是请求的过程⽐get更多 2.get会将数据进⾏缓存。
一、get请求和post请求的相同点1.1 参数传递方式相同无论是get请求还是post请求,都可以通过URL传递参数,也可以通过请求体传递参数。
1.2 都是HTTP请求方式get请求和post请求都是HTTP协议中定义的两种基本请求方式,在网络通信中都可以使用。
1.3 都可以使用缓存无论是get请求还是post请求,都可以利用浏览器缓存来提高请求的效率。
1.4 都可以使用URL重写无论是get请求还是post请求,都可以利用URL重写来隐藏真实的请求参数或路径。
1.5 都可以使用Session和Cookie无论是get请求还是post请求,都可以使用Session和Cookie来保存用户会话状态。
1.6 都可以传递数据无论是get请求还是post请求,都可以传递各种数据,如文本、图片、文件等。
二、get请求和post请求的不同点2.1 参数传递方式不同get请求通过URL传递参数,参数会显示在URL中,而post请求通过请求体传递参数,参数不会显示在URL中。
2.2 安全性不同由于get请求参数在URL中可见,所以安全性较低,容易被拦截和篡改;而post请求参数不会显示在URL中,安全性较高。
2.3 数据大小限制不同get请求对传递的数据有大小限制,一般在2KB左右;而post请求对传递的数据大小没有限制。
2.4 支持程度不同get请求的支持程度更好,因为它可以直接在浏览器位置区域栏中输入URL来触发请求;而post请求的支持程度较差,因为它需要在表单中提交才能触发请求。
2.5 适用场景不同get请求适用于获取数据的场景,如搜索、浏览等;而post请求适用于提交数据的场景,如登入、注册等。
三、适用场景3.1 get请求的适用场景- 数据获取:get请求适用于获取数据的场景,如搜索、浏览等。
- 无副作用操作:由于get请求不会对服务器端数据进行修改,所以适用于一些无副作用的操作。
3.2 post请求的适用场景- 数据提交:post请求适用于提交数据的场景,如登入、注册等。
浅谈HTTP中Get与Post的区别Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DE LETE。
URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。
到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST 一般用于更新资源信息。
从HTTP原理角度看:1.根据HTTP规范,GET用于获取服务器上的资源,而且应该是安全的和幂等的。
(1).所谓安全的意味着该操作用于获取信息而非修改信息。
换句话说,GET 请求一般不应产生副作用。
就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。
* 注意:这里安全的含义仅仅是指是非修改信息。
(2).幂等的意味着对同一URL的多个请求应该返回同样的结果。
这里我再解释一下幂等这个概念:幂等(idempotent、idempotence)是一个数学或计算机学概念,常见于抽象代数中。
幂等有一下几种定义:对于单目运算,如果一个运算对于在范围内的所有的一个数多次进行该运算所得的结果和进行一次该运算所得的结果是一样的,那么我们就称该运算是幂等的。
比如绝对值运算就是一个例子,在实数集中,有abs(a)=abs(abs(a))。
对于双目运算,则要求当参与运算的两个值是等值的情况下,如果满足运算结果与参与运算的两个值相等,则称该运算幂等,如求两个数的最大值的函数,有在在实数集中幂等,即m ax(x,x) = x。
看完上述解释后,应该可以理解GET幂等的含义了。
但在实际应用中,以上2条规定并没有这么严格。
引用别人文章的例子:比如,新闻站点的头版不断更新。
虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。
从根本上说,如果目标是当用户打开一个链接时,他可以确信从自身的角度来看没有改变资源即可。
PHP学习内容:PHP语言,分三个阶段学习:初级、中级、高级初级学习大概是7天左右,内容有:1)介绍PHP、它的工作原理、安装2)基本语法、数据类型、常量和变量3)PHP提交表单的方法、运算符表达式、条件判断语句在PHP中的用法4)PHP中的常用函数(function)、类(class)5)帮助中常用的内容中级主要是讲Smarty,Smarty是使用PHP写出来的模板PHP模板引擎,程序员改变程序的逻辑内容不会影响到美工的页面设计,美工重新修改页面不会影响到程序的程序逻辑高级主要是讲Mojavi, Mojavi是基于MVC的框架结构。
框架将强制把页面与程序分离, Java, 使用Struts。
FileZilla FileZilla 2.2.15FileZilla FileZilla 2.2.14b描述:BUGTRAQ ID: 14730FileZilla是一款Windows平台的开放源码FTP/SFTP客户端。
php.ini 配置文件中的指令asp_tags打开后才可用。
PHP了解PHP1.什么是PHP?PHP(“PHP: Hypertext Preprocessor”,超文本预处理器的字母缩写)是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到HTML中,尤其适合web 开发。
而PHP 独特的语法混合了C、Java、Perl 以及PHP 式的新语法。
PHP 能够用在所有的主流操作系统上,包括Linux、Unix的各种变种(包括HP-UX、Solaris 和OpenBSD)、Microsoft Windows、Mac OS X、RISC OS 等。
今天,PHP已经支持了大多数的web 服务器,包括Apache、Microsoft Internet Information Server(IIS)、Personal web Server(PWS)、Netscape 以及iPlant server、Oreilly Website Pro Server、Caudium、Xitami、OmniHTTPd 等。
GET和POST请求区别关于http协议GET和POST⽅法的区别我们可以从各处得到⽐较⼀致的答案,今天我们来填⼀个⾯试中可能碰到的⼀个坑。
当⾯试官问你“你觉得GET和POST有什么区别"时,我们可能会想到以下⼏点():GET在浏览器回退时是⽆害的,⽽POST会再次提交请求。
GET产⽣的URL地址可以被Bookmark,⽽POST不可以。
GET请求会被浏览器主动cache,⽽POST不会,除⾮⼿动设置。
GET请求只能进⾏url编码,⽽POST⽀持多种编码⽅式。
GET请求参数会被完整保留在浏览器历史记录⾥,⽽POST中的参数不会被保留。
对参数的数据类型,GET只接受ASCII字符,⽽POST没有限制。
GET⽐POST更不安全,因为参数直接暴露在URL上,所以不能⽤来传递敏感信息。
GET参数通过URL传递,POST放在Request body中。
GET请求在URL中传送的参数是有长度限制的,⽽POST么有。
以上答案除了最后2条基本没什么问题,我们现在测试⼀下到底什么情况。
在HTTP协议中并没有明确论述不同的请求⽅法使⽤的传送数据⽅式(url,body)不同,所以我们假设没有这种区别。
我们实现⼀个的socket server 端程序进⾏测试package mainimport ("fmt""log""net")func main() {l, err := net.Listen("tcp", ":8080")if err != nil {log.Fatalln("err:", err)}defer l.Close()for {c, err := l.Accept()if err != nil {log.Fatalln("err:", err)}go process(c)}}func process(c net.Conn) {defer func() {c.Close()if err := recover(); err != nil {log.Println("process error:", err)}}()rH := `HTTP/1.1 200 OKContent-Type:"application/json"`rSegmentation := "\r\n\r\n"rB := `{"data":"success"}`resp := rH + rSegmentation + rBbs := make([]byte, 1024)// 读请求n, _ := c.Read(bs)fmt.Println(string(bs[:n]))// 响应c.Write([]byte(resp))}GET⽅法通过url传递数据如下server接收到的http请求GET⽅法通过body传递数据如下server接收到的请求POST⽅法通过url传递数据server接收到的请求POST⽅法通过body传递数据server接收到的请求上述四种测试case均成功,所以“GET参数通过URL传递,POST放在Request body中”和“GET请求在URL中传送的参数是有长度限制的,⽽POST么有”是错误的。
第1篇一、PHP基础知识1. 请简述PHP的起源和发展历程。
PHP最初是由Rasmus Lerdorf在1994年开发的一个简单的CGI脚本语言,后来逐渐发展成为一个功能强大的服务器端脚本语言。
PHP 4.0版本发布于2000年,引入了面向对象编程的特性。
PHP 5.0版本发布于2004年,进一步增强了面向对象编程和类型系统。
目前,PHP已经发展到了PHP 8.0版本。
2. PHP有哪些常见的运行环境?PHP的运行环境主要包括以下几种:- Apache:开源的Web服务器软件,与PHP配合使用非常广泛。
- Nginx:高性能的Web服务器软件,与PHP也有良好的兼容性。
- IIS:微软公司开发的Web服务器软件,支持PHP的运行。
3. 请解释一下PHP中的超全局变量。
PHP中的超全局变量是指在所有PHP脚本和函数中都可以访问的变量,以下是一些常见的超全局变量:- $_GET:用于获取通过GET方法传递的参数。
- $_POST:用于获取通过POST方法传递的参数。
- $_SESSION:用于存储会话数据。
- $_COOKIE:用于获取通过Cookie传递的数据。
- $_SERVER:包含服务器信息。
- $_REQUEST:包含$_GET和$_POST的内容。
4. 请解释一下PHP中的数据类型。
PHP支持以下几种数据类型:- 整数(int)- 浮点数(float)- 字符串(string)- 布尔值(bool)- 数组(array)- 对象(object)- NULL- 资源(resource)5. 请解释一下PHP中的面向对象编程。
面向对象编程(OOP)是一种编程范式,它将数据(属性)和行为(方法)封装在一起,形成对象。
PHP中的面向对象编程包括以下概念:- 类(Class):定义了对象的属性和方法。
- 对象(Object):类的实例,具有类的属性和方法。
- 继承(Inheritance):一个类可以继承另一个类的属性和方法。
PHP 学习笔记PHP 是一种被广泛使用的开源脚本语言;declare(encoding='UTF-8');//定义编码方式运行 PHP 工程(wampServer) : 1、 需要对应的 web 服务器 2、 安装 PHP 3、 安装数据库 Php 脚本可放置于文档中的任何位置; Php 脚本以<?php 开头,以 ?>结尾; 在 PHP 中,所有用户定义的函数、类和关键词(例如 if、else、echo 等等)都对大 小写不敏感。
但是所有定义的变量都对大小写敏感。
变量: 变量的声明用$标识符$str=”007”;,而且之后在使用变量的时候,标识符$不 能丢掉,因为已经成为一个整体了。
函数之外声明的变量拥有 Global (全局) 作用域,只能在函数以外进行访问。
函数内部声明的变量拥有 Local(局部) 作用域,能在函数以内进行访问。
但是如果想在函数内访问全局变量,那么就得在函数内变量前引用 global 关 键词,例如: $x=1;$y=2 function text(){ global $x,$y; $y=$x+$y; } 或者: function text(){ $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];//关联数组模式 } 因为在名为 $GLOBALS[index] 的数组中存储了所有的全局变量, 所以可以这样引 用。
常量: 常量的值在脚本中不能改变,而且在整个脚本中都能使用,常量名不用$修 饰符,常量的定义(定义时用双引号“”括起来):define(string constant_name, mixed value, case_sensitive = true)常量名 PHP 中 const 的使用以及与 define 的区别常量值是否大小写敏感1、 const 用于类成员变量定义, 一旦定义且不能改变其值。
PHP的意思 PHP是一个基于服务端来创建动态网站的脚本语言,您可以用PHP和HTML生成网站主页
什么是面向对象主要特征是什么 面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰。主要特征:封装、继承、多态。 SESSION 与 COOKIE的区别是什么,请从协议,产生的原因与作用说明 1、http无状态协议,不能区分用户是否是从同一个网站上来的,同一个用户请求不同的页面不能看做是同一个用户。 2、SESSION存储在服务器端,COOKIE保存在客户端。Session比较安全,cookie用某些手段可以修改,不安全。Session依赖于cookie进行传递。 禁用cookie后,session不能正常使用。Session的缺点:保存在服务器端,每次读取都从服务器进行读取,对服务器有资源消耗。Session保存在服务器端的文件或数据库中,默认保存在文件中,文件路径由php配置文件的指定。Session文件是公有的。 不使用cookie向客户端发送一个cookie. 理解:session_start()开启时,生成一个常量 SID,当COOKIE开启时,这个常量为空,当COOKIE关闭时,这个常量中存储了PHPSESSID的值。通过在URL后加一个SID参数来传递SESSIONID的值,从而使客户端页面可以使用SESSION里面的值。 当客户端开启COOKIE和服务器端开启SESSION时。 浏览器第一次请求,服务器会向浏览器端发送一个COOKIE里面存储SESSIONID. 当浏览器第二次请求时,会把已存在的COOKIE一起提交到服务器端。 简述Cookie的设置及获取过程 设置COOKIE的值: Setcookie(名称,值,保存时间,有效域); 获取值:$_COOKIE['名称']; HTTP 状态中302、403、 500、200、404、502代码含义 一二三四五原则: 一. 消息系列 二. 成功系列 三. 重定向系列 四. 请求错误系列 五. 服务器端错误系列 302:临时转移成功,请求的内容已转移到新位置 403:禁止访问 500:服务器内部错误 401代表未授权。 200是请求成功,404是文件未找到,502是服务器内部错误。
php发送get、post请求的6种⽅法简明总结⽅法1: ⽤file_get_contents 以get⽅式获取内容:<?php$url='https:///';$html = file_get_contents($url);echo $html;>⽅法2: ⽤fopen打开url, 以get⽅式获取内容:<?php$fp = fopen($url, ‘r');stream_get_meta_data($fp);while(!feof($fp)) {$result .= fgets($fp, 1024);}echo “url body: $result”;fclose($fp);>⽅法3:⽤file_get_contents函数,以post⽅式获取url<?php$data = array (‘foo' => ‘bar');$data = http_build_query($data);$opts = array (‘http' => array (‘method' => ‘POST',‘header'=> “Content-type: application/x-www-form-urlencodedrn” .“Content-Length: ” . strlen($data) . “rn”,‘content' => $data));$context = stream_context_create($opts);$html = file_get_contents(‘http://localhost/e/admin/test.html', false, $context);echo $html;>⽅法4:⽤fsockopen函数打开url,以get⽅式获取完整的数据,包括header和body,fsockopen需要 PHP.ini 中allow_url_fopen 选项开启<?phpfunction get_url ($url,$cookie=false){$url = parse_url($url);$query = $url[path].”?”.$url[query];echo “Query:”.$query;$fp = fsockopen( $url[host], $url[port]?$url[port]:80 , $errno, $errstr, 30);if (!$fp) {return false;} else {$request = “GET $query HTTP/1.1rn”;$request .= “Host: $url[host]rn”;$request .= “Connection: Closern”;if($cookie) $request.=”Cookie: $cookien”;$request.=”rn”;fwrite($fp,$request);while(!@feof($fp)) {$result .= @fgets($fp, 1024);}fclose($fp);return $result;}}//获取url的html部分,去掉headerfunction GetUrlHTML($url,$cookie=false){$rowdata = get_url($url,$cookie);if($rowdata){$body= stristr($rowdata,”rnrn”);$body=substr($body,4,strlen($body));return $body;}return false;}>⽅法5:⽤fsockopen函数打开url,以POST⽅式获取完整的数据,包括header和body <?phpfunction HTTP_Post($URL,$data,$cookie, $referrer=”"){// parsing the given URL$URL_Info=parse_url($URL);// Building referrerif($referrer==”") // if not given use this script as referrer$referrer=”111″;// making string from $dataforeach($data as $key=>$value)$values[]=”$key=”.urlencode($value);$data_string=implode(“&”,$values);// Find out which port is needed – if not given use standard (=80)if(!isset($URL_Info["port"]))$URL_Info["port"]=80;// building POST-request:$request.=”POST “.$URL_Info["path"].” HTTP/1.1n”;$request.=”Host: “.$URL_Info["host"].”n”;$request.=”Referer: $referern”;$request.=”Content-type: application/x-www-form-urlencodedn”;$request.=”Content-length: “.strlen($data_string).”n”;$request.=”Connection: closen”;$request.=”Cookie: $cookien”;$request.=”n”;$request.=$data_string.”n”;$fp = fsockopen($URL_Info["host"],$URL_Info["port"]);fputs($fp, $request);while(!feof($fp)) {$result .= fgets($fp, 1024);}fclose($fp);return $result;}>⽅法6:使⽤curl库,使⽤curl库之前,可能需要查看⼀下php.ini是否已经打开了curl扩展<?php$ch = curl_init();$timeout = 5;curl_setopt ($ch, CURLOPT_URL, ‘https:///');curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);$file_contents = curl_exec($ch);curl_close($ch);echo $file_contents;>。
GET和POST的区别 HTTP:GET 、POST 对比项 GET POST 能否被缓存 能 不能 能否被收藏为书签 能 不能 参数是否会保留在浏览器历史中 能 不能 数据在URL中的可见性 可见 不可见 对数据长度的限制 限制(当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的,最大长度是 2048 个字符) 不限制
安全性 不安全(因为发送的数据在URL中) 安全(参数不会保留在浏览器历史或web服务器日志中) 对数据类型的限制 只允许ASCII字符 没有限制(还可以二进制数据) 编码类型 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。 后退按钮/刷新 无害 数据会被重新提交(浏览器应该告知用户数据会被重新提交)。 AJAX中的get和post $.get() $.get() 方法通过 HTTP GET 请求从服务器上请求数据。 语法:$.get(URL,callback); 例如: $.get(“qynode.com”,function(data,status){}); // data为获取的数据,status是请求状态,如果为success则表示请求成功
$.post()
$.post() 方法通过 HTTP POST 请求从服务器上请求数据。 语法:$.post(URL,data,callback); // data发送数据,callback请求成功后所执行的函数名,两者都是可选 例如: $.post("http://www.qynode.com",{name:"annie",pwd:"123"},function(data,status){ alert("Data: " + data + "\nStatus: " + status); }); $.ajax() $.ajax({ url:"http://test.domain.com/do?par1=1&par2=2", type:'GET', dataType:'JSONP', //ajax跨域处理,提示禁止跨域的时候,可以设置dataType为JSONP格式即可 success: function(data){ } });
PHP中有$_REQUEST与$_POST、$_GET用于接受表单数据。
一、$_REQUEST与$_POST、$_GET的区别和特点
$_REQUEST[]具用$_POST[] $_GET[]的功能,但是$_REQUEST[]比较慢。
通过POST和GET 方法提交的所有数据都可以通过$_REQUEST数组获得。
二、$_POST、$_GET的区别和特点
1.GET是从服务器上获取数据,POST是向服务器传送数据。
2. GET是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。
POST是通过HTTP POST机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。
用户看不到这个过程。
3. 对于GET方式提交表单数据,服务器端用$_GET[‘name’]获取变量的值,对于POST方式提交表单数据,服务器端用$_POST[‘name’]获取提交的数据,当然,两者都可以通过$_REQUEST[‘name’]获得表单数据。
对于REQUEST方式提交表单数据,服务器端用$_REQUEST[‘name’]获取变量的值,但这种方式很少用。
4.GET传送的数据量较小,不能大于2KB。
POST传送的数据量较大,一般被默认为不受限制。
但理论上,一般认为不能超过100KB。
5.GET安全性非常低,POST安全性较高。
6. GET表单值可以通过_GET获取;但通过action的url设置的参数总是获取不到的,<form method="get" action="a.asp?b=b">跟<form method="get"action="a.asp">是一样的,也就是说,在这种情况下,GET方式会忽略action页面后边带的参数列表。
POST表单值可以通过_POST 获取;但通过action的url参数设置的参数则可以不能通过_POST获取到。
action=test.php?id=1这种就是GET方式传值,可以用$_REQUEST和$_GET接受传值,但不能用POST方式获取到值,即使表单是POST方式提交。
所在,在提交表单时,如果action 中同时有参数,最好只能通过POST表单方式,对于表单内数据,直接通过POST获取,对于action中参数,童工GET获取。
在做数据查询时,建议用GET方式,而在做数据添加、修改或删除时,建议用POST方式。
request是先读取get再读post 的,同时存在,即覆盖掉前面的变量。
经典实例:
<?php
echo "get\n";
print_r($_GET);
echo "post\n";
print_r($_POST);
echo "request\n";
print_r($_REQUEST);
?>
<form method=post action='?a=1&b=2'>
<input type=text name=a value='a'>
<input type=text name=b value='b'>
<input type=submit value=test>
</form>
输出结果:
get:
Array
(
[a] => 1
[b] => 2
)
post:
Array
(
[a] => a
[b] => b
)
request:
Array
(
[a] => a
[b] => b
)
其实,在php配置文件php.ini中有一个设置项:variables_order = "GPCS" ,GPCS分别是GET,POST,Cookie,Server的首字母缩写,variables_order = "GPCS"含义是php文件中变量的解析顺序是GET,POST,Cookie和Server。