复习本 03 PHP中post和get的区别

说白了,GET和POST是HTTP协议中两种常用的请求方法,它们的区别主要体现在数据的传输方式和安全性上。
其实很简单,GET方法主要用于从服务器获取数据,就像你在网页上点击链接或输入URL时,浏览器会发送GET请求,数据直接拼接到URL后面。
去年我们跑的那个项目,大概3 000量级的数据,通过GET请求轻松获取。

我一开始也以为GET和POST的区别只在于数据的展示方式,后来发现不对。
实际上,GET请求的数据量有限制,通常不能超过2 KB,而POST则没有这个限制,因为它将数据封装在请求体中,不会影响URL长度。
还有个细节挺关键的,GET请求的数据是可见的,因为它们直接暴露在URL中;而POST请求的数据则隐藏在请求体中,用户看不到。

区别还有很多,比如GET请求不安全,因为数据可能会在浏览器历史记录中暴露;而POST请求则相对安全,适合传输敏感信息。
在做数据查询时,建议用GET方式,因为它的执行效率高;而在进行数据添加、修改或删除时,建议用POST方式,因为它更安全。
等等,还有个事,GET请求的数据可以通过URL直接访问,而POST请求的数据则不可以。

总之,GET和POST各有优势,选择哪种方式取决于具体的需求和场景。
我觉得值得试试,根据不同的需求灵活运用这两种方法。

在php中有哪些常用的超全局变量

说实话,超全局这玩意儿用多了真挺方便的,但刚开始接触的时候确实容易懵。
我第一次用$_GET的时候,写了个简单的登录表单,结果发现直接把用户名跟密码都丢在URL里了,当时后背就冒凉气——这要是被别人看到?幸好只是测试环境。

有意思的是$_POST,这个我经常在表单提交里用。
记得有次做项目,客户非要表单数据在地址栏显示,我硬着头皮把$_GET用上了,结果用户反馈说每次点回车都要刷新才能看到表单内容。
这块我当时也没想明白,后来查资料才知道GET不适合大文件传输,但这个教训挺深刻的。

$_REQUEST这东西挺像"万能钥匙",但用的时候得特别小心。
有次我把一个GET参数也扔进表单里了,结果发现优先级是POST>GET,直接被POST覆盖了。
当时调试了好久,就因为没注意这层优先级——这提醒我,能用POST的尽量别混用。

$_SERVER这块信息量太大了,我经常拿它做debug。
比如有一次请求头信息乱码,直接看$_SERVER['REQUEST_URI']就定位到问题,比去查配置文件省事多了。
不过数据记得要自己解析,PHP原样输出的时候可能看不太懂,比如'HTTP_ACCEPT_ENCODING'这种长字符串。

$_FILES是处理上传文件的重灾区,但也是个好帮手。
我之前写上传功能,把文件名直接用$_FILES['file']['name']拿过来用,结果发现用户可以重命名文件后缀来上传恶意代码。
后来改用getimagesize()验证,才觉得安全点。
数据结构挺固定的,但临时路径这东西千万不能直接用,得用move_uploaded_file()移动。

$_COOKIE这东西最考验耐心了。
有次做购物车,发现cookie有效期设置太短,用户刷新页面就清空了。
我试过setcookie('cart', $cart, time() + 8 6 4 003 0),但忘了加path=/,结果只能在当前目录访问——这种细节问题真的得逐行debug。

$_SESSION是我觉得最神的地方。
之前做会员系统,把用户ID存session里,结果发现多线程环境下会出并发问题。
后来改用Redis做session,直接把session_id存到cookie,服务器那边用Redis获取,整个性能跟内存里跑似的。
不过得注意session_start()的位置,我早期总在函数里写,导致外部调用时出过bug。

这些变量确实方便,但用多了容易形成依赖。
我最近重构一个老项目,发现到处都是直接用$_GET['page'],最后统一做了路由处理,代码清爽多了。
说到底,超全局是工具,不是万能药,得知道什么时候该用,什么时候该换种思路。