isset 判断 POST 没啥意义啊,但网上好多代码都是这么写的
1
mrpzx001 2022-10-28 16:47:31 +08:00
这不是常识?
|
2
yuzo555 2022-10-28 16:48:09 +08:00 1
正常不是该用 $_SERVER['REQUEST_METHOD'] 判断?
|
3
fairless 2022-10-28 16:54:07 +08:00
一般判断某个字段是否存在采用 issset($_POST['xxxx']),而且现在大部分都是从框架 request 对象获取表单了
|
4
qqjt 2022-10-28 16:55:59 +08:00
上框架吧,laravel 走起,少去踩老坑了,没意义
|
5
frank553000 2022-10-28 16:58:55 +08:00
请问用框架做的各位,
假如做一般的企业网站(有产品,产品筛选等,或者以后加支付等)这类功能的。 后台功能都要自己写吗?还是拿开源的改一下? |
6
fiypig 2022-10-28 17:01:21 +08:00
我还是习惯!empty()解决一切烦恼
|
7
00ing 2022-10-28 17:07:15 +08:00
php 基础有待提高
|
8
minbaby 2022-10-28 17:17:56 +08:00
如果不在 fpm 里执行 php 代码, $_POST 就不一定存在
|
9
yuanchao 2022-10-28 17:25:00 +08:00
isset 和 empty 是两回事呀
|
10
liaohongxing 2022-10-28 17:38:43 +08:00
$_POST 超级变量永远是一个 array, 表单有值自动填充到这个 array ,没值是一个空 array , 空 array 满足 isset 的情况。
|
11
hahasong 2022-10-28 17:49:58 +08:00
上手 PHP 要求这么低吗 这种问题文档里难道没有
|
12
liaohongxing 2022-10-28 17:56:04 +08:00
@hahasong
文档有说明 : https://www.php.net/manual/zh/function.isset.php 判断一个变量是否已设置, 即变量已被声明,且其值不为 null 。 https://www.php.net/manual/zh/function.empty 判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于 false ,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。 就楼主太菜。 |
13
qinrui OP @liaohongxing 即使不往页面 post 数据,isset ($_post [])仍然是真
|
14
totoro52 2022-10-28 19:42:54 +08:00
这哪里是坑,是你没去文档和好好了解 PHP 的底层,很多程序都是直接取$_POST ,那如果没有默认定义为 array ,那到时得一堆报错,坑更多
|
15
wonderfulcxm 2022-10-28 19:47:10 +08:00 via iPhone
…我竟无言以对,明明是你基础有问题
|
16
iwh718 2022-10-28 19:56:19 +08:00 via Android
这就离谱。。。这正常吧。
|
17
xinshoushanglu 2022-10-28 20:19:23 +08:00
你是第一天用 php 吗?
|
18
liaohongxing 2022-10-28 20:45:41 +08:00
@qinrui
isset 在其他语言就是判断内存有无分配。 空 array 就是内存已分配,但是分配了一个空的 hashmap, 里面没数据而已。 isset 判断一个空 array 就是 true 。而$_POST 就是一个特殊的空 array , 永远已分配 。判断这个肯定总是 true |
19
jfcherng 2022-10-28 20:52:59 +08:00
Truth table 來了 https://www.php.net/manual/en/types.comparisons.php
|
20
mht 2022-10-28 21:40:51 +08:00
我也不认为这个是坑。。。isset 表面意思就是这个变量是否设置了,empty 是判断变量是不是 PHP 的意义上的空。。。
|
21
eviladan0s 2022-10-29 13:54:39 +08:00
isset($_POST['test'])这种才行,超全局遍历肯定是一直存在的
|
22
jhdxr 2022-10-30 18:03:02 +08:00
@qinrui
https://www.php.net/manual/en/reserved.variables.post.php > This is a 'superglobal', or automatic global, variable. This simply means that it is available in all scopes throughout a script. https://www.w3schools.com/php/php_superglobals_post.asp > Super global variables are built-in variables that are always available in all scopes. 不知道你觉得『不往页面 post 数据』$_POST 就不存在的想法是哪来的(还是说你不知道 isset 判断的不是是否为空而是变量是否存在)? |
23
NewYear 2022-10-31 10:16:27 +08:00
面向复制编程,也应该做一些测试的。
很多分享的代码,都是错代码,而且错得让人不明所以…… |
24
NewYear 2022-10-31 10:18:30 +08:00
我甚至遇到过,代码都是对的,但是有一句语句放错了位置,调整好位置就可以用了……
|
25
pytth 2022-11-23 00:14:01 +08:00 via iPhone
empty($_POST["xxx"]) || isset($_POST["xxx"])
我喜欢双重判断,总有一个中招 |